Large software is usually designed to solve 'wicked' problems.
Software engineering requires a great deal of coordination across disciplines.
-Almost infinite possibilities for design trade-offs across components.
-Mutual distrust and lack of understanding across engineering disciplines
Systems must be designed to last many years in a changing environment.
The process of efficiently and effectively developing requirements.
Tooling required to create the solutions, may change as quick as the clients mind.
User expectations.
- User expectations increase as the technology becomes more and more sophisticated.
The mythical man-month factor.
-Adding personnel to a project may not increase productivity.
-Adding personnel to a late project will just make it later.
Communications.
-Communications among the various constituencies is a difficult problem. Sometimes different constituencies speak completely different languages. For example, developers may not have the domain knowledge of clients and / or users. The larger the project, the more difficult the communications problems become.
Project characteristics.
-size / complexity
-novelty of the application
-response-time characteristics
-security requirements
-user interface requirements
-reliability / criticality requirements
0 comments:
Post a Comment