Main Flashcards
(171 cards)
In traditional software engineering you design software so that changes can easily be implemented.
Does Extreme programming (XP) also concern itself about that?
No it is often wasted effort.
Accept that you should reorganize the software if changes actually occur.
In extreme programming. When should you refactor code?
All developers are expected to refactor the code continously as soon as possible code improvements are found.
This keeps the code simple and maintainable.
What are the advantages of test-first development?
The developers have to thoughoutly understand the specifications.
- This avoids ambiguity
- Also TFD avoids test lag
What is test lag?
Features are implemented faster than they can be tested.
The implementation gets further and further ahead of the testing and there is a tendency to skip tests, so that the development schedule can be maintained.
What is a Software Process?
The entire process of creating software:
Early requirements –> development –> deployment –> decommision
All software processes involve:
- Specification
- Design and Implementation
- Validation
- Evolution
What are the two main categories of software products?
- Generic products:
- Stand-alone systems that are marketed and sold to any customer who wishes to buy them
- The sofware developer makes the decisions on software changes.
- Customized products:
- Software that is commisioned by a specific customer to meet their own needs
- The customer makes the decisions on software changes.
Essential attributes of good software: Maintainability
Software should be written in such a way so that it can evolve to meet the changing needs of customers.
This is a critical attribute because software change is an inevitable requirement of a changing business environment.
Essential attributes of good software: Dependability and security
Software dependability includes a range of characteristics:
- Reliability
- Security
- Safety
Dependable software should not cause physical or economic damage in the event of system failure.
Essential attributes of good software: Efficiency
Software should not make wasteful use of system resources such as memory and processor cycles.
Efficiency therefore includes:
- Responsiveness
- Processing time
- Memory utilisation
- etc.
Essential attributes of good software: Acceptability
Software must be acceptable to the type of users for which it is designed.
This means that it must be understandable, usable and compatible with other systems that they use.
The four software process activities: Specification
Where the customers and engineers define the software that is to be produced and the constraints on its operation.
The four software process activities: Design and Implementation
Where the software is designed and programmed.
The four software process activities: Validation
Where the software is checked to ensure that it is what the customer requires.
The four software process activities: Evolution
Where the software is modified to reflect changing customer and market requirements.
Software process model: The waterfall model
Separate and distinct phases of specification and development.
Plan-driven model.
Software process model: Incremental development
Specification, development and validation are interleaved. May be plan-driven or agile.
Software process model: Integration and configuration
The system is assembled from existing configurable components. May be plan-driven or agile.
Name the phases of the waterfall model
Name the phases of incremental development
Definition: Verification and validation (V & V)
- Verification: To show that the system conforms to its specification
- Validation: To show that the system meets the expectations of the system customer
Name the three different kinds of testing
- Component 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.
- Customer testing
- Testing with customer data to check that the system meets the customer’s needs.
What is a software prototype and when is it used?
- A prototype is an initial version of a system used to demonstrate concepts and try out design options.
- A prototype can be used in:
- The requirements engineering process to help with requirements elicitation and validation;
- In design processes to explore options and develop a UI design;
- In the testing process to run back-to-back tests.
Explain incremental delivery
Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.
Name the principles of agile methods
- Customer involvement
- Incremental delivery
- People not process
- Embrace change
- Maintain simplicity