IV. Software Lifecycles



Similar documents
Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

To introduce software process models To describe three generic process models and when they may be used

Modelli di sviluppo software. Enrico Giunchiglia

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

Software Processes. Coherent sets of activities for specifying, designing, implementing and testing software systems

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

General Problem Solving Model. Software Development Methodology. Chapter 2A

Software Engineering. Objectives. Designing, building and maintaining large software systems

Foundations of software engineering

Objectives. The software process. Basic software process Models. Waterfall model. Software Processes

Software Life Cycle Processes

The software process. Generic software process models. Waterfall model. Software Development Methods. Bayu Adhi Tama, ST., MTI.

Software Processes. Topics covered

SE464/CS446/ECE452 Software Life-Cycle and Process Models. Instructor: Krzysztof Czarnecki

Chapter 2 Software Processes

Dependable (Safe/Reliable) Systems. ARO Reliability Workshop Software Intensive Systems

Software Engineering. Software Engineering. Software Costs

Lecture 3 Software Development Processes

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

Unit 1 Learning Objectives

Software Development Life Cycle (SDLC)

(Refer Slide Time: 01:52)

Software Engineering. What is a system?

Unit I. Introduction

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

Plan-Driven Methodologies

Chapter 3. Software Processes

What is a life cycle model?

Introduction to Systems Analysis and Design

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

Karunya University Dept. of Information Technology

CS4507 Advanced Software Engineering

Software Production and Lifecycle Models

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

Process Models and Metrics

Software Engineering Question Bank

Information Systems Analysis and Design CSC340. XXIV. Other Phases

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

Classical Software Life Cycle Models

Lecture Objectives. Software Life Cycle. Software Engineering Layers. Software Process. Common Process Framework. Umbrella Activities

How To Develop Software

A Capability Maturity Model (CMM)

Assuming the Role of Systems Analyst & Analysis Alternatives

Software Process. Process: A sequence of activities, subject to constraints on resources, that produce an intended output of some kind.

SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

Project management. Organizing, planning and scheduling software projects

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

Information Systems Development Process (Software Development Life Cycle)

Information Systems Analysis and Design CSC340. I. Introduction

6. Software Lifecycle Models. A software lifecycle model is a standardised format for planning organising, and running a new development project.

Object-Oriented Systems Analysis and Design

Design of Enterprise Systems

Introduction to Software Project Management. CITS3220 Software Requirements & Project Management

SOFTWARE DEVELOPMENT PLAN

Principles of Software Engineering: Software Methodologies. COSI 120b, Spring 2005

Surveying and evaluating tools for managing processes for software intensive systems

Establishing Great Software Development Process(es) for Your Organization. By Dale Mayes

I219 Software Design Methodology

Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Components Based Design and Development. Unit 2: Software Engineering Quick Overview

11 Tips to make the requirements definition process more effective and results more usable

How To Design An Information System

REQUIREMENTS SPECIFICATION AND MANAGEMENT. Requirements Analysis and Specification

Iterative Project Management 1

Fundamentals of Information Systems, Fifth Edition. Chapter 8 Systems Development

CHAPTER. Software Process Models

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

IT3205: Fundamentals of Software Engineering (Compulsory)

Roadmap. Software Engineering. Software Engineering. Project Life Cycle. Database. Project Lifecycle

A Process Model for Software Architecture

Chapter 10 Practical Database Design Methodology and Use of UML Diagrams

Project management. Organizing, planning and scheduling software projects. Objectives. Chapter 3. Chapter 3 Project Management. Learning Objective

Requirements Analysis Concepts & Principles. Instructor: Dr. Jerry Gao

Software Life Cycle. Management of what to do in what order

Requirements Engineering Process

CS 487. Week 8. Reference: 1. Software engineering, roger s. pressman. Reading: 1. Ian Sommerville, Chapter 3. Objective:

Software Development Life Cycle Models - Process Models. Week 2, Session 1

SOFTWARE PROCESS MODELS

What is BPM? Software tools enabling BPM

Sistemi ICT per il Business Networking

Advanced Software Engineering. Software Development Processes

Software Development Methodologies

Software Process and Models

Acknowledgement. Software Engineering. CS 3141: Team Software Project Introduction

ASSESSMENT OF SOFTWARE PROCESS MODELS

Requirements Management

Software Development Processes. Software Life-Cycle Models

Outline. Definitions. Course schedule

Project Management Planning

Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur

A system is a set of integrated components interacting with each other to serve a common purpose.

