Software Engineering Processes Flashcards
What is a
Software Engineering Process?
A structured set of activities required to develop a software system
SE Processes:
Fundamental Software Engineering Activities
Specification
Development
Validation
Evolution
SE Processes:
Opportunistic Approach
Essentially, just immediately write code
- Sort of ok for small, informal projects
- Inappropriate of complex software
- Inappropriate for professional environments where On-Time Delivery and High Quality are expected
- Requirements are not worked out before implementation
- Design deteriorates quickly
- No plans, no formal testing
- Maintenance and development costs are high
Software Engineering Processes:
3 Major Process Models
Waterfall Model
Incremental Development Model
Reuse-Oriented Model
Software Engineering Processes:
Plan-Driven
vs
Agile
Processes
Plan Driven
All process activities are planned in advance.
Progress is measured against this plan
Agile
Planning is incremental, it is easier to change the process to reflect changing customer requirements.
Waterfall Software Process:
Basic Idea and Phases
Takes the fundamental process activities and represents them as separate, sequential phases.
In theory, a phase should only be visited once in a development/release cycle.
Phases
- Requirements Definition
- System and Software Design
- Implementation and Unit Testing
- Integration and System Testing
- Operation and Maintenance
Waterfall Software Process:
When to Use
Waterfall Process can be used when:
- Requirements are well-understood
- Changes will be fairly limited during design process
- A few business systems have stable requirements
- Large Systems Engineering projects where a system will be developed at several sites
- The Plan-Driven nature of the model helps coordinate this kind of work
Incremental Development Model
Basic Description
- Interleaves the activities of Specification, Development and Validation
- Product is developed as a series of versions, with each version adding functionality to the previous version
Incremental Development Model:
Benefits
- Cost of accomodating changing requirements is reduced
- Easier to get customer feedback on the development work that has been done
- More rapid delivery and deployment of useful software is possible, even if all functionality is not included
Incremental Development Model:
Issues
(Largely managerial issues)
- Process is not very visible
- Difficult to measure progress without deliverables
- Documentation for each version is not cost effective
- System structure tends to degrade as new increments are added
Reuse-Oriented Software Engineering:
Basic Description
Based on the existence of a significant number of reusable components.
Focuses on integrating components into a system rather than developing them from scratch
Reuse-Oriented Process:
Benefits
- Reudce the amount of software to be developed
- Reduce cost
- Faster delivery of software
Reuse-Oriented Process:
Problem
Existing components may not cover requirements.
May need to compromise requirements to match available software
Reuse-Oriented Process:
Three common types of
Software Component
that may be reused
- Web Services
- Existing services such as Web APIs that are developed according to service standards and are available for remote invocation
- Code Collections/Frameworks/Libraries
- Collections of objects/components developed as a package to be integrated with a component framework like .NET
- Stand-alone Software Systems
- Can be configured for use in particular environments
- Like control systems
Reuse-Oriented Process:
Intermediate Stages
Component Analysis
Requirements Modification
System Design with Reuse
Development and Integration
Rational Unified Process:
The RUP is normally described from what 3 Perspectives?
Dynamic Perspective
Shows the phases of the model over time
Static Perspective
Shows the process activities that are enacted
Practice Perspective
Suggests good practices to use during the process
Rational Unified Process:
Phases (4)
Inception
Elaboration
Construction
Transition
Rational Unified Process:
Inception Phase
Inception
Establish a business case for the system
Rational Unified Process:
Elaboration Phase
Elaboration
Develop an understanding of problem domain.
Establish architectural framework for system.
Develop project plan.
Identify Key project risks.
Rational Unified Process:
Construction Phase
Construction
System Design
Implementaion
Testing
Rational Unified Process:
Transition Phase
Transition
Move the system from the development community to the user community
Boehm’s Spiral Process Model:
Basic Description
Software Engineering activities are organized into a “Spiral”
- Each loop in the spiral represents a phase(cycle) in the process.
- There are not fixed phases such as specification or design
- The sectors(quadrants) of the spiral represent general types of SE activities
Boehm’s Spiral Process Model:
Four Sectors
Objective Setting
Determine phase objectives, alternatives and constraints
Risk Assessment and Reduction
Identify and resolve risks, evaluate alternatives
Development and Validation
Develop, verify the next level of the product
Planning
Plan the next phase
Software Lifecycle Stages
Inception
Pre-Development
Development
Post-Development