Software Development Process Flashcards
What is a software development process?
•A structured set of activities required to develop a software system
•Many different software processes but all involve:
–Specification–defining what the system should do;
–Design and implementation–defining the organization of the system and implementing the system;
–Validation–checking that it does what the customer wants;
–Evolution–changing the system in response to changing customer needs.
•A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective.
What are some typical development process activities?
- Requirements engineering
- System analysis
- High-level design/architecture
- Low-level design
- Coding
- Integration
- Design and code reviews
- Testing
- Maintenance
- Project management
- Configuration management
What is the plan-driven process and what is the agile process?
- Plan-driven processes are processes where all of the process activities are planned in advance and progress is measured against this plan.
- In agile processes, planning is incremental and it is easier to change the process to reflect changing customer requirements.
- In practice, most practical processes include elements of both plan-driven and agile approaches.
- There are no right or wrong software processes.
What are lifecycle models?
- Combine the development processes and activities in different ways (different order, once or repeated …) to model the life cycle of a project
- By making models of the life cycle of successful software projects can help us design better approaches to plan the life cycle of future projects
- There are several ‘generic’ life cycle models that are often used or used as a basis for the design of custom lifecycle models
What are some generic software process models?
•The waterfall model
–Plan-driven model. Separate and distinct phases of specification and development.
•Incremental development (Evolutionary development)
–Specification, development and validation are interleaved. May be plan-driven or agile.
•Reuse-oriented software engineering (Component-based software engineering)
–The system is assembled from existing components.
What is a process pattern?
–describes a process-related problem that is encountered during software engineering work,
–identifies the environment in which the problem has been encountered, and
–suggests one or more proven solutions to the problem.
Stated in more general terms, a process pattern provides you with a template[Amb98]—a consistent method for describing problem solutions within the context of the software process.
What are some process pattern types?
- Stage patterns—defines a problem associated with a framework activity for the process.
- Task patterns—defines a problem associated with a software engineering action or work task and relevant to successful software engineering practice
- Phase patterns—define the sequence of framework activities that occur with the process, even when the overall flow of activities is iterative in nature.
What are some process assessment and improvement techniques?
- Standard CMMI Assessment Method for Process Improvement (SCAMPI) —provides a five step process assessment model that incorporates five phases: initiating, diagnosing, establishing, acting and learning.
- CMM-Based Appraisal for Internal Process Improvement (CBA IPI)—provides a diagnostic technique for assessing the relative maturity of a software organization; uses the SEI CMM as the basis for the assessment [Dun01]
- SPICE—TheSPICE (ISO/IEC15504) standard defines a set of requirements for software process assessment. The intent of the standard is to assist organizations in developing an objective evaluation of the efficacy of any defined software process. [ISO08]
- ISO 9001:2000 for Software —a generic standard that applies to any organization that wants to improve the overall quality of the products, systems, or services that it provides. Therefore, the standard is directly applicable to software organizations and companies. [Ant06]
What is software lifecycle?
•Sequence of processes completed as a software project moves from inception to retirement
•At beginning of project development, choose
–Software development paradigm
–Software development process model
•Define the order/manner in which software life cycle processes are performed
•Then you are ready to start software specification, design, implementation, validation
What process activities are there?
- A) Software specification
- B) Software design and implementation
- C) Software validation
- D) Software evolution
What is software specification?
The process of establishing what services are required and the constraints on the system’s operation and development.
What are the steps in the requirement engineering process?
–Feasibility study
•Is it technically and financially feasible to build the system?
–Requirements elicitation and analysis
•What do the system stakeholders require or expect from the system?
–Requirements specification
•Defining the requirements in detail
–Requirements validation
•Checking the validity of the requirements
What is software design and implementation?
•The process of converting the system specification into an executable system.
•Software design
–Design a software structure that realises the specification;
•Implementation
–Translate this structure into an executable program;
•The activities of design and implementation are closely related and may be inter-leaved.
What is a structured method in designing a software system?
•Systematic approaches to developing a software design. •The design is usually documented as a set of graphical models. •Possible models –Object model; –Sequence model; –State transition model; –Structural model; –Data-flow model.
What is software validation?
- Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer.
- Involves checking and review processes and system testing.
- System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system.
- Testing is the most commonly used V & V activity.
What are the testing stages?
•Component or unit testing
–Individual components are tested independently;
–Components may be functions or objects or coherent groupings of these entities.
•System testing
–Testing of the system as a whole. Testing of emergent properties is particularly important.
•Acceptance testing
–Testing with customer data to check that the system meets the customer’s needs.
What is software evolution?
- Software is inherently flexible and can change.
- As requirements change through changing business circumstances, the software that supports the business must also evolve and change.
- Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new.