In software engineering and project management, a
is a codified set of practices (sometimesaccompanied by training materials, formal educational programs, worksheets, and diagramming tools) thatmay be
carried out to produce software.Software engineering methodologies span many disciplines, including project management, analysis,specification, design, coding, testing, and quality assurance. All of the methodologies guiding this field arecollations of all of these disciplines.
Methodology versus Method
There is a discussion in science in general about these two words: method and methodology. They are widelyused as synonyms, although many authors believe it to be important to draw a difference between the two.In Software Engineering, in particular, the discussion continues. One could argue that a (softwareengineering) method is a recipe, a series of steps, to build software, where a methodology is a codified set of recommended practices, sometimes accompanied by training materials, formal educational programs,worksheets, and diagramming tools. In this way, a (software engineering) method could be part of amethodology. Also, some authors believe that in a methodology there is an overall philosophical approach tothe problem.Using these definitions, Software Engineering is rich in methods, but has fewer methodologies. We could saythat there are two main stream types of methodologies: Structured Methodology (Information Engineering,SSADM and others), which encompass many methods and software processes; and Object OrientedMethodology (OOA/OOD and others) .
Major Software Engineering Models
A decades-long goal has been to find repeatable, predictable software engineering processes or methodologies that improve productivity and quality. Some try to systematize or formalize the seeminglyunruly task of writing software. Others apply project management techniques to writing software. Without project management, software projects can easily be delivered late or over budget. With large numbers of software projects not meeting their expectations in terms of functionality, cost, or delivery schedule, effective project management is proving difficult.1)
Iterative And Incremental Development
Iterative and Incremental development
is a software development process developed in response to theweaknesses of the more traditional waterfall model. The two most well known iterative developmentframeworks are the Rational Unified Process and the Dynamic Systems Development Method. Iterative andincremental development is also an essential part of Extreme Programming and all other agile softwaredevelopment frameworks.
The basic idea behind iterative enhancement is to develop a software system incrementally, allowing thedeveloper to take advantage of what was being learned during the development of earlier, incremental,deliverable versions of the system. Learning comes from both the development and use of the system, where possible. Key steps in the process were to start with a simple implementation of a subset of the software2