3

The words "design" and "implementation" have been used widely. But I am not sure that I understand them.

  1. What do design and implementation of a computer-related system (e.g. a computer system, an OS, a programming language, a DBMS, a software program) mean?
  2. Think "design of a system" as a process, is its input the requirements of the users of the system, and is its output the user interface?

    Think "implementation of a system" as a process, is its input a design of the system, and is its output the system?

  3. What are common in the design for a computer system, an OS, a programming language, and a DBMS?

    What are common in the implementation for a computer system, an OS, a programming language, and a DBMS?

Thanks!

  • 3
    'design' is the recipe, 'implementation' is the cake – Dan Pichelman Mar 5 '15 at 2:41
  • 7
    The difference between "design" and "implementation" is the same as the difference between "plotting" and "murder". – user22815 Mar 5 '15 at 2:45
  • @Dan: do user interface and internal structure both need to be designed and implemented? Or is design mostly for user interface.Is implementation most about internal structure? – Tim Mar 5 '15 at 3:03
  • @Snowman - your analogy is much better than mine – Dan Pichelman Mar 5 '15 at 3:25
4

I wouldn't get too hung up on the terminology. Google has some good definitions:

Design: (search for 'definition of design')

noun:

a plan or drawing produced to show the look and function or workings of a building, garment, or other object before it is built or made.

verb:

decide upon the look and functioning of (a building, garment, or other object), typically by making a detailed drawing of it.

Actual drawings sometimes exist (think flowcharts), but most designs I'm familiar with are typically written descriptions.

Implementation:

the process of putting a decision or plan into effect; execution.

As for your specific questions:

  1. They mean pretty much what the dictionary says they mean. "Designing a thing" means figuring out how it's going to work, possibly what it looks like, etc. "The design" is the output of the process of "Designing a thing". "Implementing a design" means actually doing the work to convert the idea (the design) into something real.
  2. Short answer, "yes". I would substitute "designing a system" for "design of a system" and "implementing a system" for "implementation of a system", but you have the right idea.
  3. If you asked this question by itself, it would be closed as 'too broad' within minutes. The process of designing anything will have common steps including collecting requirements, identifying possible solutions, analyzing those solutions, etc. Likewise, the process of implementing anything will also have certain steps in common including the actual construction, verification that the construction is correct, etc.
3

In the context you are making this questions, 'design' is the process that is followed in the beginning of a project, where the requirements are defined, the technologies that will be used, the resources that are needed and the organization of the component that will be constructed. The 'implementation' is the next stage, when all the info from the 'design' step is used to begin constructing the component.

However, especially in Web applications, the difference between design and implementation slightly changes. The 'implementation' refers to the functionality of the application and how each function is being executed "backstage". The 'design' refers to aesthetic decisions about the Web app (such as styling, fonts, images etc.)

2

The difference between "design" and "implementation" stem from a foolish idea people perpetuate that the approach to building software should be like building a bridge, where you "design" the bridge, then a bunch of construction workers "implement" it.

In reality, all software development is design.

2), Generally, kinda-sorta, yeah, that is what they are understood to be by the people who belong to the group above. Some people will consider requirements gathering to be part of design, others will not. The user interface is not necessarily the exclusive output of a design phase, even subscribing to the foolish concepts above. Many software platforms don't have UIs per-se, e.g. libraries.

3) The common elements of a "computer system" is that they use do math and move information around. That's really the only thing common. Not all projects use databases, not all have operating systems (e.g. embedded software), and some are programmed in assembly (which I would not lump in with programming languages considering the OPs understanding of the subject) as they are run on platforms that don't have C or other compilers available. Some computer systems even run on analog systems for very obscure and specialized purposes. Not all use microprocessors, as there are systems out there such as older elevator controllers, that are built out of relays but are very much a simple computer system.

  • 2
    "In reality, all software development is design.": Yes and no. For simple systems you design while coding because you can keep the relevant information in your mind all the time. For more complex ones, you need to separate the two phases otherwise you get lost in design while you are coding. Coding a complex piece of software without any previous high-level design is a good recipe for failure. – Giorgio Mar 5 '15 at 6:06
  • @whatsisname I agree with you, but I think there is an unstated assumption here along the lines of waterfall -> agile. Yes, we can design similar to engineers with a bridge and hand the spec off to construction workers (programmers). The modern way using an iterative approach merges the two ideas together temporally, meaning we design while we program. Of course, high level architecture is typically done separately. I.e., decide what framework to use, decide the high-level design, then do the implementation and low-level design together each iteration. – user22815 Mar 5 '15 at 11:55
  • According to that reasoning, Microsoft Office has been in the "design" stage since 1990. Also, do designs run? – Tulains Córdova Mar 5 '15 at 13:24
  • Also, every programmer is an architect (according to that reasoning). – Tulains Córdova Mar 5 '15 at 13:34
  • 1
    @Giorgio: some high level design is good, but the mistake is made when you think that is where it ends. Every line of code is a design decision. Having skilled programmers 'design' your software, then hand that off to unskilled programmers to 'implement' it, will be just as good a recipe for failure. – whatsisname Mar 5 '15 at 16:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.