(ch3) rapid software development - correct answer ✔- now often the most
important requirement for software systems
--> businesses operate in fast-changing environment and it's impossible to
produce a set of stable software requirements
--> software has to evolve quickly to reflect changing business needs
- plan drive development is essential for some types of system but does not
meet these business needs
- agile development methods emerged in late 1990s whose aim was to
radically reduce the delivery time for working software systems
agile development - correct answer ✔- program specification, design and
implementation are inter-leaved
- system is developed as series of versions or increments with stakeholders
involved in version specification and evaluation
- frequent delivery of new versions for evaluation
- extensive tool support (e.g. automated testing tools) used to support
development
- minimal documentation -> focus on working code
plan driven and agile development - correct answer ✔plan-driven
- based around separate development stages with the outputs to be produced
at each of these stages planned in advance
- not necessarily waterfall model -> plan driven, incremental development is
possible
- iteration occurs within activities
agile
,- specification, design, implementation, and testing are interleaved and the
outputs from the development process are decided through a process of
negotiation during the software development process
agile methods - correct answer ✔- dissatisfaction with the overheads
involved in software design methods of the 1980s and 1990s led to the
creation of agile methods. these methods:
--> focus on the code rather than the design
--> based on iterative approach to software development
--> intended to deliver working software quickly and evolve this quickly to
meet changing requirements
- aim of agile methods is to reduce overheads in the software process (by
limiting documentation) and to be able to respond quickly to changing
requirements without excessive rework
agile manifesto - correct answer ✔- better ways of developing software by
doing it and helping others do it -> through this we come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Principles of Agile Methods - correct answer ✔-Customer involvement
--Customers should be closely involved throughout the development process.
Their role is to provide and prioritize new system requirements and to
evaluate the iterations of the system.
-Incremental delivery
--The software is developed in increments with the customer specifying the
requirements to be included in each increment.
-People not process
,--The skills of the development team should be recognized and exploited.
Team members should be left to develop their own ways of working without
prescriptive processes.
-Embrace change
--Expect the system requirements to change and so design the system to
accommodate these changes.
-Maintain simplicity
--Focus on simplicity in both the software being developed and in the
development process. Wherever possible, actively work to eliminate
complexity from the system.
agile methods applicability - correct answer ✔- product development where a
software company is developing a small or medium size product for sale
--> virtually all software products and apps are now developed using an agile
approach
- custom system development within an organization, 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
agile development techniques - extreme programming - correct answer ✔-
introduced range of agile development techniques
- XP takes extreme approach to iterative development
--> new versions may be built several times pre day
--> increments are delivered to customers every 2 weeks
--> all tests must be run for every build and the build is only accepted if tests
run successfully
XP release cycle - correct answer ✔- plan release
- develop/integrate/test software
, - release software
- evaluate system
- select user stories for this release
- break down stories to tasks
- start again/repeat
extreme programming practices - correct answer ✔- Incremental planning
--> requirements recorded on story cards and stories to be included in release
determined by time available and their relative priority. developers break these
stories into tasks
- Small releases
--> 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
- Simple design
--> enough design is carried out to meet the current requirements and no
more
- Test-first development
--> automated unit test framework is used to write tests for a new piece of
functionality before that functionality itself is implemented
- Refactoring
--> all developers are expected to refactor the code continuously as soon as
possible code improvements are found. this keeps the code simple and
maintainable
- Pair programming
--> developers work in pairs, checking each others work and providing support
- Collective ownership