Software Development Lifecycles Activities, Phases and Approaches to Software Development.
-
date post
20-Dec-2015 -
Category
Documents
-
view
219 -
download
1
Transcript of Software Development Lifecycles Activities, Phases and Approaches to Software Development.
Software Development Lifecycles
Activities, Phases and Approaches to Software
Development
Outline• What does developing quality software
require – an engineering approach.
• What are the main activities and phases in developing quality software?
• What are the different ways in which these can be carried out?
– Waterfall Model– Prototyping– Unified Development Process – Object oriented design– Agile development
An engineering approach• Enhance and continuously improve the quality of
the software development process.• Software needs to be (among other things)
– Correct – Reliable– Maintainable– Extensible
• To improve: learn from what you do and apply what you learn(reflexivity).
Assessing Risk
• Potential risks in the systems development process should be identified and assessed at the outset and throughout the process.
Developing software : Questions and activities
• Why? – Problem statement /feasibility study/plan• Who? Where? What? – Gathering/analysing
Requirements- determine scope of system.• How? – Systems design. Software architecture• Implement – select, code and test or put into
practice• Does it work? – testing, review• Maintain and update
Abstraction (generalisation, simplification) & Refinement (working out the detail)
Phases in Software Development
Planning• Understanding why an information system should be built, whether or not
it is feasible, and determining how the project team will go about building it.
Analysis• Who will use the system?, What the system will do?, Where and when the
system will be used.• Analysis strategy, requirements gathering, building analysis models of the
system -> system proposal
Design• How the system will operate in terms of hardware, software, and network
infrastructure, user interface, forms and reports, software, databases, files needed. Software architecture
Implementation construction, testing installation, maintenance/support plan
-
Methodologies
• A methodology is a formalised approach to implementing the software development lifecycle.
• They provide lists of steps and deliverables and use tools and modelling languages.
• Each has its own strengths and weaknesses
Methodology= approach to software development + a set of techniques and notations + a lifecycle model to structure the development process + a unifying set of procedures and philosophy
Lifecycle Models/Development Approaches
• Traditional systems/software development lifecycle (waterfall model) –phases in sequence with detailed deliverables e.g. using SSADM
• Prototyping• Spiral model • Rapid Application Development – use special techniques
and computer tools to speed up the process e.g. CASE ,4GLs
• UDP – Unified development Process – uses UML, object oriented development
• Agile/Lean, XP
Example: Phases in the Waterfall Model
Systems (requirements) analysis
Systems Design
System Build ( purchase, code, test..)
Feasibility
Review and Maintenance
Initiation
Implementation and changeover (acceptance testing)
Planning
Analysis
Design
Implementation
• Note that the stages detailed here are key activities in business software development.
• In the Waterfall approach one stage had to be completed before the next one began.
• Other methods emphasise different orderings in the way things are done.
Initiation• -startup phase in response to
business/organisational problem, opportunity or some perceived need.
• Creative thought and/or systematic evaluation of information system needs
Idea for the initiation of a new information system.
Feasibility Assessment
• Idea for the initiation of a new information system
• Feasibility report : Business Case for System
• Is the system technically feasible? Performance, availability, reliability, data integration, quality
• Is it economically feasible? – cost/benefit analysis, total cost of ownership
• Is it operationally and organisationally feasible? – how do users existing skill-sets, attitudes amd work patterns affect the system?
Systems Analysis
• capture of requirements from talking to/ observing users and other information sources such as existing documents.
• Detailed requirements specification showing system functions and non-functional requirements. Uses diagrams showing information flow and processes that are required.– Features– Scope– Users– System performance standards– Environment requirements e.g. hardware
• Example notation : Use Case Diagrams
Systems Analysis
• need to understand how the current information system works and gather information on stakeholders and business processes
• A business process exists when an input of some kind is transformed in such a way that an output is produced.
• A stakeholder is someone who has an interest in the system
1. Requirements Gathering/ Fact finding– Interviewing– Questionnaires– Existing Documentation – forms, reports etc.
2. Documenting facts3. Verification
Problems during Analysis
• Ability of users/clients to clearly express needs• Awareness of needs/problems• Multiple interpretation of requirements• Bias• Complexity• Ambiguity• Potential for misinterpretation• Need Clear communication
Systems Design
• Defines how the system will work in key areas Detailed design specifications
• Systems design activities– Database design/ Choose dbms– Software architecture, detailed software design– User Interface design :Decide on methods of system navigation,
Screen design– General standards for printed report production– Data capture requirements– Data storage requirements– Establish security standards
• Detailed design results in a blueprint for individual modules
System Build
• Creation of software by programmers. Involves writing and testing code & constructing the database
OR buying and possibly customising software
• Integrating new software with existing systems
• Working Software, User guides, system documentation
Implementation and Changeover
• - ensure hardware and network infrastructure in place; test system ; educate and train staff
• Working system
• Signed off, operational system
• Change management
Review and Maintenance
• Fix bugs, oversights
• Add new features
Post implementation review
What could go wrong at each stage???
What can go wrong in each phase?
Systems (requirements) analysis
Systems Design
System Build
Feasibility
Review and Maintenance
Initiation
Implementation and changeover
System not feasible
Change in requirements
Requirements unclear or cannot be met
Design errors/oversights
System errors discovered
Critique of Waterfall Method• Real projects rarely follow a simple sequential lifecycle. • Project phases overlap and phases are repeated.
Why?• Gaps in analysis become evident in design, construction, testing• Time lapse and changing requirements• Respond to changes in requirements and technology• User feedback needed
Advantages of Waterfall SDLC• Tasks in a stage assigned to specialised teams• Specific deliverables at the end of each stage and evaluation of
progress can also be made.• Can be good for managing large projects with high levels of risk
Prototyping Life Cycle
Evaluate
Specify
Construct
Perform initial analysis
Define objectives
Prototype completed
Critique of Prototyping• Client might want delivery soon and system
needs to be better engineered• Diverts attention away from functional issues• Requires user involvement and careful decision-
makingAdvantages of Prototyping• Including the user at an early stage eliminates
misunderstanding• Identifies what is missed• Interface difficulties established• Feasibility and usefulness can be tested
Unified Software Development Process (Jacobson et al 1999)
• Iterative and incremental lifecycle• Small systems grow incrementally• Uses UML as a modelling language
PHASES... may involve a range of activities or workflows
1. Inception – determine scope and purpose (planning)
2. Elaboration – requirements capture and system structure (analysis and design)
3. Construction – build the system
4. Transition- product installation and rollout
Each phase in UDP can involve particular tasks or workflows ..
Engineering workflows
• Business modelling• Requirements• Analysis• Design• Implementation• Testing• Deployment
Support workflows
• Project Management• Configuration and
Change management• Environment (acquiring
and installing tools e.g. A Software development environment like visual studio or a CASE tool)
Object Oriented Analysis and design
• Methodology= approach to software development + a set of techniques and notations + a lifecycle model to structure the development process and a unifying set of procedures and philosophy
• Object oriented provides a mechanism for mapping from real-world problems -> abstractions
• Provides conceptual structures to model complex information systems
• UML provides a set of techniques and notations
Agile Software Development
• Addresses need to respond to change and develop software that is easy to change
“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. “
Agile Manifesto Principles
• Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
• Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
• Business people and developers must work together daily throughout the project.
• Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
Agile Manifesto Principles• The most efficient and effective method of
conveying information to and within a development team is face-to-face conversation.
• Working software is the primary measure of progress.
• Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Agile Manifesto Principles
• Continuous attention to technical excellence and good design enhances agility.
• Simplicity--the art of maximizing the amount of work not done--is essential.
• The best architectures, requirements, and designs emerge from self-organizing teams.
• At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Example -Scrum
• Agile works well for small projects and highly motivated, stable and experienced teams of 10 or less members.
• XP needs discipline or projects become unfocussed and chaotic
• Large systems need more documentation
• Business users need to give time for regular input.
Games Lifecycle• Pre-production or design phase is a
planning phase of the project focused on idea and concept development and production of initial design documents
• Game designer usually produces initial game proposal document, that contains the concept, gameplay, feature list, setting and story, target audience, requirements and schedule, staff and budget estimates.
Game design document • design document describes the game's
concept and major gameplay elements in detail. It may also include preliminary sketches of various aspects of the game. Design document is sometimes accompanied by prototypes of some sections of the game.
Game development lifecycle
Game design document provides the artistic vision of the game
Software design reduces the features to a set of software requirements and says how these can be implemented.
Game development requires flexibility so that the team can incorporate lessons learned into a continuous effort of quality improvement.
Prototyping
• Prototyping allows programmers and game designers to experiment with different algorithms and usability scenarios for a game and help determine requirements.
• Prototyping may also take place during active development to test new ideas as the game emerges.
Testing
• Testing starts once anything is playable and is vital for quality assurance. Depending on the development method being used it may take different forms. When changes are made it is imperative to ensure that everything is still working.
• A disciplined and engineering approach to game development makes quality assurance easier.
Software development needs…
• good management
• planning,
• communication,
• Teamwork
• risk assessment
• early user involvement