So far, we have spent much of our time working on the design and creation of classes, and you ve been given examples of how these classes can be created using diagrams and standard approaches. In this chapter, we are going to take a slight step back and talk about the overall design and analysis of a system, which in turn dictates the needs for such classes.
Although we will also be discussing classes and programming, it s important to point out that a fair amount of groundwork must be laid before the first line of code can actually be written. Even if you are not directly responsible for the design and analysis of a system, understanding and recognizing its workings will simply make you that much more valuable as a developer.
Consider the following architect paradigm: Architects are never told Hey, make me a building. Instead, a tremendous amount of research and analysis goes into the process of designing a building that will meet the requirements of the buyer. In the creation of a software application, we need to adopt this same mindset.
You most likely won t be building an application that you will be using on a daily basis. You re building it for other people, the end users of the system. Although a good analyst can make useful recommendations to the buyer of the application, their first job is to identify the needs of the end user .
Another interesting comparison between architects and programmers is the detail of their design before starting the actual construction. I m afraid that if most programmers were asked to create a building, they would build it, fill it with people, and then see if it fell down. Not a good approach. Architects, on the other hand, can tell you exactly how much weight any portion of any floor could withstand before it collapsed .
Of course, because an architect s creation holds people and is therefore responsible for human life, it demands a much higher degree of exactness than a program for which the end user can simply be told to try again and see if the problem reoccurs.
Then again, a programmer might be creating an application for a heart monitor or Emergency Response System. And even if the programmer is just creating a game, the company s success and livelihood may depend on the success of this application. Therefore, you should examine your own programming tendencies and see if you can raise the bar for your professional attention to detail, no matter how experienced you are. Before you write the first line of code, you should have a clear, concise , and well- understood plan for the code you are about to create.