Transcription:

IV. Software Lifecycles Software processes and lifecycles Relative costs of lifecycle phases Examples of lifecycles and processes Process maturity scale Information system development lifecycle Lifecycle phases 2003 Giorgini Lifecycles -- 1 The Software System Lifecycle A software process is a partially ordered collection of actions, carried out by one or more software engineers, software users, or other software systems. The software system lifecycle is a software process by which a software system is developed, tested, installed and maintained throughout its useful history. The concept of software lifecycle is a useful project management tool. A lifecycle consists of phases, each of which is a software process. Think of lifecycles as coarse-grain software processes. There is a lot of work on fine-grain software processes, such as fixing a bug, extending a module, testing a module, etc. We focus here on information system development lifecycles 2003 Giorgini Lifecycles -- 2 Page 1

The Software Lifecycle For large software systems, involving >10K lines of code (LOC), the breakdown of costs between different phases is as follows: Requirements Analysis 5% Design 10% Programming-in in-the-small 15% Integration 10% Maintenance and Evolution 60% The breakdown of costs per phase for small software systems (<5K LOC) has as follows: Specification 10% Decomposition 20% Coding 20% Optimization 15% Testing 25% Validation 10% Systems analysis and design more important than coding! 2003 Giorgini Lifecycles -- 3 What is Described by a Lifecycle? The lifecycle describes the temporal, causal and I/O relationships between different lifecycle phases The lifecycle concept includes the concept of feedback (returning to a previous phase) as well as moving forward to the next phase In the past, the lifecycle concept was applied to the management of complex systems that had some sort of physical hardware as their end product, e.g., missiles, communication networks, spacecraft, etc. However, for hardware systems there is a tangible end product that can be measured and observed,... It is not as easy to measure and observe the results of information systems analysis and design 2003 Giorgini Lifecycles -- 4 Page 2

Lifecycle Models History of lifecycle models Stage-wise (Benington, 1956) Waterfall (Royce, 1970) Transformational, automatic (Balzer, 1973; Balzer, Cheatham and Turner, 1983) Evolutionary (Basili & Turner, 1975) Transformational, specification to implementation (Lehman, Stenning and Turski, 1984) Spiral (Boehm, 1986) Benefits of lifecycle models Process awareness and understanding Order of global activities Improvement in product quality Reduction of software costs Deficiencies of lifecycle models Too coarse-grained -- they hide important process detail 2003 Giorgini Lifecycles -- 5 The Waterfall Lifecycle Model System reqs System design Software reqs Preliminary design Detailed design Coding & testing Integration testing System testing 2003 Giorgini Lifecycles -- 6 Page 3

Waterfall Life Cycle Deliverables 2003 Giorgini Lifecycles -- 7 Criticisms of the Waterfall Life Cycle Model Advantages The tasks in a particular stage may be assigned to specialized teams; The progress of the project can be evaluated at the end of each phase and an assessment made as to whether the project should proceed; Criticisms Inflexible partitioning of the project into distinct stages -- real projects rarely follow it! Iterations are inevitable; It may take too long; Difficult to respond to changing customer requirements. Generally, this lifecycle model is appropriate when the requirements for a given system are well-understood. 2003 Giorgini Lifecycles -- 8 Page 4

The Waterfall Life Cycle with Iteration 2003 Giorgini Lifecycles -- 9 Prototyping Built something quickly to explore some aspect of the systems requirements The prototype is not intended as the final working system; among other things, it may be incomplete. less resilient (ex. poor performance) than a production system. In building a prototype, the objective is to investigate user requirements, in particular: What data should be presented and what data should be captured; To investigate suitable forms of interfaces; Also to determine whether a particular implementation platform is appropriate, as well as the efficacy of a language, DBMS or communication infrastructure. 2003 Giorgini Lifecycles -- 10 Page 5

Prototyping 2003 Giorgini Lifecycles -- 11 Evaluation of Prototyping Advantages Early demonstrations of system functionality help identify any misunderstandings between developer and client; Helps identify missing client requirements; Problems with user interfaces can be identified; Early testing of feasibility and usefulness of the system (partially) Problems The client may not understand the extra effort needed to produce a working production system; May divert attention from functional to solely interface issues; Requires significant user involvement; Managing the prototyping life cycle is not easy; Applicability For small or medium-size interactive systems For parts of large systems (e.g. user interfaces) For short-lifetime systems. 2003 Giorgini Lifecycles -- 12 Page 6

