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