ii - software processes Flashcards
coherent set of activities for software production
software process
process descriptions may also include…
- products
- roles
- pre- and post-conditions
[1] discuss, each approach is suitable for different types of software
Boehm and Turner (2003)
what are the process models covered?
- waterfall model
- incremental development
- reuse-oriented software engineering
fundamental process activities of specification,
development, validation, and evolution and represents them as separate process phases such as requirements specification, software design, implementation, testing, and so on.
waterfall model
interleaves the activities of specification,
development, and validation. The system is developed as a series of versions (increments), with each version adding functionality to the previous version.
incremental development
This approach is based on the existence of a significant number of reusable components. The system development process focuses on integrating these components into a system rather than developing
them from scratch.
Reuse-oriented software engineering
The [1] model is an example of a plan-driven process—in principle, you must plan and schedule all of the process activities before starting work on them.
waterfall
enumerate
principal stages of waterfall model
- requirements analysis and definition
- system and software design
- implementation and unit testing
- integration and system testing
- operation and maintenance
An example of a formal development process, originally developed by IBM; each software increment is formally specified and this specification is transformed into an
implementation
Cleanroom process
Description: A sequential software development model that follows distinct phases, producing documentation at each stage.
Key Feature: Consistency with engineering process models, visibility for managers to monitor progress, but inflexible partitioning of the project.
waterfall model
Description: Major problem lies in the inflexible partitioning of the project into distinct stages.
Key Challenge: Commitments made early in the process, difficulty in responding to changing customer requirements.
Use Case: Suitable when requirements are well understood and unlikely to change radically during system development.
Waterfall Model Challenges
Description: A variant of the waterfall model involving creating a mathematical model of a system specification, refined into executable code using mathematical transformations.
Use Case: Particularly suited for systems with stringent safety, reliability, or security requirements.
Advantage: Simplifies the production of a safety or security case, demonstrating compliance with requirements to customers or regulators.
Formal System Development
Description: Typically applied to the development of safety-critical or security-critical systems, requiring specialized expertise.
Consideration: Not generally cost-effective for the majority of systems, but beneficial for projects with stringent safety or security requirements.
Examples: B method (Schneider, 2001; Wordsworth, 1996).
Processes Based on Formal Transformations
based on the idea of developing an initial implementation, exposing this to user comment and evolving it through several versions until an adequate system has been developed
incremental development
From a management perspective, the incremental approach has two problems
- process is not visible
- system structure tends to degrade as new increments are added
stages in reuse-oriented process
- component analysis
- requirements modification
- system design with reuse
- development and integration
3 types of software component in reuse-oriented process
- web services
- collections of objects developed as package
- stand-alone software systems
Specifications are written on cards.
Executable tests are developed before the actual program.
Evolution may involve substantial system restructuring or refactoring.
extreme programming
particularly critical stage of the software process as errors at this stage inevitably lead to later problems in the system design and implementation.
Requirements engineering
programs that are used to support software engineering process activities. These tools therefore include design
editors, data dictionaries, compilers, debuggers, system building tools, etc.
Software development tools (sometimes called Computer-Aided Software Engineering or CASE tools)
4 main activities in requirements engineering process
- feasibility study
- requirements elicitation and analysis
- requirements specification
- requierments validation
description of the structure of the software to be implemented, the data models and structures used by the system, the interfaces between system components
and, sometimes, the algorithms used.
software design
4 activities part of design process for information systems
- architectural design
- interface design
- component design
- database design
- Evolution of structured methods.
- Emphasizes architectural models with abstract and implementation-specific levels.
- Detailed models enable executable system generation.
Model-Driven Development (MDD)
- Follows naturally from system design.
- Interleaved stages of design and program development are common.
- Software development tools may generate a skeleton program, allowing developers to focus on component details.
program development
system is executed using simulated test data, is the principal validation technique
Program testing
stages in testing process
- development testing
- system testing
- acceptance testing
acceptance testing is also called [1] where custom systems are developed for a single client and the testing process continues until both agree that the system is acceptable.
alpha testing
system is marketed as a software product so [1] testing is used; delivering a system to a number of potential customers who agree to use that system
beta testing
2 approaches to reduce costs of rework
- change avoidance
- change tolerance
2 ways of coping with change and changing system requirements
- system prototyping
- incremental delivery
initial version of a software system that is used to demonstrate concepts, try out design options, and find out more about the problem and its possible
solutions
prototype
A risk-driven software process framework (the spiral model) was proposed by [1]
Boehm (1988)
each loop in the spiral is split into 4 sectors…
- objective setting
- risk assessment and reduction
- development and validation
- planning
modern generic process model that is organized into phases (inception, elaboration, construction, and transition) but separates activities (requirements,
analysis, and design, etc.) from these phases.
The Rational Unified Process
3 perspective of RUP
- dynamic perspective
- static perspective
- practice perspective
shows the phases of the model over time.
dynamic perspective
shows the process activities that are enacted.
static perspective
good practices to be used during the process.
practice perspective
phases of RUP
- inception
- elaboration
- construction
- transition
6 fundamental best practices recommended in RUP
- develop software iteratively
- manage requirements
- use component-based architectures
- visually model software
- verify software quality
- control changes to software
standardized modeling language in the field of software engineering that uses graphical notations to create visual models of software systems; help in understanding, visualizing, specifying, constructing, and documenting the artifacts of a software system.
Unified Modeling Language (UML)