The Spiral Lifecycle Model Process is represented as a spiral rather than as a sequence of activities with backtracking Each loop in the spiral represents a phase in the process. No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required Risks are explicitly assessed and resolved throughout the process 2003 Giorgini Lifecycles -- 13 The Spiral Lifecycle Model Analysis Planning Determine objectives alternatives and constraints Plan next phase REVIEW Requirements plan Life-cycle plan Development plan Integration and test plan Risk analysis Risk analysis Risk analysis Prototype 2 Risk analysis Prototype 1 Concept of Operation S/W requirements Requirement validation Design V&V Service Acceptance test Evaluate alternatives identify, resolve risks Prototype 3 Operational protoype Simulations, models, benchmarks Product design Integration test Code Unit test Detailed design Develop, verify next-level product Design Implementation and validation 2003 Giorgini Lifecycles -- 14 Page 7

Objective setting Spiral model sectors Specific objectives for the phase are identified Risk assessment and reduction Risks are assessed and activities put in place to reduce the key risks Development and validation A development model for the system is chosen which can be any of the generic models Planning The project is reviewed and the next phase of the spiral is planned 2003 Giorgini Lifecycles -- 15 Software Processes: Fixing a Bug Step 1: Problem identification /* During testing, a problem is identified */ A problem report is created, including problem identification, responsible personnel etc. Responsible personnel is notified Step 2: Problem analysis Perform problem description evaluation, evaluation of software component etc. Propose solutions and describe technical and operational implications Step 3: Cost analysis Project manager decides whether to use cost analysis routine If so, perform cost analysis to determine impact in workmonths Step 4: Schedule analysis... Step 5: Perform change process... Step 6: Close problem report... 2003 Giorgini Lifecycles -- 16 Page 8

A Testing process Software Process Programming Function AllFunctionsnsOK(executable,tests); declare executable executablecode, tests testset, result derivedresult; /* executablecode etc are types, undefined here */ All-fn-OK := true; For case := 1 to #tests do derive(executable,tests[case].input,result) if~resultok(result,testcase[case].output) then All-fn-OK := false; exit; end loop; end All-Fn-Perf-OK This only works for highly structured or automated processes [Osterweil87] 2003 Giorgini Lifecycles -- 17 5 optimizing 4 managed 2 repeatable 1 initial Software Process Maturity Level Characteristic Key challenges Result improvement maintain organization feedback into at optimi- process zing level process defined changing technology; quantitatively problem and measured prevention process defined process measurement and 3 and institutionalized analysis defined intuitive process, training, process dependent focus on individuals ad hoc/chaotic project and configuration management Productivity & quality risk 2003 Giorgini Lifecycles -- 18 Page 9

Software Process Maturity: Field Study (early 90s) Level USA (167 cases) Japan (196 cases) Result 5 optimizing 0% 0.5% Productivity & quality 4 managed 0% 0% 3 defined 1% 0.5% 2 repeatable 13% 1% 1 initial 86% 98% risk 2003 Giorgini Lifecycles -- 19 Information System Development Phases We focus now on the development part of the software lifecycle. There are many ways to divide up an information system development into phases For this course, we identify four major phases: feasibility study, requirements analysis, system design, implementation All activities associated with each phase must be performed, managed and documented. Development support Development support -- tools and methodologies that support the performance, management and documentation of all four phases 2003 Giorgini Lifecycles -- 20 Page 10

The Information System Lifecycle Phases Survey project scope & feasibility feasibility study Study current system problem statement Define end user reqs. project request initial requirements Select feasible solution delivered system Maintain & improve system Design new system design spec detailed requirements configuration Select & Acquire new S&H/W new system Deliver new system S/W Construct new system 2003 Giorgini Lifecycles -- 21 Who Are the Players ( Stakeholders )? Management -- for initiation, approval, control, possibly as users End-users (persons who actually use the system on a day-to-day basis) -- they provide input during requirements definition and testing, participate in committees and final system evaluation Developers (analysts and programmers) Analysts -- serve as project leaders, perform information analysis, create system requirements and design Programmers -- program, test, document, maintain System support group -- they are responsible for system maintenance Database administrator -- responsible for design and control of one or more databases Program librarian -- keeps track of all program files, documentation Steering committee -- oversees project to ensure that objectives have been met 2003 Giorgini Lifecycles -- 22 Page 11

