what is the software process?
a structured set of activities required to develop a software system
what are 3 software process models?
waterfall model
prototyping model
extreme programming XP - part of agile
what are the stages in the waterfall model?
what are the benefits of the waterfall model?
Easy to understand, easy to use
Provides structure to inexperienced staff
Milestones are well understood
Sets requirements stability
Good for management control (plan, staff, track)
what are the cons of the waterfall model?
All requirements must be known up-front
Deliverables created for each phase are considered frozen – inhibits flexibility
Integration is one “big bang” at the end
Little opportunity for customer to preview the system
Until it may be too late
The Software Crisis existed despite the Waterfall model
what is the software specification stage?
process of establishing what services are required and the constraints on the system’s operation and development
what happens during the software specification stage?
requirements engineering process
Requirements elicitation and analysis
Requirements specification
Requirements validation
Using natural language is often problematic
what is the software design and implementation stage?
the process of converting system specification into executable system
what happens during software design?
design a software structure that realises the specification
what happens during software implementation?
translate the designed structure structure into an executable program such as Java
how related are the design and implementation activities?
The activities of design and implementation are closely related and may be inter-leaved e.g. Generating code automatically from UML
what is the software testing stage?
intended to show the system conforms to specification and meets requirements of system customer
what happens during the software testing?
system testing is carried out which involves executing the system with test cases derived from the specification of the real data to be processed by the system
what is the software evolution stage?
over time the system will change
infant mortality = high failure rate at the start of release
normal life = system works well and failure rate plateaus
wear-out = problems resurface and failure rate rises again
what is the software maintenance stage?
consistently maintain system to work how we expect it, fix bugs and add enhancements
what are the 2 types of prototyping?
throwaway
evolutionary
what is the throwaway/ rapid/ closed-ended prototyping?
Creation of a model that will be discarded rather than becoming part of the final delivered software
After preliminary requirements gathering, used to visually show the users what their requirements may look like when implemented
Focus is on quickly developing the model
Not on good programming practices
Can be messy
what are the steps in throwaway prototyping?
Write preliminary requirements
Design the prototype
User uses the prototype
Specifies/suggests new requirements
Repeat if necessary
Use the product
Then discard it
what is the evolutionary prototyping model?
Developers build a prototype during the requirements phase
Prototype is evaluated by end users
Users give corrective feedback
Developers further refine the prototype
When the user is satisfied, the prototype code is brought up to the standards needed for a final product
when is it best to use prototyping?
Most beneficial for systems that will have many interactions with end users (use cases) as the greater the interaction between the computer and the user, the greater the benefit of building a quick system for the user to use
good for designing human-computer interfaces
what is the difference between the risk curve for prototyping method and waterfall method?
prototyping has greatly reduces the risk early on
waterfall has a higher risk which gradually goes down
why is it good to use multiple iterations rather than 1 iteration?
requirements can evolve based on business circumstances and the software needs to support the business and evolve too
multiple iterations can respond better to change
what practices are used during extreme programming?
incremental planning
small releases
simple design
test first design
refactoring
pair programming
collective ownership
continuous integration
sustainable pace
on-site customer
what is the incremental planning pinciple?
Requirements are recorded on Story Cards and the Stories to be included in a release are determined by the time available and their relative priority. The developers break these Stories into development Tasks.
what is the small releases principle?
the minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add functionality to the first release.
what is the simple design principle?
Enough design is carried out to meet the current requirements and no more.
what is the test first design principle?
An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented.
what is the refactoring principle?
All developers are expected to refactor the code continuously as soon as possible code improvements are found. This keeps the code simple and maintainable.
what is the pair programming principle?
Developers work in pairs, checking each others work and providing the support to always do a good job.
what is the collective ownership principle?
The pairs of developers work on all areas of the system, so that no islands of expertise develop and all the developers own all the code. Anyone can change anything.
what is the continuous integration principle?
As soon as work on a task is complete it is integrated into the whole system. After any such integration, all the unit tests in the system must pass.
what is the sustainable pace principle?
Large amounts of over-time are not considered acceptable as the net effect is often to reduce code quality and medium term productivity
what is the on-site customer principle?
A representative of the end-user of the system (the Customer) should be available full time for the use of the XP team. In an extreme programming process, the customer is a member of the development team and is responsible for bringing system requirements to the team for implementation