To solve real world’s complex business problems, a software solution architect or a team of architects should incorporate special software development strategy.
This strategy must encompass business processes management, business trends, technology benefits, requirement/ solution analysis techniques, solution architecture, development methods, development tools, communication approaches and best industry practices.
This strategy also includes the constraint analysis like frequent deliverables, changing business environments, security challenges and cost and/or timelines limitations. This collective strategy is referred as a Software Process Model.
A software process model is chosen based on the nature of project and business application, methods, tools to be used, controls and deliverables that required. Choosing a development methodology appropriate for a project is generally the desired outcome of the e-Zest’s Software Process Model Selection Process.
In following section, a variety of Software Development Models for software engineering are listed. Each represents an attempt to bring order to an inherently chaotic activity of software development.
- Linear Sequential Model (old fashioned but reasonable approach when requirements are well understood)
- Rapid Application and Development (RAD) Model (makes heavy use of reusable software components with an extremely short development cycle, it is highly RAD tool dependent software development)
- Prototyping Model (Good first step when customer has a legitimate need, but is clueless about the details, developer needs to resist pressure to extend a rough prototype into a production product)
- Incremental Model (delivers software in small but usable pieces, each piece builds on pieces already delivered)
- Rational Unified Process (RUP ) Model (an architecture-centric iterative development approach for software development having every task associated with four phases: Inception, Elaboration, Construction, and Transition
- Win-Win Spiral Model (eliciting software requirements defined through negotiation between customer and developer, where each party attempts to balance technical and business constraints)
- Test Driven Development (TDD) Model (This is the agile software development methodology based on the philosophy of test first, then program. Its an evolutionary approach to development where we first write a test that fails before writing a new functional code)
- Agile Software Development Models (Agile software engineering represents a reasonable compromise between to conventional software engineering process models for certain classes of software and certain types of software projects. Agile development stresses continuous communication and collaboration among developers and customers. )
Attributes for comparing Process Models, while selecting appropriate process model:
- Overall flow and level of interdependencies among tasks
- Degree to which work tasks are defined within each framework activity
- Degree to which work products are identified and required
- Manner in which quality assurance activities are applied
- Manner in which project tracking and control activities are applied
- Overall degree of detail and rigor of process description
- Degree to which stakeholders are involved in the project
- Level of autonomy given to project team
- Degree to which team organization and roles are prescribed
