Software methodologies: Are our processes Crisis-Agile?
In this chapter, we discuss software development methodologies. These are adaptive process frameworks adjustable to software product size and scope. They usually include a set of methods, principles and techniques, and software development tools. Each of the methodologies can implement any of the lifecycle models. We discuss the difference between formal and agile methodologies. The formal methodologies include more artifacts; they have a rich set of complex processes, which include larger workflows and smaller activities. For each activity, every role assigned to it produces a deliverable. In crisis conditions, such as hardly formalizable problems, rapidly changing requirements and other uncertainties, agile methodologies, which are more adaptive and flexible in terms of artifacts, are applicable. The agile methodologies rely on self-disciplined and self-manageable teams, and consequently they are more constrained in terms of human-related factors. Similar to lifecycle models, there is no “silver bullet” in software development methodologies. Due to rigorous processes and more artifacts, formal methodologies are suitable for large-scale product development. Agile methodologies require special techniques and high level of discipline; otherwise, they can likely result in a low quality of software production.