Imagine a road network such as the one illustrated here. This system becomes more complex as new roads are built. In order to be useful for users, the system requires maps (i.e. models). Otherwise, its value decreases since users are not able to know how to reach their destinations from their source points (unless they have indeterminate time to experiment without taking care about efficiency).
The same happens in information systems. Any activity aimed at adding value by improving the system’s quality (testing, maintenance, evolution, process reengineering, etc.) requires knowing the functional requirements of the system. This is the reason why structured thinking and analysis are key skills in software engineering. In contexts in which there is no documentation on such requirements or it is not available, structured thinking is even more critical, especially when reverse engineering needs to be performed. [Read more...]