40
Software Development Lifecycles Activities, Phases and Approaches to Software Development

Software Development Lifecycles Activities, Phases and Approaches to Software Development

  • View
    216

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Software Development Lifecycles Activities, Phases and Approaches to Software Development

Software Development Lifecycles

Activities, Phases and Approaches to Software

Development

Page 2: 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

Page 3: Software Development Lifecycles Activities, Phases and Approaches to Software 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).

Page 4: Software Development Lifecycles Activities, Phases and Approaches to Software Development

Assessing Risk

• Potential risks in the systems development process should be identified and assessed at the outset and throughout the process.

Page 5: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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)

Page 6: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

-

Page 7: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 8: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 9: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 10: Software Development Lifecycles Activities, Phases and Approaches to Software Development

• 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.

Page 11: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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.

Page 12: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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?

Page 13: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 14: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 15: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 16: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 17: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 18: Software Development Lifecycles Activities, Phases and Approaches to Software Development

Implementation and Changeover

• - ensure hardware and network infrastructure in place; test system ; educate and train staff

• Working system

• Signed off, operational system

• Change management

Page 19: Software Development Lifecycles Activities, Phases and Approaches to Software Development

Review and Maintenance

• Fix bugs, oversights

• Add new features

Post implementation review

Page 20: Software Development Lifecycles Activities, Phases and Approaches to Software Development

What could go wrong at each stage???

Page 21: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 22: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 23: Software Development Lifecycles Activities, Phases and Approaches to Software Development

Prototyping Life Cycle

Evaluate

Specify

Construct

Perform initial analysis

Define objectives

Prototype completed

Page 24: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 25: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 26: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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)

Page 27: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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

Page 28: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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. “

Page 29: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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.

Page 30: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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.

Page 31: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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.

Page 33: Software Development Lifecycles Activities, Phases and Approaches to Software Development

Example -Scrum

Page 34: Software Development Lifecycles Activities, Phases and Approaches to Software Development

• 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.

Page 35: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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.

Page 36: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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.

Page 37: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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.

Page 38: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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.

Page 39: Software Development Lifecycles Activities, Phases and Approaches to Software Development

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.

Page 40: Software Development Lifecycles Activities, Phases and Approaches to Software Development

Software development needs…

• good management

• planning,

• communication,

• Teamwork

• risk assessment

• early user involvement