Software Processes Flashcards
Structured activities to develop software
- Specification
- Design
- Validation
- Evolution
Waterfall Phases
- Requirements analysis and design
- System and software design
- Implementation and Unit testing
- System testing and Integration
- Operation and Maintenance
Waterfall disadvantage
Little flexibility for change after process is underway.
When is Waterfall used
When requirements are understood and changes are limited.
Evolutionary Model Parts:
- Exploratory Development: work with customers to evolve a final system from requirements.
- Throw away prototyping: understand system requirements, start with poorly understood requirements to clarify needs.
Problems of Evolutionary
- Lack of progress visibility
- Systems often poorly structured
- Special skills may be required
Evolutionary Model Applicability
- For small or medium size interactive systems
- For parts of large systems
- For short lifetime systems
Component Based
Based on systematic reuse (reuse components from existing solutions).
Component Based Process Stages:
- Component analysis
- Requirements Modification
- System design with reuse
- Development and Integration
Process Iteration/Incremental
System requirements will always evolve through course of a project. Incremental delivery focuses on delivering increments (partial functionality) prioritizing user requirements.
Advantages of Incremental Delivery
- Customer value can be derived with each increment.
- Early increments act as prototype to help elicit requirements.
- Lower risk of project failure
- Highest priority system services tend to receive most testing
Extreme Programming
Based on development and delivery of very small increments under functionality. Relies on constant code improvement.
Spiral Development
Process is spiral rather than linear with backtracking. Each loop is a phase in the process. Risks explicitly assessed and resolved.
Spiral Development Sectors
- Objective setting
- Risk assessments and reductions
- Development and validation
- Planning
Software Specification
Process of establishing required services and constraints on system.
Requirements Engineering Process:
- Feasibility Study
- Requirements elicitation and analysis
- Requirements Specification
- Requirements Validation
Software Design and Implementation
Process of converting system specs into executable system.
System design realizes specification and implementation translates it to executable.
Design Process
- Architectural Design
- Abstract Specification
- Interface Design
- Component Design
- Data Structure Design
- Algorithm Design
Structured Method
Systematic approach to developing a software design. Uses graphic models such as:
- Object Graph
- Sequence Model
- State Transition Model
- Structural Model
- Data Flow Model
Debugging
Translating design into program and removing errors. No generic process. Use testing.
Validation
Show that system conforms to specs and meets user requirements. Includes testing through test cases derived from real data.
Testing Stages:
- Component or Unit Testing
- System Testing
- Acceptance Testing
Component/Unit Testing
Individual Components tested, may be functions or objects.
System Testing
Testing of the system as a whole. Test emergent properties
Acceptance Testing
Testing with customer’s data to check that system meets customer needs.
Evolution
Software is flexible, changes with requirements evolution.
RUP
Rational Unified Process is derived from UML and normally describes 3 perspectives:
- Dynamic Perspective that shows phases over time
- Static Perspective that shows process activities
- Practice Perspective that suggests good practice.
RUP Phases:
- Inception: Establish business case
- Elaboration: Develop understanding of problem domain
- Construction: System design, process and testing
- Transition: Deploy the system in operating environment.
RUP Good Practice:
- Develop software iteratively
- Manage requirements
- Use component-based architecture
- Visually model software
- Verify software quality
- Control changes to software
CASE
Computer Aided Software Engineering supports SD and evolution process.
CASE activity automations
- Graphical editors for models
- Data dictionary for design elements
- Graphical UI builders
- Debuggers
- Automated Translators
Case disadvantage
Doesn’t make up for creativity
CASE classification
Functional Perspective: Tools classified according to function.
Process Perspective: Tools classified according to supported process activities
Integration Perspective: Tools classified according to their organization into integrated units.
CASE Integrations
Tools: Support individual processes ex. Text Editing
Workbenches: Support a process phase such as specification or design
Environments: Support all or most of an entire software process