Saturday, February 7, 2009

Software process models

Software process models - they are abstractions, not definitive descriptions of software processes; kind of a framework.. these are the following: click


WATERFALL MODEL:

STAGES:

  • Requirements analysis and definition - by consultation with users; system specification
  • System and software design - establish overall system architecture
  • Implementation and unit testing - software design is realized as a set of program units; verify that each unit meets its specification
  • Integration and system testing - units are integrated and tested as a complete system if they meet the requirements
  • Operation and maintenance - usually the longest phase; system is in practical use; correcting errors; enhancing services as new requirements are discovered
* documentation is produces at each phase
* phases may overlap

-> it is easy to understand, that's why 60% companies use it
-> hard to change anything once it is underway
-> that's why we have to be 100% sure we understand the requirements, and that they don't change
-> used for large systems, while developed at many sites (it's easier to control them)
-> waterfall model gives control over the communication



EVOLUTIONARY DEVELOPMENT:

- work with customer to evolve a final system from an initial outline specification; two types:
a) Exploratory development - we should start with clearly specified requirements and add new features proposed by the customer;
b)
Throw-away prototyping - start with poorly understood user requirements, experiment with the customer requirements to understand them

STAGES:
  • Outline description
  • concurrently: Specification, Development and Validation
* we get initial version, then many intermediate versions, and in the end the final version

-> lack of process visibility (we don't know where we are)
-> systems are poorly structured
-> may require special skills (e.g. in languages for rapid prototyping)
-> for small or medium size interactive systems or parts of large systems (e.g. user inteface)
-> for short-lifetime systems



COMPONENT-BASED SOFTWARE ENGINEERING (CBSE)

- software reuse;

STAGES:

  • Requirements specification
  • Component analysis - search for appropriate components
  • Requirements modification - modify to reflect the available components; or go to previous step;p
  • System design with reuse - design framework for the software
  • Development and integration - integrate components, develop what is needed..
  • System validation
-> reduces the amount of software to be developed
-> reduces costs and risks
-> faster delivery
-> it may not meet the real needs of the users
-> no full control over the system evolution

COTS - is a term for software or hardware, generally technology or computer products, that are ready-made and available for sale, lease, or license to the general public.