Methodologies are one of four major factors that need to be taken into consideration in the field of software engineering (Nance, slide 40, Session 1). Methodologies are an organized, documented set of rules and practices that provide a framework to guide a software project from concept, requirements collection, and design, through implementation maintenance and retirement of the product. Rico (n.d.) describes five major periods covering 50 years of computer history (mainframe, midrange, micro, internet and personal) and identifies 32 of the foremost methodologies that emerged within each time period. His work shows that essentially, methodologies evolved as a reaction to a) failures or inadequacies of earlier methods, b) opportunities arising from the revolution in technology or c) changes in business perspectives including information-age economics. Conventional methodologies, such as Structured and Object Oriented (OO) methodologies are also known as heavyweight methodologies because they typically include numerous rules, and documents, require a lot of time to develop and bureaucratic in nature (Fowler, 2003; Cockburn n.d.). However, even with the structured nature of these methodologies, the majority of software projects developed has not produced software products that are within budget; meet their performance goals; or success criteria (Nance, slide 15, Session 1). Other names for heavy weight methodologies include plan-driven, rigorous, predictive and "thick". In contrast, lightweight methodologies have few rules and practices; strive for a compromise between no process and unwarranted process, favor working code over excessive document and collaboration over contract negotiation (Constantine, 2002; "Agile Manifesto" 2001). Light weight methodologies go by names such as agile, adaptive and "thin". These light weight or agile methods are characterized by small releases, collaborative communications between developers and customers, simplicity and their ability to react quickly to changing requirements (Abrahamsson, 2003; "Agile Manifesto" 2001). Figure 1, Evolutionary map of agile methods, depicts the evolution of agile methods in time. . Figure 1. Evolutionary map of agile methods. Source: Abrahamsson (2003), figure 1 page 246.
Selecting a methodology
Deciding what software development methodology to implement depends on many factors such as project priorities and project types. Project priorities would include factors such as scheduling, quality and...