Friday, July 17, 2009

Software Process

Software processes are adapted to meet the needs of software engineers and managers as the undertake the development of a software product. Software process provides a framework for managing activities that can very easily get out of control.

Process Model

1. Prescriptive Models are originally proposed to bring order to the chaos of software development. Why called Prescriptive? Because prescribe a set of process elements such as activities, actions, tasks, etc.


a. The Waterfall Model

Old fashioned but reasonable approach when requirements are well understood.

The waterfall model problem are :

- Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.

- The waterfall model only appropriate when the requirements are well-understood and changes will be fairly limited during the design process.

- The waterfall model is mostly used for large systems engineering projects where a system is developed a several sites.


b. Incremental Models

Delivers software in small but usable pieces, each piece builds on pieces already delivered.


c. Rapid Application and Development (RAD) Model

Makes heavy use of reusable software components with an extremely short development cycle


d. Evolutionary Process Models

- 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.



- Spiral Model

Couples iterative nature of prototyping with the controlled and systematic aspects of the linear sequential mode.


- Concurrent Development Model

Similar to spiral model often used in development of client/server applications.



2. Specialized Process Models

- Component Based Development

Spiral model variation in which applications are built from prepackaged software components called classes.

- Formal Methods Model

Rigorous mathematical notation used to specify, design, and verify computer-based systems.

- Aspect-Oriented Programming

Provides a process for defining, specifying, designing, and constructing software aspects like user interfaces, security, and memory management that impact many parts of the system being developed.

3. The Unified Process

- Use-case driven, architecture centric, iterative, and incremental software process

- Phases :

a. Inception phase : Customer communication and planning (Vision document, prototypes, business model, etc)

b. Elaboration phase : Communication and modeling (use-case model, analysis model, functional and non-functional requirements)

c. Construction phase (design model, test plan, test cases, software components, etc)

d. Transition phase : Customer delivery and feedback (delivery software increament, user feedback, beta test reports)

e. Production phase : Software monitoring and support

No comments:

Post a Comment