System Development Lifecycles and Practices Flashcards
What is a Waterfall Approach?
Traditional approach to systems development - divided into stages that can start only once a prior stage has been completed.
Waterfall - Project Initiation - what is it?
TOR are defined, high-level investigation and estimates being. Exploration of problems and benefits versus costs of candidate solutions are presented.
Waterfall - Analysis - what is it?
Investigate, document, and assess current system. Gather and document new requirements. Reqr documentation produced and signed off.
Waterfall - Design - what is it?
Design new/enhanced business system and produce system specification.
Waterfall - Build and Test - what is it?
Technical design is performed. Business system specifications are deconstructed in units or components. The code is tested, the components brought together to form higher levels systems to be tested.
Waterfall - Implementation - what is it?
Train staff, UAT, handover.
Waterfall - Review - what is it?
Post implementation review of project and system.
What is the V-Model?
Not really SDLC but a model of testing the workflow using a waterfall style. For each development phase there is a corrensponding testing phase (business requirements, interface specification, system specification, design specification, componenet specification, source code
When should we use a waterfall model?
When there is a low degree of business change, the requirements are clearly understood, working with well understood tools.
When is waterfall not suitable?
For volatile business envrionments.
What are the advantages of Waterfall?
Safe and signed off, thorough, quality built in, easy to managed, design based, good documentation.
What are disadvantages of waterfall?
Can’t go back, lack of user involvement, no early vision of the system, difficult to add missing reqr, fosters a silo mentality.
What is an incremental or phased approach?
A method of software development where the system is designed, built, tested, and implemented incrementally until the product is finished.
What are the advantages of an Incremental/Phased Approach?
Early vision of system, earlier deliverables, reduces complexity and risk, easier to test and debug.
What are the disadvantages of an Incremental/Phased approach?
Difficult to manage, users can change their mind, may get partial solutions, additional costs of parallel implementation and regression testing.
What is Iterative (Spiral) Systems Development?
An approach that can be used when a complete set of requirements cannot be gathered at the start of the project. This allows for the requirements to be gathered iteratively.
What is a Spiral or Iterative Approach?
An approach in which the system is developed in different iterations. In each iteration design modifications are made and new functionalities are included. The dev team can learn during the development.
What are advantages of a Spiral or Iterative Approach?
The reqr evolve, it’s felixble, a lot of user involvmenet, early vision of the system, user buy in, cost can be controlled.
What are disadvantages of Spiral/Iterative Approach?
Difficult to manage, shortcuts can be taken, hard to scope, scope creep, complexity of integration testing.
What are the frameworks that support the iterative development of software?
DSDM and Unified Process.
What is DSDM?
A framework released by a consortium (AMEX, BA, Oracle) to provide discipline to Rapid Application Methods (RAD).
What is the Unified Process (Rational)?
A framework that delivers system functionality in chunks or increments leading to a fully functional system.
When should you choose a waterfall approach?
When the reqr are clear at the start, there is a single delivery, low degree of business change, many stakeholders, simple problem, good documentation and assurance.
When should you choose an Incremental approach?
Reqr are clear at start, phase delivery is essential/desirable, some business change is likely, enterprise wide or large scale dev, problems that can be broken down, good documentation and assurance.
When should you choose an interative approach?
Reqr. Are unclear, staged delivery is desired/possible, high degree of business change, few stakeholders, small scale, complex problems, have to choose a framework (DSDM or UP).
What are the different development practices?
Bespoke dev vs. COTS, Evolutionary/Agile, Prototyping, Component-Based dev.
What are the acquistions options for software?
Build or buy (bespoke vs. COTS)
What are the advantages of Bespoke?
Designed and built to meet a set of agreed reqr, not paying for unrequired features, could provide competitive advantage.
What are the disadvantages of bespoke?
Expensive, have to invest in maintenance, documentation tends to be poor.
What is the agile approach?
It’s iterative, adaptable, rapid, cooperative, quality-driven.
What are some agile principles?
Coming from the agile manifesto - these can be to satisfy the customer, welcome changing reqr, deliver frequently, work together, motivate individuals, etc..
What is evolutionary delivery?
Goes in hand with the iterative approach, it allows the business to get a new version to test quite often, in addition the users have the opportunity to set prioritities before the next version is released.
What is prototyping?
Developing a mock-up of the required product.
What sort of prototypes exist?
Paper based, screen dumps, demo software, working software.
What are the advantages of prototyping?
Users find it easier to comment on something visual - they get an early vision of the product.
What are the disadvantages of prototyping?
Requirements and design work can become confused as users might want to design the solution while the prototype is being used to gather requirements.
What are the advantages of a package (COTS)?
Cost and time, quality, documentation and training, maintenance, try before you buy.
What are disadvantages of Package (cots)?
Not 100% reqr fit, ownership issues, financial stability of vendor, lack of competitive advantage, limited legal redress, changing nature of reqr.
What is component-based development?
A component is a system element offering a predefined service. In component based development the software should be developed by gluing prefabricated componenets together.
What are the five criteria that define a component?
Multiple use, non context specific, composable with other componenets, encapsulated, a unit of indipendent deployment and versioning.