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