Podcast
Questions and Answers
Is there a universal software engineering method for different software systems?
Is there a universal software engineering method for different software systems?
What are the fundamental software engineering activities?
What are the fundamental software engineering activities?
Specification, design and implementation, validation, evolution
What is a software process model?
What is a software process model?
An abstract representation of a process
Activities are complex and involve sub-activities.
Activities are complex and involve sub-activities.
Signup and view all the answers
What is the difference between plan-driven and agile processes?
What is the difference between plan-driven and agile processes?
Signup and view all the answers
In practice, what type of process do most practical software systems use?
In practice, what type of process do most practical software systems use?
Signup and view all the answers
Which of these is a plan-driven process model?
Which of these is a plan-driven process model?
Signup and view all the answers
Incremental development can be either plan-driven or agile.
Incremental development can be either plan-driven or agile.
Signup and view all the answers
Large systems are developed using only one type of process model.
Large systems are developed using only one type of process model.
Signup and view all the answers
What are the five phases in the waterfall model?
What are the five phases in the waterfall model?
Signup and view all the answers
The waterfall model is only appropriate when the requirements are well-understood and changes during the design process will be fairly limited.
The waterfall model is only appropriate when the requirements are well-understood and changes during the design process will be fairly limited.
Signup and view all the answers
What is the main challenge in using the waterfall model?
What is the main challenge in using the waterfall model?
Signup and view all the answers
The waterfall model is commonly used for large systems engineering projects where a system is developed at several sites.
The waterfall model is commonly used for large systems engineering projects where a system is developed at several sites.
Signup and view all the answers
What is the key idea behind Incremental Development?
What is the key idea behind Incremental Development?
Signup and view all the answers
Specification, development, and validation activities are interleaved in incremental development.
Specification, development, and validation activities are interleaved in incremental development.
Signup and view all the answers
What is a key benefit of Incremental Development?
What is a key benefit of Incremental Development?
Signup and view all the answers
Incremental development is best suited for safety-critical systems, as it allows quick changes.
Incremental development is best suited for safety-critical systems, as it allows quick changes.
Signup and view all the answers
What is a problem associated with incremental development?
What is a problem associated with incremental development?
Signup and view all the answers
System structure tends to degrade as new increments are added.
System structure tends to degrade as new increments are added.
Signup and view all the answers
What is the basis of integration and configuration?
What is the basis of integration and configuration?
Signup and view all the answers
Reused elements should never be configured to adapt their behaviour, as doing so can lead to errors.
Reused elements should never be configured to adapt their behaviour, as doing so can lead to errors.
Signup and view all the answers
What is the standard approach for building modern business systems?
What is the standard approach for building modern business systems?
Signup and view all the answers
Which of these is NOT a type of reusable software?
Which of these is NOT a type of reusable software?
Signup and view all the answers
What is a key advantage of using reusable software?
What is a key advantage of using reusable software?
Signup and view all the answers
Requirements compromises are inevitable when using reusable software.
Requirements compromises are inevitable when using reusable software.
Signup and view all the answers
What is a disadvantage of using reusable software?
What is a disadvantage of using reusable software?
Signup and view all the answers
Real software processes are interleaved sequences of technical, collaborative and managerial activities.
Real software processes are interleaved sequences of technical, collaborative and managerial activities.
Signup and view all the answers
What is the overall goal of software development?
What is the overall goal of software development?
Signup and view all the answers
Which of these is NOT a basic process activity in software development?
Which of these is NOT a basic process activity in software development?
Signup and view all the answers
In the waterfall model, the basic process activities are organized sequentially, while in incremental development, they are interleaved.
In the waterfall model, the basic process activities are organized sequentially, while in incremental development, they are interleaved.
Signup and view all the answers
What is the process of establishing what services are required and identifying the constraints on the system's operation and development?
What is the process of establishing what services are required and identifying the constraints on the system's operation and development?
Signup and view all the answers
What is the primary goal of requirements engineering?
What is the primary goal of requirements engineering?
Signup and view all the answers
Software specification is a critical stage in the software development process.
Software specification is a critical stage in the software development process.
Signup and view all the answers
A feasibility study is conducted after the requirement engineering stage.
A feasibility study is conducted after the requirement engineering stage.
Signup and view all the answers
Requirements are typically presented at two levels of detail.
Requirements are typically presented at two levels of detail.
Signup and view all the answers
What are the three main activities involved in requirements engineering?
What are the three main activities involved in requirements engineering?
Signup and view all the answers
Requirement elicitation can involve the development of system models and prototypes.
Requirement elicitation can involve the development of system models and prototypes.
Signup and view all the answers
Requirement specification involves defining the requirements in detail, using information gathered during the analysis stage.
Requirement specification involves defining the requirements in detail, using information gathered during the analysis stage.
Signup and view all the answers
What are the two types of requirements included in the requirement specification?
What are the two types of requirements included in the requirement specification?
Signup and view all the answers
What is involved in requirements validation?
What is involved in requirements validation?
Signup and view all the answers
Software design and implementation are completely separate activities, conducted one after the other.
Software design and implementation are completely separate activities, conducted one after the other.
Signup and view all the answers
What is the process of converting the system specification into an executable system?
What is the process of converting the system specification into an executable system?
Signup and view all the answers
Software design is developed in stages, often involving constant backtracking.
Software design is developed in stages, often involving constant backtracking.
Signup and view all the answers
What does the implementation stage involve?
What does the implementation stage involve?
Signup and view all the answers
The activities of software design and implementation are always interleaved.
The activities of software design and implementation are always interleaved.
Signup and view all the answers
Verification and validation aim to ensure that the software meets its specifications and user requirements.
Verification and validation aim to ensure that the software meets its specifications and user requirements.
Signup and view all the answers
Which of these is NOT a part of the verification and validation process?
Which of these is NOT a part of the verification and validation process?
Signup and view all the answers
Which of these is a commonly used Validation technique?
Which of these is a commonly used Validation technique?
Signup and view all the answers
What is the purpose of system testing?
What is the purpose of system testing?
Signup and view all the answers
What is the purpose of customer testing?
What is the purpose of customer testing?
Signup and view all the answers
In the V-model, testing is driven by a set of plans, and testers work independently from the development team.
In the V-model, testing is driven by a set of plans, and testers work independently from the development team.
Signup and view all the answers
Software is inherently flexible and can change, unlike hardware systems.
Software is inherently flexible and can change, unlike hardware systems.
Signup and view all the answers
Software development is distinct from software evolution.
Software development is distinct from software evolution.
Signup and view all the answers
What is a key reason why software evolution is so important in modern software development?
What is a key reason why software evolution is so important in modern software development?
Signup and view all the answers
Software development is not an evolutionary process.
Software development is not an evolutionary process.
Signup and view all the answers
Change is unavoidable in all large software projects.
Change is unavoidable in all large software projects.
Signup and view all the answers
Which of these is NOT a reason for change in large software projects?
Which of these is NOT a reason for change in large software projects?
Signup and view all the answers
Any software process model should be able to accommodate change effectively.
Any software process model should be able to accommodate change effectively.
Signup and view all the answers
What are the costs of change in software development?
What are the costs of change in software development?
Signup and view all the answers
What are the two main strategies for reducing rework costs?
What are the two main strategies for reducing rework costs?
Signup and view all the answers
Prototyping is useful for understanding user needs and exploring design options.
Prototyping is useful for understanding user needs and exploring design options.
Signup and view all the answers
Prototyping is only used in the requirements engineering process.
Prototyping is only used in the requirements engineering process.
Signup and view all the answers
Throw-away prototypes are typically designed for long-term use.
Throw-away prototypes are typically designed for long-term use.
Signup and view all the answers
Which of these is NOT a reason why throw-away prototypes are typically discarded?
Which of these is NOT a reason why throw-away prototypes are typically discarded?
Signup and view all the answers
What is the main advantage of incremental delivery?
What is the main advantage of incremental delivery?
Signup and view all the answers
In incremental delivery, user requirements are prioritized, and the highest priority requirements are delivered in later increments.
In incremental delivery, user requirements are prioritized, and the highest priority requirements are delivered in later increments.
Signup and view all the answers
When an increment is started, the requirements for that increment are frozen.
When an increment is started, the requirements for that increment are frozen.
Signup and view all the answers
Architectural design is not necessary before the implementation of increments.
Architectural design is not necessary before the implementation of increments.
Signup and view all the answers
One advantage of incremental models is their ability to handle change during development.
One advantage of incremental models is their ability to handle change during development.
Signup and view all the answers
With the waterfall model, an error in the requirements might only be noticed during acceptance testing.
With the waterfall model, an error in the requirements might only be noticed during acceptance testing.
Signup and view all the answers
Incremental delivery is effective at identifying requirements errors, as the error may be discovered soon after the relevant code is written.
Incremental delivery is effective at identifying requirements errors, as the error may be discovered soon after the relevant code is written.
Signup and view all the answers
Incremental delivery is easy to implement for existing systems, as it doesn't require major changes.
Incremental delivery is easy to implement for existing systems, as it doesn't require major changes.
Signup and view all the answers
Identifying common facilities is a challenge in incremental delivery, as requirements are not defined in detail until an increment is to be implemented.
Identifying common facilities is a challenge in incremental delivery, as requirements are not defined in detail until an increment is to be implemented.
Signup and view all the answers
The process of developing a specification in conjunction with the software is not compatible with most procurement models.
The process of developing a specification in conjunction with the software is not compatible with most procurement models.
Signup and view all the answers
What does process improvement mean?
What does process improvement mean?
Signup and view all the answers
What are the two main approaches to process improvement?
What are the two main approaches to process improvement?
Signup and view all the answers
Agile approaches aim to reduce process overheads and improve process management.
Agile approaches aim to reduce process overheads and improve process management.
Signup and view all the answers
Maturity-based approaches focus on reducing process overheads and promoting rapid delivery.
Maturity-based approaches focus on reducing process overheads and promoting rapid delivery.
Signup and view all the answers
What are the key elements in a process improvement cycle?
What are the key elements in a process improvement cycle?
Signup and view all the answers
Process measurements should be used to drive process improvements.
Process measurements should be used to drive process improvements.
Signup and view all the answers
What are some examples of process metrics?
What are some examples of process metrics?
Signup and view all the answers
The SEI's process maturity framework aims to help organizations assess their current maturity level and identify areas for improvement in their software engineering practices.
The SEI's process maturity framework aims to help organizations assess their current maturity level and identify areas for improvement in their software engineering practices.
Signup and view all the answers
Which of these is NOT a capability maturity level identified by the SEI?
Which of these is NOT a capability maturity level identified by the SEI?
Signup and view all the answers
The SEI maturity levels indicate how well an organization manages its software development processes, including measurement, use of best practices, and overall management.
The SEI maturity levels indicate how well an organization manages its software development processes, including measurement, use of best practices, and overall management.
Signup and view all the answers
The Rational Unified Process (RUP) is a waterfall model based on UML.
The Rational Unified Process (RUP) is a waterfall model based on UML.
Signup and view all the answers
RUP supports prototyping and incremental delivery, which are important for adapting to change.
RUP supports prototyping and incremental delivery, which are important for adapting to change.
Signup and view all the answers
The activities in RUP occur only once during development.
The activities in RUP occur only once during development.
Signup and view all the answers
Study Notes
Software Processes
- Software process models are sets of related activities involved in producing a software system.
- There's no single universal software engineering method for all software system types.
- Fundamental software engineering activities include:
- Specification: defining what the software system should do.
- Design and implementation: defining the system's structure and building it.
- Validation: confirming the software meets the customer's needs.
- Evolution: adapting the software in response to changing needs.
- Software process models are abstract representations of a process, providing descriptions from a particular perspective.
- Process descriptions often include:
- Products/deliverables: outcomes of a process activity (e.g., software architecture model).
- Roles: responsibilities of involved personnel (e.g., project manager, programmer).
- Pre- and post-conditions: statements about the state of the process before and after an activity.
Plan-driven and Agile Processes
- Plan-driven processes meticulously plan all activities in advance, measuring progress against the plan.
- Agile processes use incremental and continual planning, adapting to changing customer requirements.
- Safety-critical systems benefit from highly structured processes.
- Flexible agile processes are better suited for rapidly changing business systems.
- There aren't universally "right" or "wrong" software processes; often, the best approach combines elements of both plan-driven and agile methodologies.
Software Process Models
- Waterfall Model: A plan-driven model with separate, distinct phases of specification and development.
- Incremental Development: Specification, development, and validation happen concurrently and interleaved. Can be plan-driven or agile.
- Integration and Configuration: Building systems from existing components (COTS systems). May be plan-driven or agile.
- Most large systems incorporate elements of various models in practice.
Waterfall Model Phases
- Requirements Definition
- System and Software Design
- Implementation and Unit Testing
- Integration and System Testing
- Operation and Maintenance
- All activities must be planned and scheduled before development begins.
- Each phase's result is documented and approved ("signed off").
- The next phase begins only after the preceding phase is completed.
Waterfall Model Drawbacks
- Difficulty accommodating changes once the process is underway.
- Inflexible response to changing customer requirements.
- Suitable only for well-understood systems with limited change needs (e.g., safety-critical systems).
- Few business systems have stable requirements from start to finish.
Incremental Development Benefits
- Reduced cost of accommodating changing requirements.
- Easier for customers to provide feedback throughout the development.
- Rapid delivery of useful software to the customer.
Incremental Development Problems
- Process invisibility to management (with rapid development).
- System structures tend to degrade as new increments are added.
- Can lead to messy code.
Integration and Configuration
- Based on software reuse: integrating from existing components or applications (COTS).
- Reused elements usually need to be configured to meet specific user needs.
- Reuse is a common approach for building business systems.
Types of Reusable Software
- Standalone application systems (COTS).
- Packages of integrated objects using frameworks (.NET, J2EE).
- Web services adhering to service standards.
Advantages and Disadvantages of Reuse
- Advantages: Reduced costs and risks, faster delivery.
- Disadvantages: Requirements compromises are inevitable, loss of control over reused elements.
Process Activities
- Real software processes are interleaved sequences of technical, collaborative, and managerial activities aimed at specifying, designing, implementing, and testing a software system.
- Core process activities include specification, development, validation, and evolution.
- These activities are often organized sequentially in methodologies like Waterfall, but concurrently in Incremental methodologies.
Software Specification
- Establishing required services and constraints on the system's operation.
- Requirements engineering is the process of developing this specification.
- Mistakes during this stage have significant consequences.
- A feasibility study should be performed first to evaluate market need and technical feasibility.
- Requirements are usually presented at two levels: general statements from customers; detailed specifications for developers.
Requirement Engineering Activities
- Requirements elicitation and analysis: understanding stakeholder needs and gathering information (e.g., through interviews, observation, task analysis).
- Requirements specification: formally defining the requirements gathered during analysis.
- Requirements validation: checking the gathered requirements for realism, consistency, and completeness.
Software Design and Implementation
- Transforming system specifications into an executable system.
- Software design focuses on creating a structure that realizes the specified behavior: includes data models, and component interfaces.
- The design process is often iterative, with design steps evolving and backtracking.
- Translation (implementation): Design steps are turned into an executable program (code).
Design Inputs (to the design process)
- Platform information: existing software environment (operating system, databases, middleware).
- Requirements specification
- Data description (how the software's data structure is to be organized and used).
Design Activities
- Architectural design: defining overall system structure and component relationships.
- Database design: modelling the data structures and storage mechanisms.
- Interface design: specifying communication between software components.
- Component selection and design: choosing or developing reusable components.
System Implementation
- Developing a program or configuring existing system to execute the software.
- Programming: individual activity with no single standard process.
- Debugging: identifying and correcting faults.
Software Validation
- Verification and Validation (V&V): confirming that the software meets its specifications and customer needs.
- System testing: evaluating the system as a whole with real data and test cases.
- Testing is the most common validation approach.
Testing Stages
- Component testing: evaluating individual components in isolation.
- System testing: evaluating the entire system as a whole, including interactions between components.
- Customer testing: evaluating the system with real data used by its customers (e.g., alpha and beta testing).
Testing Phases in Plan-driven Process (V-Model)
- Testing driven by pre-formulated plans (and related activities).
- Testing occurs in parallel with the software development cycle.
Software Evolution
- Software is more adaptable than hardware.
- Adaptability to changing business needs is required to keep the software performing as desired.
- Development and maintenance are not discrete phases - instead, they operate in parallel, often as a continuous improvement cycle.
System Evolution
- Representing system evolution over its life cycle, focusing on defining requirements, assessing existing systems, proposing changes, and modifying/creating the new version.
Coping with Change (in software projects)
- Change is inherent in large software projects.
- Business changes generate needs for revised software requirements
- Technological improvements lead to opportunities for enhancement and new functionality.
Reducing Costs of Rework
- Change anticipation: Including activities in the process that predict and prepare for future adjustments.
- Change tolerance: Design the system and process to allow for adjustments at manageable costs, which often involves an incremental approach.
Software Prototyping
- Prototype: an initial version of a software system used for demonstrating concepts or validating ideas (e.g., a user interface).
- Prototyping helps anticipate potential changes and improve user understanding of the intended system, and it allows for feedback cycles during development and testing.
- Prototypes can help validate requirements, guide the design process, and plan testing efforts.
Incremental Delivery
- Delivers the system in increments, providing functional parts to users early.
- Highest-priority requirements are included in the initial increments.
- Requirements can evolve during the development cycle, with later iterations often based on feedback from earlier releases.
Incremental Delivery Advantages
- Faster delivery of value to the customer.
- Risk mitigation through stepwise delivery of smaller, testable units.
- Enhanced adaptation to changing requirements.
Incremental Delivery Disadvantages
- Challenging to apply with pre-existing systems.
- Difficulty in identifying shared functionalities needed by multiple increments.
This method can require careful consideration in the design and procurement stages of a large project.
Process Improvement
- Process improvement: Techniques to enhance existing processes to raise product quality and reduce development costs/time.
- Many software companies adopt better process management, quality assurance, and good software engineering practice to achieve higher efficiency.
- Agile approaches promote reduced overhead in the development process, while maturity approaches prioritize better process management and quality standards.
Approaches to Process Improvement
- Process Maturity Approach: Emphasizes improving organizational management practices and software engineering techniques.
- Agile Approach: Stresses iterative development, reducing overhead, and responding to evolving requirements.
Process Improvement Cycle
- Measures (of process effectiveness and efficiency).
- Analyses (to identify development bottlenecks).
- Changes (to address identified issues)
Process Measurement
- Measuring attributes of software process or product.
- Process measurements help determine the success of process improvement efforts, providing a baseline for comparison to future measures.
CMM-Based Appraisal
- Frameworks for analyzing and improving software development processes.
- Evaluating maturity through standards like ISO 9001 and SPICE which provide guidance for process assessment and improvement.
Rational Unified Process (RUP)
- A comprehensive iterative software development process.
- Hybrid approach combining elements of both Waterfall and Incremental methodologies.
- Supports incremental development within each of its phases.
RUP Workflows and Phases
- RUP Workflow: Organized sets of activities oriented around UML (Unified Modeling Language) models, including conceptual descriptions for Business Modeling, Requirements Modeling, Analysis and Design activities, Implementation, Testing, and Deployment.
- RUP Phases: iterative activities focused on delivering different levels of deliverables by phase-Inception, Elaboration, Construction, and Transition (with phases also containing many iterative development increments).
RUP Good Practices
- Iterative and incremental development with prioritized increments.
- Well-defined requirements and change management.
- Component-based architectures and visual modeling.
- Quality and standard verification.
- Effective control over software changes.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.