The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Lecture # 2 : Process Models
Object-Oriented Software Development CS 3331 Fall 2009.
Virtual University - Human Computer Interaction 1 © Imran Hussain | UMT Imran Hussain University of Management and Technology (UMT) Lecture 16 HCI PROCESS.
Unit 2. Software Lifecycle
CEN nd Lecture CEN 4021 Software Engineering II Instructor: Masoud Sadjadi Software Process Models.
Software Process Model
Chapter 2 Software Processes (1/2) Yonsei University 2 nd Semester, 2014 Woo-Cheol Kim.
Chapter 2 – Software Processes
Chapter 2 – Software Processes Lecture 1 1Chapter 2 Software Processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 2 Software Processes.
Introduction to Software Engineering Dr. Basem Alkazemi
CS 501: Software Engineering
Software Engineering General Project Management Software Requirements
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Process Models.
1 Introduction to System Engineering G. Nacouzi ME 155B.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Chapter 2- Software Process Lecture 4. Software Engineering We have specified the problem domain – industrial strength software – Besides delivering the.
Software Process Activities. Process activities Real software processes are inter-leaved sequences of technical, collaborative and managerial activities.
CMSC 345, Version 1/03 An Overview of Software Processes Reference: Software Engineering, by Ian Sommerville, 6 th edition, Chapter 3.
Chapter 3 Software Processes.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Chapter 2 The process Process, Methods, and Tools
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1 Software Processes (Chapter 3)
Software Processes lecture 8. Topics covered Software process models Process iteration Process activities The Rational Unified Process Computer-aided.
Chapter 2: Software Process Omar Meqdadi SE 2730 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
Software Engineering Management Lecture 1 The Software Process.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
1 Introduction to Software Engineering Lecture 1.
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
An Introduction to Software Engineering
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
Software Development Life Cycle (SDLC)
Modelling the Process and Life Cycle. The Meaning of Process A process: a series of steps involving activities, constrains, and resources that produce.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
Software Engineering, 8th edition. Chapter 4 1 Courtesy: ©Ian Sommerville 2006 FEB 13 th, 2009 Lecture # 5 Software Processes.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini II. Software Life Cycle.
Chapter3:Software Processes
Software Engineering Management
CS 389 – Software Engineering
Software Process Activities.
The Systems Engineering Context
HCI in the software process
Software Processes.
Chapter 2 – Software Processes
Methodologies For Systems Analysis.
Chapter 2 Software Processes
Chapter 2 – Software Processes
An Overview of Software Processes
HCI in the software process
CS310 Software Engineering Lecturer Dr.Doaa Sami
Human Computer Interaction Lecture 14 HCI in Software Process
Chapter 2 Software Processes
Presentation transcript:

The Software Lifecycle Stuart Faulk

Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle Model: Abstract representation of a software life cycle as a sequence of 1) activities or phases and 2) products (usually graphic) Software Process (process model): institutionalized version of a life cycle model. Usually intended to provide guidance to developers.

Rationale Developed as a tool for gaining and maintaining control over complex software development processes Application of “divide-and-conquer” to software processes and products –Goal: identify distinct and relatively independent phases and products –Can then address each separately Intended use –Provide guidance to developers in what to produce and when to produce it –Provide a basis for planning and assessing development progress

A Simple Process Model problem reqs specification requirements engineering design implementation system testing working system maintenance

A “Waterfall” Model Design System Integration and Testing Coding Deployment Maintenance and Evolution Requirements Analysis Architecture

Phases and Products Requirements –Goal: implementation-independent specification of what the software must do and any constraints on its development –Product: Software Requirements Specification (SRS) Architecture –Goal: decomposition of the problem into components that together satisfy the requirements within the constraints –Products: specifications of components, relations, interfaces Detail Design –Goal: internal design of components (e.g., objects) to identify appropriate algorithms and data structures supporting the interface –Products: design documentation, pseudo-code

Phases and Products Implementation –Goal: realization of the design in a machine-executable language –Product: code Testing –Goal: validation and verification of the implementation against requirements and design –Products: test plan, test cases Maintenance –Goal: maintain deployed system –Products: bug fixes, patches, new versions

Issues with Life Cycle Models Application of “divide-and-conquer” to software processes and products –Goal: identify distinct and relatively independent phases and products –Can then address each separately Intended use –Provide guidance to developers in what to produce and when to produce it –Provide a basis for planning and assessing development progress Never an accurate representation of what really goes on. (Why?)

A “Waterfall” Model Design System Integration and Testing Coding Deployment Maintenance and Evolution Requirements Analysis Architecture What are the problems: 1.As a model of a real process 2.As a process model go guide development

Iterative “Waterfall” Model Design System Integration and Testing Coding Deployment Maintenance and Evolution Requirements Analysis Architecture

Also… Spiral model Prototyping models RAD models Extreme Programming Etc., etc.

The Joys of Faking It From: Parnas & Clements “A Rational Design Process”

Design Processes are Idealizations Assertion: Design is an inherently “irrational” process Completely rational processes proceed by a sequence of optimal steps (the right choice each time) Real processes rarely proceed rationally from goals to products This is an essential characteristic of the design process –It’s a human process –We’re neither omniscient nor omnipotent

It Pays to “Fake it” Thesis: It is nonetheless useful to “fake” a rational design process –Follow the ideal process as closely as possible –Write the documentation and other work products as is we had followed the ideal Rationale –Idealized process can provide guidance –Helps come closer to the ideal (emulation) –Helps standardize the process (provide a common view of how to proceed and what to produce) –Provides a yardstick for assessing progress –Provides better products (e.g. final draft not first)

Idealized Process Establish and document requirements Design and document the module structure Design and document the module interfaces Design and document the uses hierarchy Design and document the module internal structure Write programs Maintain

Current Nomenclature This view of the ideal process is now common The Software Design Process is concerned with specifying: –software architecture (structure) –software components (interfaces) –interconnections among components (e.g., uses) –internal details of the components, (internal structure) --- so that the resulting system satisfies its requirements and pre-determined design criteria (goals, assumptions, constraints)

How do we Choose a Development Process? E.g., for your projects

Objectives Goal: proceed as rationally and systematically as possible (I.e., in a controlled manner) from a statement of goals to a design that demonstrably meets those goals with design and management constraints Understand that any process description is an abstraction so we must compensate for deviation

A Software Engineering Perspective SE view provides perspective on life-cycle activities (e.g., Design) Choose processes, methods, notations, etc. to provide an appropriate level of control for the given product and context –Sufficient control to achieve results –No more than necessary to contain cost and effort Provides a basis for choosing or evaluating processes, methods, etc. –Does it achieve our objectives at reasonable cost? –E.g., does this notation provide a handle on the properties of interest?

“Appropriate” Control What constitutes “appropriate” control will be vastly different for different types of developments –Large vs. small –New problems vs. old –High risk vs. low, and so on These are neither independent nor exclusive Development approaches vary in their assumptions about these issues –E.g., RAD vs. Spiral –In general, we will consider the “large system” product context common to business (multi-person, multi-version)

Project Relevance Need to agree on kind of control you need and how you will accomplish it Process model (description) will then help keep everyone on track –Basis for planning and scheduling –Each person knows what to do next –Basis for tracking progress against schedule Should be one of the first products but expect it to evolve

Need to add some slides on process models appropriate to distributed development. Should include, in particular, the role of iterative processes in controlling the risks © S. Faulk