quarta-feira, 29 de agosto de 2007

No silver bullet for software development

Software engineering is a bit different from other enginnerings. That is, software doens't have the same properties as other manufactured products, and conventional rules may be useless to this area of design. Brooks, in his text "No Silver Bullet", compares software design to a werewolf, and explains why there is no magical solution to development problem.

Following Aristotle, we can divide software development problems in two groups: Essencial problems and Accidental ones. The great monster appears we wen tend to focus on accidental problemas rather than solving the main issues.

Essencial problems are those wich belongs to the design process. They are inherently embedded in desing process. Four software main essencial issues are:

- Complexity: The management of an abstract entity like software is a problem itself. Unlike other manufactured products, software usually grows unlinearly, and the lack of effective models to describe it parts, makes it worse to take control of the whole project. Communication problems also produces great damages, since there is no concrete model and people have to understand the same of an invisible thing.

- Conformity: Einstein said that natural laws must be really simple, since God has projected them. For software engineering this is not valid. Softwares must be in conformity with lots of complex rules (frequently conflicting one), which makes is a big problem for the software engineering.

- Changeability: Software represents functions, that, always have to be changed or even improved. Even when everything works OK, people think about new functionality, that need to be added.

- Invisibility: This has much to do with the complexity problem. We need powerful tools and good geometric abstractions to represent all the software structure and behavior. Unlike an architect blueprints, software models generally don't follow an hierarchical order, and its many interactions makes the visualization and understanding difficult. Inivisibility one of the major problems in software development, but that has been minimized with a wide range of models and abstractions developed in the past years.

Trying to overcome these essencial problems will certainly grow your success chances, but, one more time, there is no miracle solution.

We'll talk later about some accidental problems, which are easier to face.

Nenhum comentário: