Podcast
Questions and Answers
Which activity is involved in the software process?
Which activity is involved in the software process?
- Marketing the software
- Sales forecasting
- Validation (correct)
- Customer feedback
What characterizes plan-driven processes?
What characterizes plan-driven processes?
- Activities are reactive rather than proactive
- Activities are based solely on customer feedback
- Activities are unplanned and spontaneous
- Activities are planned in advance (correct)
Which of the following is NOT typically included in process descriptions?
Which of the following is NOT typically included in process descriptions?
- Products
- Input metrics (correct)
- Pre- and post-conditions
- Roles
What is the main focus of agile processes?
What is the main focus of agile processes?
Which of the following is a feature of the waterfall model?
Which of the following is a feature of the waterfall model?
What is an abstract representation of a software process called?
What is an abstract representation of a software process called?
In which development approach are specification, development, and validation interleaved?
In which development approach are specification, development, and validation interleaved?
Which of the following statements is true regarding software processes?
Which of the following statements is true regarding software processes?
What is the primary focus of system testing?
What is the primary focus of system testing?
Which stage of testing focuses on the behavior of individual software components?
Which stage of testing focuses on the behavior of individual software components?
What does customer testing primarily assess?
What does customer testing primarily assess?
What is a key challenge in large software projects?
What is a key challenge in large software projects?
How does change anticipation help in software development?
How does change anticipation help in software development?
What is meant by change tolerance in software processes?
What is meant by change tolerance in software processes?
Why is the distinction between development and evolution in software becoming less relevant?
Why is the distinction between development and evolution in software becoming less relevant?
What is an example of a method used to reduce the costs of rework?
What is an example of a method used to reduce the costs of rework?
What is a major drawback of the waterfall model?
What is a major drawback of the waterfall model?
Which scenario is the waterfall model most suitable for?
Which scenario is the waterfall model most suitable for?
What is a characteristic of incremental development?
What is a characteristic of incremental development?
What problem is associated with incremental development?
What problem is associated with incremental development?
In what condition is the waterfall model likely to be ineffective?
In what condition is the waterfall model likely to be ineffective?
Which benefit is primarily associated with incremental development?
Which benefit is primarily associated with incremental development?
Which of the following is a phase in the waterfall model?
Which of the following is a phase in the waterfall model?
Why might managers prefer a structured phase approach in software development?
Why might managers prefer a structured phase approach in software development?
What is the primary purpose of system prototyping?
What is the primary purpose of system prototyping?
How does incremental delivery differ from traditional system delivery?
How does incremental delivery differ from traditional system delivery?
What is one of the main benefits of using a prototype in the requirements engineering process?
What is one of the main benefits of using a prototype in the requirements engineering process?
Which aspect is typically excluded from a prototype's development?
Which aspect is typically excluded from a prototype's development?
What is a crucial step when developing increments in an incremental delivery model?
What is a crucial step when developing increments in an incremental delivery model?
In what way does prototyping lead to improved system usability?
In what way does prototyping lead to improved system usability?
Which factor is emphasized during prototype development, especially in unclear areas?
Which factor is emphasized during prototype development, especially in unclear areas?
How does incremental delivery support changes in user requirements?
How does incremental delivery support changes in user requirements?
What does incremental development primarily allow for during the software development process?
What does incremental development primarily allow for during the software development process?
Which of the following is NOT an advantage of incremental delivery?
Which of the following is NOT an advantage of incremental delivery?
What is a significant challenge associated with incremental delivery?
What is a significant challenge associated with incremental delivery?
Why is it suggested that throw-away prototypes should not be used as a basis for production systems?
Why is it suggested that throw-away prototypes should not be used as a basis for production systems?
What common requirement can hinder the incremental delivery process?
What common requirement can hinder the incremental delivery process?
In which scenario is incremental delivery particularly challenging?
In which scenario is incremental delivery particularly challenging?
What is a common goal of software process improvement initiatives?
What is a common goal of software process improvement initiatives?
Why are prototypes often discarded after development?
Why are prototypes often discarded after development?
What characterizes the 'Initial' capability maturity level?
What characterizes the 'Initial' capability maturity level?
Which process is primarily concerned with transforming a requirements specification into an executable software system?
Which process is primarily concerned with transforming a requirements specification into an executable software system?
Which of the following best describes software validation?
Which of the following best describes software validation?
What do general process models in software engineering describe?
What do general process models in software engineering describe?
What is a key aspect of the 'Managed' maturity level?
What is a key aspect of the 'Managed' maturity level?
Which approach focuses on reducing process overheads?
Which approach focuses on reducing process overheads?
Why is software evolution necessary?
Why is software evolution necessary?
What is an important activity in software processes to cope with change?
What is an important activity in software processes to cope with change?
Flashcards
Software Process
Software Process
A structured set of activities needed to create a software system.
Software Process Model
Software Process Model
An abstract representation of the software process.
Plan-driven Process
Plan-driven Process
A process where all activities are planned in advance, and progress is measured against the plan.
Agile Process
Agile Process
Signup and view all the flashcards
Waterfall Model
Waterfall Model
Signup and view all the flashcards
Incremental Development
Incremental Development
Signup and view all the flashcards
Integration and Configuration
Integration and Configuration
Signup and view all the flashcards
Process Activities
Process Activities
Signup and view all the flashcards
Waterfall Model Phases
Waterfall Model Phases
Signup and view all the flashcards
Waterfall Model Drawback
Waterfall Model Drawback
Signup and view all the flashcards
Incremental Development Advantages
Incremental Development Advantages
Signup and view all the flashcards
Waterfall Model Application
Waterfall Model Application
Signup and view all the flashcards
Changing Requirements (Waterfall)
Changing Requirements (Waterfall)
Signup and view all the flashcards
Incremental Development Flexibility
Incremental Development Flexibility
Signup and view all the flashcards
Incremental Development Visibility
Incremental Development Visibility
Signup and view all the flashcards
System Testing
System Testing
Signup and view all the flashcards
Component Testing
Component Testing
Signup and view all the flashcards
Customer Testing
Customer Testing
Signup and view all the flashcards
Software Evolution
Software Evolution
Signup and view all the flashcards
Change Anticipation
Change Anticipation
Signup and view all the flashcards
Change Tolerance
Change Tolerance
Signup and view all the flashcards
Testing Phases (V-model)
Testing Phases (V-model)
Signup and view all the flashcards
Software Costs of Change
Software Costs of Change
Signup and view all the flashcards
Change avoidance
Change avoidance
Signup and view all the flashcards
System prototyping
System prototyping
Signup and view all the flashcards
Incremental Delivery
Incremental Delivery
Signup and view all the flashcards
Benefits of prototyping
Benefits of prototyping
Signup and view all the flashcards
Prototype Development
Prototype Development
Signup and view all the flashcards
Incremental delivery: Prioritized requirements
Incremental delivery: Prioritized requirements
Signup and view all the flashcards
Incremental Delivery Advantage: Early Value
Incremental Delivery Advantage: Early Value
Signup and view all the flashcards
Incremental Delivery Advantage: Prototype
Incremental Delivery Advantage: Prototype
Signup and view all the flashcards
Incremental Delivery Advantage: Less Risk
Incremental Delivery Advantage: Less Risk
Signup and view all the flashcards
Incremental Delivery Problem: Common Facilities
Incremental Delivery Problem: Common Facilities
Signup and view all the flashcards
Incremental Delivery Problem: Procurement Models
Incremental Delivery Problem: Procurement Models
Signup and view all the flashcards
Throw-away Prototype
Throw-away Prototype
Signup and view all the flashcards
Capability Maturity Model (CMM)
Capability Maturity Model (CMM)
Signup and view all the flashcards
Initial CMM Level
Initial CMM Level
Signup and view all the flashcards
Repeatable CMM Level
Repeatable CMM Level
Signup and view all the flashcards
Defined CMM Level
Defined CMM Level
Signup and view all the flashcards
Managed CMM Level
Managed CMM Level
Signup and view all the flashcards
Optimising CMM Level
Optimising CMM Level
Signup and view all the flashcards
Requirements Engineering
Requirements Engineering
Signup and view all the flashcards
Software Validation
Software Validation
Signup and view all the flashcards
Study Notes
Software Processes
- Software processes are a structured set of activities required to develop a software system.
- Many different software processes exist, but all involve:
- Specification: Defining what the system should do.
- Design and implementation: Defining the system's organization and implementing it.
- Validation: Checking that the system meets customer requirements.
- Evolution: Adapting the system to changing customer needs.
- A software process model is an abstract representation of a process, presenting a description from a specific perspective.
Topics Covered
- Software process models
- Process activities
- Coping with change
- Process improvement
Plan-driven and Agile Processes
- Plan-driven processes: All process activities are planned in advance, and progress is measured against the plan.
- Agile processes: Planning is incremental, allowing for easier adjustments to reflect changing customer requirements.
- Most practical processes incorporate elements of both plan-driven and agile approaches. There is no one "right" process.
The Waterfall Model
- A plan-driven model with separate and distinct phases of specification and development.
- Phases:
- Requirements definition
- System and software design
- Implementation and unit testing
- Integration and system testing
- Operation and maintenance
- Difficulty in accommodating changes after the process begins.
Waterfall Model Problems
- Inflexible partitioning into stages makes responding to changing customer requirements difficult.
- Works best when requirements are well-understood and changes are limited.
- Fewer business systems have stable requirements.
- Suitable for large projects with development at multiple sites, where the planned nature helps coordination.
Incremental Development
- Specification, development, and validation are interleaved.
- May be plan-driven or agile.
- Benefits:
- Reduced cost of accommodating changing requirements.
- Easier to get customer feedback.
- Quicker delivery of usable software.
- Problems:
- Process is not always visible to managers.
- System structure can degrade over time if not carefully managed.
Integration and Configuration
- Relies on software reuse, integrating systems from existing components or commercial-off-the-shelf (COTS) systems.
- Configuring reused elements to adapt to user requirements is common.
- Reuse is the standard approach for many business systems. Detailed information on reuse is in Chapter 15 of the text.
Software Process Descriptions
- Process descriptions focus on activities like data modeling and user interface design, and the order of these activities.
- Descriptions should include:
- Products: Outcomes of a process activity.
- Roles: Responsibilities of people involved.
- Pre- and post-conditions: Statements about the state of the process or product before and after an activity.
Key Process Stages (Reuse-Oriented)
- Requirements specification
- Software discovery and evaluation
- Requirements refinement
- Application system configuration
- Component adaptation and integration
Advantages/Disadvantages of Reuse-Oriented Development
- Advantages: reduced costs, faster delivery
- Disadvantages: compromises in requirements, loss of control over reused elements
Process Activities
- Real software processes are inter-leaved sequences of technical, collaborative, and managerial activities, aiming to specify, design, implement, and test a software system.
- Basic process activities (specification, development, validation, evolution) are organized differently in different processes (e.g., sequential in waterfall, interleaved in incremental).
The Requirements Engineering Process
- Elicitation and analysis, specification, validation, and documentation make up requirements engineering.
- Understanding user and system requirements is critical.
Software Specification
- Establishing required services and constraints for system operation and development.
- Includes requirements elicitation and analysis, specification, and validation.
Software Design and Implementation
- Converting system specifications into an executable system.
- Software design: Creating a software structure realizing the specification.
- Implementation: Translating the structure into an executable program.
- Activities are closely related and often interleaved.
Design Activities
- Architectural design: Identifying overall system structure, components, relationships, and distribution.
- Database design: Designing data structures and their representation in a database.
- Interface design: Defining interfaces between system components.
- Component selection and design: Seeking reusable components; designing custom if necessary.
System Implementation
- Implementing software either through program development or configuration.
- Design and implementation activities are often interleaved.
- Programming is often an individual activity without a strict standard process.
- Debugging is essential for identifying and fixing program errors.
Software Validation
- Verifying and validating (V&V) that a system meets its specification and user requirements.
- Includes checking and review processes, along with testing.
- System testing executes the system with test cases based on specifications and real data.
- Testing is the most common V&V activity.
Stages of Testing
- Component testing: Testing individual components (e.g., functions, objects) in isolation.
- System testing: Testing the entire system as a whole.
- Customer testing: Testing with real customer data to ensure the system meets customer needs.
Testing Phases in a Plan-Driven Process (V-Model)
- A detailed view of testing phases in a plan-driven process.
Software Evolution
- Software is adaptable and must change to meet evolving business requirements.
- Development and evolution (maintenance) are merging, as few systems are completely new.
System Evolution
- A process for assessing, proposing changes, and modifying existing software systems to adapt to new needs.
Coping with Change
- Change is inevitable in software projects.
- Business changes, new technologies, and platform changes lead to evolving requirements and adaptations.
- Change leads to rework of existing processes.
Reducing Costs of Rework (Coping with Change)
- Change anticipation: Including activities to predict potential changes before significant rework becomes necessary. (E.g., prototyping)
- Change tolerance: Designing processes to accommodate changes at low cost without disrupting the entire system (e.g., incremental development).
Coping with Changing Requirements
- System prototyping: Quickly developing a version of the system to test requirements and feasibility of design decisions
- Incremental delivery: Delivering system increments for customer feedback and evaluation.
Software Prototyping
- Prototypes are initial versions of a system used to demonstrate concepts and test design options.
- Can help requirements elicitation and validation.
Benefits of Prototyping
- Improves system usability.
- Matches user needs closer.
- Improves design quality.
- Improves maintainability.
- Reduces development effort.
- Process of Prototype Development: Establishing objectives, Defining functionality, Developing prototype, Evaluating prototype
Prototype Development
- Can use rapid prototyping languages/tools.
- May leave out non-critical features, focusing on functional areas.
- Error checking may not be included in initial versions.
Incremental Delivery
- Delivering the system in a series of increments, each with prioritized features.
- User requirements are incorporated into early increments.
- Requirements for later increments can evolve.
- This approach is very useful during iterative development and is very common in modern software development processes.
Incremental Delivery Advantages
- Early value delivered to the customer.
- Prototyping for eliciting requirements for future increments.
- Reduces risk of overall project failure.
- Highest priority features receive most testing
Incremental Delivery Problems
- Defining basic facilities used by different system increments can be challenging.
- Defining full requirements before development is difficult.
- Procurement issues can arise in business contracts.
Throw-Away Prototypes
- Prototypes serve as a tool in the development process but are not intended for ongoing use.
- They might not meet the non-functional requirements of a production system, are usually not documented, and may contain many errors.
Process Improvement
- Many companies use process improvement to enhance software quality and reduce costs.
- Process improvement involves understanding existing processes and adjusting them to enhance quality and reduce development time.
Approaches to Improvement
- Process maturity approach: Focuses on improved process management and software engineering practices.
- Agile approach: Iterative development to streamline overhead and respond quickly to changes.
The Process Improvement Cycle
- A cyclical process: measure, analyze, change, and repeat to continuously improve.
Process Improvement Activities
- Process measurement: Collecting data on existing processes or products.
- Process analysis: Identifying process weaknesses and bottlenecks, and creating process models or maps.
- Process change: Implementing measures to address identified weaknesses and improve efficiency.
Process Measurement
- Gathering quantitative data on software processes and products.
- Measurements are used for assessing process improvements and should align with overall organizational objectives.
Process Metrics
- Examples of process metrics:
- Time taken for activities
- Resources required
- Number of errors
Capability Maturity Levels
- A framework for describing the maturity levels of software processes.
- Levels: Initial, Repeatable, Defined, Managed, Optimizing.
The SEI Capability Maturity Model
- A model that identifies maturity levels of a software process.
- Levels: Initial, Repeatable, Defined, Managed, Optimizing. The higher the level achieved, the better the software development practices.
Key Points Summary
- Software processes are crucial activities in software development.
- Models describe the structure. Requirements engineering clarifies needs, validation checks adherence.
- Design and implementation turns specifications into executable systems.
- Validation and testing are critical to ensure quality. Evolution manages changes throughout the life cycle.
- Iterative/Incremental development enables flexible adaptation to evolving requirements and change.
- Continuous improvement (process improvement activities) should be ongoing.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
This quiz covers the essential activities and models that define software processes, including specification, design, validation, and evolution. Explore the differences between plan-driven and agile processes and understand how to cope with change and improve processes effectively.