Software Engineering methodologies (Week 3-6) Flashcards
Name the 4 most relevant software engineering methodologies
- Waterfall (plan-driven process), unidirectional, one step at a time
- Agile (software developed iteratively in sprints), (SCRUM)
- Rapid Application Development (RAD)
- Spiral
Describe Plan-driven process
- All of the process activities are planned in advance
- Progress is measured against this plan
(Waterfall)
Describe Agile process
- Planning is incremental
- Easier to change the process
- Reflect changing customer requirements
SCRUM, XP
List the steps of Waterfall process
- Requirements analysis (system’s services, constraints, goals, all must be defined in details and serve as a system specification)
- System and software design (Allocate requirements to either hardware or software systems. Describing software system abstraction and their relationships.)
- Implementation (Software design realized as programs or program units)
- Unit testing (Verifying each unit meets its specifications)
- Integration, system testing (Programs and units integrated, tested as a complete system. Requirements met. Deliver to customer)
- Operation, Maintenance (System in practical use. Correction errors, improving system units, meeting new requirements)
When is documentation produced for waterfall?
Produced at each phase
What are the advantages of waterfall?
- Process visibility
- Processes are well organised
- Quality and cost are identifiable
- Simple and easy to use
What are the disadvantages of waterfall?
- You have to commit early
- Responding to change is difficult
- Long time to deliver
- Little/No feedback from customers
What is evolutionary development?
In principle the same as waterfall, the difference is all processes are concurrent.
Software is not developed in one go, rather there are a series of small increment leading to the final product
Customers are involved
What are the advantages of evolutionary/iterative development?
- Customers get to try out early increments, gain experience to inform requirements for later increments
- Customers can gain value from increments ( dont have to wait until the software is fully finished)
- Easy to incorporate changes into the system
- Highest-priority services delivered first. Most important features receive most testing.
- Easier to get customer feedback
- Rapid delivery, not all functionality is needed
What are the disadvantages of evolutionary/iterative development?
- Systems require basic facilities used by different parts of system; hard to identify common facilities needed by all increments
- The process is not visible. Managers need regular deliverables to measure progress
- Regular change corrupts software structure
- Incorporating further changes increases difficulty and costs.
What is reuse-oriented software engineering?
It is a methodology that utilizes already written code in a program it wasn’t written for.
What are the characteristics of rapid software development?
- The process of specification, design and implementation are interleaved
- No detailed system specification
- Design documentation minimized
- Requirements document only defines most important characteristics
- System developed in a series of versions
- End-users, stakeholders involved in specifying, evaluating each version
- End-users may propose to change requirements in later versions
What are the principles of agile methods?
- Customer involvement: customer closely involved, they provide and prioritize new requirements, evaluate the system
- Incremental delivery: software developed in increments; customer specifying requirements to be included in each increment
- People not process: skills of team recognised and exploited. Team members left to develop their own ways of working without prescriptive processes
- Embrace change: expect system requirements to change, design system to accommodate changes
- Maintain simplicity: focus on simplicity. When possible, eliminate complexity from system
What are the disadvantages of agile?
- Lots of time with clients(less time for development)
- Clients may not be willing and able to spend time with development team
- No long term planning
- Prioritising change can be difficult: Different stakeholders may give different priorities
Contracts: customers pay for time required for development, rather than the development of a specific set of requirements
What is Extreme programming? XP
Agile process with the focus on code rather than design or documentation.
XP takes an extreme approach to iterative development, new versions can be built several times per day
- increments are delivered to customer every 2 weeks
- all test must be run for every build (build is only accepted if tests run successfully)
How are requirements expressed in XP?
They are expressed as stories, these stories are written on cards(development team breaks them into tasks, tasks are the basis of schedule and cost estimates)
- Customer chooses the stories for inclusion in the next release based on priorities and schedule estimates