Phase I: The Feasibility Study Phase Deciding What to Do: Confirm that a problem exists Carry out a study to determine if a system can be developed to solve the problem (2 days - 4 weeks) A feasibility study looks at the problem at a high level (only takes into account few details) The study provides cost and savings estimates for the proposed solution. The feasibility study is reviewed by the customer (usually through a manager) and if the review is positive, then a more detailed requirements study is undertaken. 2003 Giorgini Lifecycles -- 23 Phase II: The Requirements Analysis Phase Study existing procedures and computerized information systems in detail and document them. Define goals to be achieved by the new system Propose alternate (possibly several) business processes that might better fit organizational goals and objectives. Discuss these with the customer and get feedback on what is the most desirable alternative. Define the boundaries of the information system to be built as part of the collection of business processes. Define non-functional requirements on the proposed system, including input/output requirements, response requirements, file requirements, etc. Collect statistics on volumes, amounts of data handled by the system. 2003 Giorgini Lifecycles -- 24 Page 12

Phase III: The Design Phase Specify an architecture and a detailed design for the proposed information system Ideal system specified first, meeting all functional requirements, then modified to meet non-functional requirements and other constraints Resources allocated for hardware equipment, personnel tasks and programming tasks Technical specifications are prepared for: system architecture (components, system interfaces to existing systems), processing logic (how does the system do what it is supposed to?), database design (what information does the system handle?), input/output (what do the users see?), platform requirements (on what systems does the system run?) and manual procedures (how do people use the system?) 2003 Giorgini Lifecycles -- 25 Phase IV: The Implementation Phase (Not Covered in this Course) The system is implemented on the basis of the design specification. Programming of the system is carried out Testing of the system, both as individual parts and as a whole, are conducted (acceptance test) Equipment is acquired and installed Procedures, system manuals, software specifications and documentation are completed Staff is trained 2003 Giorgini Lifecycles -- 26 Page 13

Managing Information Systems Development As project proceeds more details become available as to what the proposed system should do and how to operate it At each stage identify risks to the organization and determine their significance If there is a risk of catastrophic failure then either the system should be redesigned or the project to be cancelled. User involvement Ensure that there is continued and effective user involvement throughout the project Users can be involved at various levels and play many different roles Direct involvement Fact gathering Consultative Carefully explain their role Provide training as required Give sufficient time 2003 Giorgini Lifecycles -- 27 Methodological Approaches Approach to software development (ex. OO) A set of techniques and notation (ex. UML) A life cycle model (ex. Spiral incremental) A unifying set of procedures and philosophy In this course we do not follow a particular methodology We only apply OO techniques in a coordinated fashion using UML 2003 Giorgini Lifecycles -- 28 Page 14

Automated process support (CASE) Computer-aided software engineering (CASE) is software to support software development and evolution processes Activity automation Graphical editors for system model development Data dictionary to manage design entities Graphical UI builder for user interface construction Debuggers to support program fault finding Automated translators to generate new versions of a program 2003 Giorgini Lifecycles -- 29 CASE support for diagram preparation Checks for syntactic correctness Data dictionary support Checks for consistency and completeness Navigation to linked diagrams Layering Traceability Report generation System simulation Performance analysis 2003 Giorgini Lifecycles -- 30 Page 15

CASE support for Software Construction Code generators Debuggers Maintenance tools Etc CASE Technology Case technology has led to significant improvements in the software process though not the order of magnitude improvements that were once predicted Software development requires creative thought - this is not readily automatable Software development is a team activity and, for large projects, much time is spent in team interactions. CASE technology does not really support these 2003 Giorgini Lifecycles -- 31 CASE Benefits Standardizing the notation and diagramming standards Performing automatic checks on the quality of the models Reducing time in retrieving data about the system Reducing the time and effort to produce code Promoting reuse of models CASE Disavantages Limitations in the flexibility of the documentation provided The need to work in the particular way False sense of correctness Costs attached to installation and training 2003 Giorgini Lifecycles -- 32 Page 16

Additional Readings [Humphrey89] Humphrey, W. and Kellner, M., "Software Process Modelling: Principles of Entity Process Models", Proceedings Eleventh International Conference on Software Engineering, Pittsburgh, May 1989. [Humphrey90] Humphrey, W., Managing the Software Process, Addison-Wesley, 1990. [Osterweil87] Osterweil, L., "Software Processes are Software Too", Proceedings Ninth International Conference on Software Engineering, Monterey, 1987. 2003 Giorgini Lifecycles -- 33 Page 17