CHAPTER 6 – SOLVING REALLY BIG PROBLEMS

--Originally published at Newbie Programmer

To solve big problems its not that difficult, because is the same way as the small problems, everything we learned is very helpful, the trick is that we need to look at the big problem and divide this in individual problems that are easier to do (divide and conquer), and we can use the things learned from writing good software.

We already know how to encapsulate to make the application flexible and easier for the changes, the use of requirements that is what my system is supposed to do, then is easy to combine the solution for the individual problems, and the analysis give us a context of what we need to do to supply the real world problems of each part of the big problem.

That’s a summary of what we learned, but now we need to solve the big problem, a good starting point is to make the requirements and the implementation of use cases, we can figure out what the system is suppose to do, and to add to the list the things to do, but we need more information, and how we can have more information about the problem.

To have more information is important to know how the system is like and not like, to help us to know what we need to worry about, to find out more information its important to talk to our customers, and we figure out we need features.

The features are a high-level description of the things that the system needs to do, from one feature you need to create requirements to satisfy this feature, this help you to know a great way to start in big projects.

The use cases and features are good explaining the problem, but we need a big picture view, because a picture is a thousand words, the we can use case diagrams that represent what a system does without entering into details like use cases, its helpful to make blueprints (design patterns) of the big problem, and to focus on the fundamental things that the system must do.

We described the problem, we already have the requirements, list of features, and a big image of the problem, but is important to make a domain analysis, that helps us to describe a problem with words that the customer understand what are we building, and this type of analysis help to avoid parts of the program that is not our responsibility to build, because in a big project there are many people for different kinds of domains.

In this chapter we learned how to handle big problems, and we have seen that its not that difficult that sounds if we apply the things that we know, and its interesting how the basic concepts of object oriented are very helpful for this kind of problems.