What characteristics of software development do cause coordination problems?
1.) Scale
Software systems are usually extremely large and requires a high level of coordination. This level of coordination is very difficult to obtain in large companies and project teams. Projects of this scale usually leads to specialization groups and a division of the team according to geographic, organizational and social boundaries. These barriers and specialized groups reduces the willingless for interoperability of the team and limits the level of experience each member gains.
2.) Uncertainty
Uncertainty is also a large factor and also increase the problems generated due to the large scale. Since most software systems are unique with none or few previous implementations and applications in the specific field it leads to uncertainty. Furthermore, the functionality requirements of a software system often change during the development phase as the users realize what the software is capable of. Specifications are also usually unclear or incomplete due to limited availability of specific domain knowledge. Sometimes it is necessary for developers and achitects to make discission without having all the information readily available due to low levels of coordination. Lastly, software uncertainty is also caused since different subgroups involved in its development often have different views on what the software should be capable of.
3.) Interdependence
Software systems requires precise integration of the different components and modules. Unexpected problems may occur due to unanticipated interaction between the software modules and can have disastrous consequences.
4.) Informal communication
Several tools have been developed over the last couple of years to improve the productivity of the individual programmer, however these tools does not specifically address coordination problems. Informal coordination such as personal, peer-oriented and interactive communication may be necessary to face problems associated with uncertainty. However, as mentioned above a large cause for uncertainty is the scale of software systems. This large scale makes it difficult for informal communication to occur. Furthermore, in the situations in which it can occur, speach which is the primary medium for this type of communication, may be too imprecise to describe the tight coupling necessary between different software modules.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment