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