Podcast
Questions and Answers
What is a significant consequence of not spending time and money on refactoring software?
What is a significant consequence of not spending time and money on refactoring software?
Which of the following best describes COTS systems?
Which of the following best describes COTS systems?
Which key process stage involves assessing existing software components for reuse?
Which key process stage involves assessing existing software components for reuse?
What is a major advantage of reuse-oriented software engineering?
What is a major advantage of reuse-oriented software engineering?
Signup and view all the answers
What is one of the inevitable compromises when reusing software components?
What is one of the inevitable compromises when reusing software components?
Signup and view all the answers
Which type of software reuse is implemented through web services?
Which type of software reuse is implemented through web services?
Signup and view all the answers
What does the loss of control over reused system elements imply?
What does the loss of control over reused system elements imply?
Signup and view all the answers
Which of the following process activities involves defining user needs?
Which of the following process activities involves defining user needs?
Signup and view all the answers
What is the purpose of process measurement in the software improvement cycle?
What is the purpose of process measurement in the software improvement cycle?
Signup and view all the answers
Which of the following activities is NOT part of the process improvement cycle?
Which of the following activities is NOT part of the process improvement cycle?
Signup and view all the answers
What should drive the improvements in a software process?
What should drive the improvements in a software process?
Signup and view all the answers
Which of the following is a type of process metric?
Which of the following is a type of process metric?
Signup and view all the answers
In order to collect quantitative process data effectively, what is often needed?
In order to collect quantitative process data effectively, what is often needed?
Signup and view all the answers
What is the primary goal of the software specification process?
What is the primary goal of the software specification process?
Signup and view all the answers
In which development process are the activities of specification, development, validation, and evolution organized sequentially?
In which development process are the activities of specification, development, validation, and evolution organized sequentially?
Signup and view all the answers
Which of the following best describes requirements validation?
Which of the following best describes requirements validation?
Signup and view all the answers
What is an activity involved in architectural design?
What is an activity involved in architectural design?
Signup and view all the answers
What characterizes the relationship between design and implementation in software development?
What characterizes the relationship between design and implementation in software development?
Signup and view all the answers
What is the focus of requirements elicitation and analysis?
What is the focus of requirements elicitation and analysis?
Signup and view all the answers
What is the main purpose of debugging in the software implementation process?
What is the main purpose of debugging in the software implementation process?
Signup and view all the answers
Which design aspect deals with the representation of data in a system?
Which design aspect deals with the representation of data in a system?
Signup and view all the answers
What does change anticipation in software processes aim to achieve?
What does change anticipation in software processes aim to achieve?
Signup and view all the answers
Which approach involves delivering system increments for customer feedback?
Which approach involves delivering system increments for customer feedback?
Signup and view all the answers
How does system prototyping support change anticipation?
How does system prototyping support change anticipation?
Signup and view all the answers
Which of the following is a benefit of software prototyping?
Which of the following is a benefit of software prototyping?
Signup and view all the answers
What is a characteristic of change tolerance in software development?
What is a characteristic of change tolerance in software development?
Signup and view all the answers
What role does a prototype play in the testing process?
What role does a prototype play in the testing process?
Signup and view all the answers
Which option describes the purpose of developing prototypes during requirements engineering?
Which option describes the purpose of developing prototypes during requirements engineering?
Signup and view all the answers
What is an effect of improved maintainability gained from prototyping?
What is an effect of improved maintainability gained from prototyping?
Signup and view all the answers
What characterizes the 'Initial' maturity level in the SEI capability maturity model?
What characterizes the 'Initial' maturity level in the SEI capability maturity model?
Signup and view all the answers
Which of the following models describes the organization of software processes?
Which of the following models describes the organization of software processes?
Signup and view all the answers
What is the main focus of the requirements engineering process?
What is the main focus of the requirements engineering process?
Signup and view all the answers
What does software validation primarily check for?
What does software validation primarily check for?
Signup and view all the answers
Which approach to process improvement is primarily focused on minimizing overheads?
Which approach to process improvement is primarily focused on minimizing overheads?
Signup and view all the answers
What is a key characteristic of processes structured for iterative development?
What is a key characteristic of processes structured for iterative development?
Signup and view all the answers
In the SEI capability maturity model, what indicates progression to the 'Managed' level?
In the SEI capability maturity model, what indicates progression to the 'Managed' level?
Signup and view all the answers
Which of the following activities is essential for software evolution?
Which of the following activities is essential for software evolution?
Signup and view all the answers
What is the primary purpose of verification and validation in software processes?
What is the primary purpose of verification and validation in software processes?
Signup and view all the answers
Which stage of testing focuses on evaluating individual components independently?
Which stage of testing focuses on evaluating individual components independently?
Signup and view all the answers
What type of testing is specifically conducted with customer data?
What type of testing is specifically conducted with customer data?
Signup and view all the answers
Why is software evolution considered essential in modern software development?
Why is software evolution considered essential in modern software development?
Signup and view all the answers
What is a consequence of change in large software projects?
What is a consequence of change in large software projects?
Signup and view all the answers
What aspect of testing is particularly emphasized in system testing?
What aspect of testing is particularly emphasized in system testing?
Signup and view all the answers
What does the V-model in the plan-driven software process emphasize?
What does the V-model in the plan-driven software process emphasize?
Signup and view all the answers
How are new technologies affecting software evolution?
How are new technologies affecting software evolution?
Signup and view all the answers
Study Notes
Chapter 2 - Software Processes
- Software processes are the activities involved in producing software systems.
- Software process models are abstract representations of these processes.
- General process models outline the organization of software processes.
- Examples include the waterfall model, incremental development, and reuse-oriented development.
- Requirements engineering is the process of defining software specifications.
- Design and implementation processes convert the specification into an executable system.
- Software validation checks if the system meets the specification and user needs.
- Software evolution occurs when the software changes to meet new requirements.
- Processes should include activities like prototyping and incremental delivery to handle change.
- Processes can be structured for iterative development, allowing changes without disrupting the overall system.
- Key process improvement approaches include agile methods (reducing overhead) and maturity-based methods.
- The SEI process maturity framework has levels related to good software engineering practice.
Topics Covered
- Software process models (e.g., waterfall, incremental, reuse-oriented)
- Process activities (specification, development, validation, evolution)
- Coping with change (change anticipation, change tolerance)
- Process improvement (process maturity, agile approaches)
The Software Process
- A structured set of activities to develop a software system.
- All software processes involve:
- Specification: Defining what the system should do.
- Design and implementation: Defining the system's structure and implementing it.
- Validation: Checking if the system meets user needs.
- Evolution: Modifying the system in response to changing needs.
Software Process Descriptions
- Descriptions usually focus on activities (e.g., data model, UI design) and their order.
- Process descriptions can include these elements:
- Products: Outcomes of process activities.
- Roles: Responsibilities of involved people.
- Pre- and post-conditions: Statements about the state of the process before and after an activity.
Plan-driven and Agile Processes
- Plan-driven processes plan all activities beforehand, and progress is measured against this plan.
- Agile processes use incremental planning, making it easier to adapt to changing customer needs.
- Practical processes often combine elements of both plan-driven and agile approaches.
- No single 'right' or 'wrong' software process.
Software Process Models
- Waterfall model: Plan-driven; separate and distinct phases for specification and development.
- Incremental development: Specification, development, and validation are interleaved. Can be either plan-driven or agile.
- Integration and configuration: Systems assembled from configurable components; can be plan-driven or agile.
- Most large systems use a process combining elements of these.
Waterfall Model Phases
- Requirements definition
- System and software design
- Implementation and unit testing
- Integration and system testing
- Operation and maintenance
Waterfall Model Problems
- Inflexible partitioning makes it difficult to adapt to changing requirements.
- Well-suited for large systems where requirements are stable and changes are limited.
Incremental Development Benefits
- Reduced costs of accommodating changing requirements.
- Easier to get customer feedback.
- Faster delivery of working software.
- Customers gain value from the software earlier.
Incremental Development Problems
- Process is not visible to managers.
- System structure can degrade over time if changes aren't managed effectively.
Integration and Configuration
- Software reuse is a vital aspect.
- Components or systems from a library or existing systems (sometimes called COTS) are integrated to build systems.
- Reused elements are configured to meet specific user requirements
- Now a standard approach for many types of business systems.
Types of Reusable Software
- Stand-alone application systems (configured for a specific environment).
- Collections of objects integrated into frameworks (e.g., .NET, J2EE).
- Web services (using service standards for remote invocation).
Reuse-Oriented Software Engineering
- Key process stages: requirements specification, software discovery, requirements refinement, application system configuration, and component adaptation/integration.
- Advantages: reduced costs and faster delivery.
- Disadvantages: compromises on requirements and loss of control over evolution.
Process Activities
- Software development is a chain of overlapping technical, collaborative, and managerial activities.
- Basic activities (specification, development, validation, and evolution) are organized differently in different processes (e.g., waterfall vs. incremental).
The Requirements Engineering Process
- Eliciting information from stakeholders.
- Defining the system's requirements in detail.
- Validating these requirements.
Software Specification
- The act of defining the services and constraints of a system.
- Essential for guiding development.
Software Design and Implementation
- Transforming the system specification into an executable system.
- Software design and implementation often occur iteratively.
Design Activities
- Architectural design (system structure, components, relationships).
- Database design (data structures).
- Interface design (interfaces between components).
- Component selection/design (reuse of available components).
System Implementation
- Implementing the software using programs or pre-existing application systems.
- Design and implementation frequently occur concurrently.
- Debugging is crucial to addressing errors.
Software Validation (Verification and Validation)
- Demonstrating that a system conforms to its specification and user needs.
- Typically involves checking and review processes and system testing. System testing executes the system using real data and test cases derived from the specification. Testing is a key method of validation (V&V).
Testing Stages
- Component testing (individual components).
- System testing (the entire system).
- Customer testing (confirmation that the system meets customer's requirements).
Software Evolution
- Software is flexible and adapts to changing needs.
- Re-implementation (maintenance) of software to meet new requirements is common.
Coping With Change
- Change is a core feature related to software production.
- Processes should be geared to anticipating change and accommodating it effectively.
- Techniques include change anticipation (e.g., prototyping), change tolerance (e.g., iterative development).
System Prototyping
- Prototyping is a useful way to visualize the system and elicit feedback.
- Advantages: improved system usability, improved design/maintainability.
Throw-Away Prototypes
- Prototypes are discarded since they aren't a direct basis for a finished product.
- Used for elicitation & validation.
,### Incremental Delivery
- Delivers software functionality in increments rather than as a complete system.
- Prioritizes development, and requirements "freeze" after development starts.
Incremental Development and Delivery
- Develops and evaluates system increments.
- Uses common agile methods.
- Deploys increments and gains end-user feedback.
Incremental Delivery Advantages
- Early delivery of customer value in increments.
- Early increments help with requirements elicitation.
- Lower risk of overall project failure.
Incremental Delivery Problems
- Defining common system facilities can be difficult.
- Iterative processes conflict with common procurement models that require complete specifications at the start.
Process Improvement
- Improving software processes to enhance quality, reduce costs, or speed development.
- Understanding and changing existing processes to increase product quality & reduce development time.
Approaches to Improvement
- Process maturity approach (improve process/project management and good software engineering practices).
- Agile approach (iterative development and reduced overheads).
Process Improvement Cycle
- Measure process characteristics.
- Analyze process problems.
- Change the process.
Process Improvement Activities
- Process measurement: Establish a baseline for determining if changes had a positive effect.
- Process analysis: Identify areas for improvement (weaknesses, bottlenecks).
- Process change: Implement changes to address identified weaknesses.
Process Metrics
- Time taken for process activities.
- Resources required for processes.
- Number of occurrences of events (like discovered defects).
Capability Maturity Levels
- A framework (5 levels: Initial, Repeatable, Defined, Managed, Optimizing) to assess process maturity reflecting good practice.
SEI Capability Maturity Model (CMM)
- A framework for evaluating the process maturity of software development organizations. Initial, Repeatable, Defined, Managed, and Optimized characterize the levels.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
This quiz covers the fundamentals of software processes as detailed in Chapter 2. Explore various software process models, including waterfall and iterative development, as well as the stages of requirements engineering, design, implementation, and validation. Test your knowledge on how these processes adapt to evolving software requirements.