software development lifecycles activities, phases and approaches to software development

Post on 20-Dec-2015

218 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related