Week 2 Flashcards
Software process?
A structured set of activities required to develop a software system.
Specification: defining what the system should do.
Design and implementation: defining the organisation of the system.
Validation: checking that it does what the customer wants.
Evolution: changing the system in response to changing customer needs.
Plan-driven vs agile processes?
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. (Iterative, focus on faster delivery, and considers documentation as overhead).
Practical processes include elements of both.
Process models?
Abstract representations of software processes.
Software specification?
The process of establishing what services are required and the constraints on the system’s operation and development.
Software requirement engineering process involves: feasibility study, requirements elicitation and analysis, requirements specification and requirements validation.
Software design and implementation?
The process of converting the system specification into an executable system.
Design activities: architectural design, interface design, component design, and database design.
The activities of design and implementation are closely related and may be inter-leaved.
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.
Executing the system with test cases.
Software testing types?
Component testing: Individual components are tested independently; components may be functions or objects or groupings of these entities.
System testing: testing of the system as a whole. Testing of emergent properties is particularly important.
Customer testing: testing with customer data to check that the system meets the customer’s needs.
Software evolution?
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.
Waterfall model?
Plan-driven model. Separate and distinct phases of specification and development.
- Requirements definition
- System and software design
- Implementation and unit testing
- Integration and system testing
- Operation and maintenance
Problems with waterfall model?
Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.
Therefore, this model is best used when requirements are well-understood and changes will be fairly limited.
Mostly used for large systems engineering projects where a system is developed at several sites.
Incremental development and pros/cons?
Specification, development and validation are interleaved. May be plan-driven or agile.
Benefits:
- More rapid delivery and deployment to the customer is possible.
- Easier to get customer feedback on the development work that has been done.
- Customers can comment on demonstrations of the software and see how much has been implemented.
- Cost of accommodating changing customer requirements is reduced.
Disadvantages:
- The process is not visible. Managers need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system.
- System structure tends to decrease as new increments are added.
- Scope creep
Integration and configuration and pros/cons?
The system is assembled from existing configurable components. May be plan-driven or agile.
Sometimes called COTS: Commercial-off-the-shelf systems.
Benefits:
- Reduced cost and risks
- Faster delivery and deployment
Disadvantages:
- Requirements compromises are inevitable so system may not meet real needs of users.
- Loss of control over evolution of reused system elements.
Boehm’s spiral model?
Incremental, risk driver process framework.
Top-left Quadrant: Determine objectives, alternatives, constraints.
Top-right Quadrant: Evaluate alternatives, identify, resolve risks.
Bottom-right Quadrant: Develop, verify next level product.
Bottom-left Quadrant: plan next phases.
Objective setting: specific objectives for that phase of the project are defined.
Risk assessment and reduction: for each of the identified project risks, a detailed analysis is carried out.
Development and validation: after risk evaluation, a develop,em t model for the system is chosen.
Planning: the project is reviewed and a decision made whether to continue with a further loop of the spiral.
Boehm’s spiral model pros/cons?
Benefits:
- Risk management is part of the lifecycle.
- Iterations involve the customer before the product is completed.
- Reduces chances of misunderstandings.
- Project monitoring easy.
- Schedule & cost more realistic over time.
Disadvantages:
- Iterations 6 to 24 months long (lots of time for customers to change their mind).
- Lots of documentation per iteration.
- Lots of rules to follow hard for whole project.
- Cost of process is high.
- Hard to meet budget and schedule targets.
When is the Agile method applicable?
Product development where a software company is developing a small or medium-sized product for scale.
Custom system development within an organisation, where there is a clear commitment from the customer to become involved in the development process and where there are few external rules and regulations that affect the software.