Chapter 10 HFOOAD

--Originally published at Hackerman's house

I have finally finished this book about software analysis and design. The last chapter was like a big recapitulation of all the other chapters in the book, its purpose is to explain how everything is connected and part of the same process; a process that can be used over and over to develop great software.

First you have to figure out what the app is supposed to do, to get this part right it is necessary a lot of communication between the developers and the client. A good way of writing down these features is as a list, at this stage you must understand each of the features and make sure that you have all of the key features the client wants.

When you have all your features you can start working on the use cases. Use cases reflect how the system is used. It consists of many steps on how the action is done; it includes subjects and verbs as well.

Once you have all your use cases you can start working into smaller pieces of functionality. Modularity is really important in this step. Take your time defining how to break up the system. When you are breaking up the system you should consider that each thing has to have a single responsibility, make sure your classes use this principle in order to have a better design.

Gears

Photo by David Douša

When the big picture is defined, it’s time to dig deeper in specific parts of the system. Understand the part of the system you are working on and do use cases for that. The general understanding of the system lets you work on the specific parts of it.

Domain analysis consists in determining the operations and the classes that are going to be in the system. It is

Coding
about how the system is a solution to the problem, and how it is going to work to be a viable solution.

The next stage is the preliminary design where you should work in your class diagrams, this contains a lot of useful information for the implementation, each class has attributes, methods, and the diagram contains the inheritance and relations between the classes.

All the steps we have done until this point are going to let us do the code in no time. The class diagrams let you create the basic structure of the code, including the attributes and the methods of the class. The domain analysis facilitates the writing of the code inside each method, because we understand clearly what each of them does. In this case the code is written in java, but you can adequate to the language you want, take into consideration that each language has its strengths and weaknesses. After finishing the implementation of one specific part of the system you have to go back to the requirements and start working in the next part of the system.

Coding

Photo by adi_dahiya

The last part is the delivery of your final product. Make sure you are in constant communication with the client to make sure you are doing what they need, and not some weird stuff that you understand.