CEN 5011 2 nd Lecture CEN 5011 Advanced Software Engineering Instructor: Masoud Sadjadi Software Life Cycle.

Slides:



Advertisements
Similar presentations
Chapter 7: Software production process Refers to the activities that are used for building, delivering, deploying, and evolving a software product, from.
Advertisements

Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 12, Software Life Cycle.
Computer Science Department
1 Software Processes A Software process is a set of activities and associated results which lead to the production of a software product. Activities Common.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Ch 3: Unified Process CSCI 4320: Software Engineering.
Lecture # 2 : Process Models
CEN nd Lecture CEN 4021 Software Engineering II Instructor: Masoud Sadjadi Software Process Models.
CS487 Software Engineering Omar Aldawud
CSE 470 : Software Engineering The Software Process.
CSC 480 Software Engineering
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
Modeling the Process and Life Cycle CSCI 411 Advanced Database and Project Management Monday, February 2, 2015.
Using UML, Patterns, and Java Object-Oriented Software Engineering 15. Software Life Cycle.
Chapter 2 – Software Processes
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Alternate Software Development Methodologies
1 SOFTWARE LIFE-CYCLES Beyond the Waterfall. 2 Requirements System Design Detailed Design Implementation Installation & Testing Maintenance The WATERFALL.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Object-oriented Analysis and Design
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
CEN 4010 Second Lecture January 23, 2006 CEN 4010 Introduction to Software Engineering Spring 2006 Instructor: Masoud Sadjadi
Chapter 3 Software Processes.
S/W Project Management
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
1 CMPT 275 Software Engineering Software life cycle.
Using UML, Patterns, and Java Object-Oriented Software Engineering Art for Chapter 15, Software Life Cycle.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Instructor: Peter Clarke
Software Processes lecture 8. Topics covered Software process models Process iteration Process activities The Rational Unified Process Computer-aided.
CEN rd Lecture CEN 4021 Software Engineering II Instructor: Masoud Sadjadi Phases of Software.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
1 Instructor: S. Masoud Sadjadi sadjadi At cs Dot fiu Dot edu Software Engineering and Project Communications.
1 Introduction to Software Engineering Lecture 1.
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
An Introduction to Software Engineering
Object-Oriented Software Engineering using Java, Patterns &UML. Presented by: E.S. Mbokane Department of System Development Faculty of ICT Tshwane University.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Chapter 2 – Software Processes Lecture 1 1Chapter 2 Software Processes.
CEN 4010 First Lecture January 10, 2005 CEN 4010 Introduction to Software Engineering Spring 2005 Instructor: Masoud Sadjadi
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
Using UML, Patterns, and Java Object-Oriented Software Engineering 15. Software Life Cycle (Waterfall)
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.
Rational Unified Process Fundamentals Best Practices of Software Engineering Rational Unified Process Fundamentals Best Practices of Software Engineering.
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.
RUP RATIONAL UNIFIED PROCESS Behnam Akbari 06 Oct
COP st Lecture August 29, 2005 COP 4009 Component-Based Software Engineering Fall 2005 Instructor: Masoud Sadjadi
Introduction to Software Engineering 1. Software Engineering Failures – Complexity – Change 2. What is Software Engineering? – Using engineering approaches.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Software Processes (a)
CEN 5011 Advanced Software Engineering
Chapter 2 – Software Processes
Baisc Of Software Testing
SOFTWARE LIFE-CYCLES Beyond the Waterfall.
CS310 Software Engineering Lecturer Dr.Doaa Sami
CEN 5011 Advanced Software Engineering
Presentation transcript:

CEN nd Lecture CEN 5011 Advanced Software Engineering Instructor: Masoud Sadjadi Software Life Cycle

2 nd LectureCEN 5011: Advanced Software Engineering 2 Acknowledgements  Dr. Peter Clarke  Dr. Betty Cheng  Dr. Bernd Bruegge  Dr. Allen Dutoit

2 nd LectureCEN 5011: Advanced Software Engineering 3 Agenda  Overview  Terminology  Software Processes  Software Life Cycle  Good Software!

2 nd LectureCEN 5011: Advanced Software Engineering 4 Our Intention Requirements Software

2 nd LectureCEN 5011: Advanced Software Engineering 5 Our plan of attack Requirements Analysis Design Implementation Testing Delivery and Installation

2 nd LectureCEN 5011: Advanced Software Engineering 6 How it often goes Requirements Analysis D E L A Y Vaporware

2 nd LectureCEN 5011: Advanced Software Engineering 7 Today’s Practice! Courtesy of an anonymous artist. Found on the Web!

2 nd LectureCEN 5011: Advanced Software Engineering 8 Inherent Problems  Requirements are complex –The client does not know the functional requirements in advance.  Requirements may be changing –Technology enablers introduce new possibilities to deal with nonfunctional requirements.  Frequent changes are difficult to manage –Identifying milestones and cost estimation is difficult.  There is more than one software system –Backward compatible with existing systems  Let’s view these problems as the nonfunctional requirements for a system that supports software development! –This leads us to software life cycle modeling

2 nd LectureCEN 5011: Advanced Software Engineering 9 Agenda  Overview  Terminology  Software Processes  Software Life Cycle  Good Software!

2 nd LectureCEN 5011: Advanced Software Engineering 10 Terminology (1)  participants – all persons involved in a project. e.g., developers, project manager, client, end users.  role – associated with a set of tasks assigned to a participant.  system – underlying reality.  model – abstraction of the reality.  work product – an artifact produced during development.

2 nd LectureCEN 5011: Advanced Software Engineering 11 Terminology (2)  deliverable – work product for client.  activity – a set of tasks performed toward a specific purpose.  milestone – end-point of a software process activity.  task – an atomic unit of work that can be managed and that consumes resources.  goal – high-level principle used to guide the project.

2 nd LectureCEN 5011: Advanced Software Engineering 12 Terminology (3)  functional requirement – describes the interaction between the system and its actors (e.g., end users and other external systems) independent of its implementation.  nonfunctional requirement – describes aspects of the system that are not directly related to the functional requirements of the system (e.g., QoS, security, scalability, performance, and fault-tolerance).  notation – is a graphical or textual set of rules representing a model (e.g., UML)  method – a repeatable technique for solving a specific problem e.g. sorting algorithm  methodology – a collection of methods for solving a class of problems (e.g., Unified Software Development Process).

2 nd LectureCEN 5011: Advanced Software Engineering 13 Agenda  Overview  Terminology  Software Processes  Software Life Cycle  Good Software!

2 nd LectureCEN 5011: Advanced Software Engineering 14 Software Processes  Specification –requirements elicitation and analysis.  Development –systems design, detailed design (OO design), implementation.  Validation –validating system against requirements (testing).  Evolution –meet changing customer needs and error correction (maintenance).

2 nd LectureCEN 5011: Advanced Software Engineering 15 Software Specification (1)  Functionality of the software and constraints (non- functional requirements) on its operation must be defined.  Involves: –Requirements elicitation –The client and developers define the purpose of the system. –Output is a description of the system in terms of actors and uses cases. –Actors include roles such as end users and other computers the system needs.

2 nd LectureCEN 5011: Advanced Software Engineering 16 Software Specification (2)  Uses cases are general sequences of events that describe all possible actions between actor and the system for a given piece of functionality. Analysis  Objective: produce a model of the system that is correct, complete, consistent, unambiguous, realistic, and verifiable.  Developers transform the use cases into an object model that completely describes the system.  Model is checked for ambiguities and inconsistencies.  Output: Object model annotated with attributes, operations, and associations.

2 nd LectureCEN 5011: Advanced Software Engineering 17 Software Development (1)  Producing the software that meets the specification. System Design  Goals of the project are defined.  System decomposed into smaller subsystems (architectural model).  Strategies to build system identified –HW and SW platform, data management, control flow, and security.  Output: model describing subsystem decomposition and system strategies.

2 nd LectureCEN 5011: Advanced Software Engineering 18 Software Development (2) Object Design  Bridges the gap between analysis model and the strategies identified in the system design. Includes: –Describing object and subsystem interfaces –Selecting off–the-shelf components –Restructure object model to attain design goals  e.g., extensibility, understandability, and required performance.  Output: detailed object model annotated with constraints and supporting documentation. Implementation  Translation of the object model into source code.  No general process followed.  There are tools to assists the programmer such as CASE tools.

2 nd LectureCEN 5011: Advanced Software Engineering 19 Software Development Activities Problem Domain Implementation Domain Requirements Analysis What is the problem? System Design What is the solution? Object Design What is the solution in a specific context? Implementation How is the solution constructed?

2 nd LectureCEN 5011: Advanced Software Engineering 20 Software Validation (1)  Ensures the software does what the customer want.  The software conforms to its specification and meets the expectations of the customer. Validation: ‘Are we building the right product?’ Ensures the software meets the expectations of the customer. Verification: ‘Are we building the product right?’ Ensures the software conforms to the specification.

2 nd LectureCEN 5011: Advanced Software Engineering 21 Software Validation (2)  Techniques –Software inspections (static):  Analyze and check system representations (e.g., requirements documents, design diagrams, and program source code). –Software testing (dynamic):  Executing an implementation of the software with test data and examining the outputs against expected results.  V&V process establishes the existence of defects.  Debugging is a process that locates and corrects these defects.

2 nd LectureCEN 5011: Advanced Software Engineering 22 Software Evolution  Software must evolve to meet the customer needs.  Software maintenance is the process of changing a system after it has been delivered.  Reasons for maintenance –To repair faults. –To adapt the software to a different operating environment. –To add to or modify system’s functionality.

2 nd LectureCEN 5011: Advanced Software Engineering 23 Agenda  Overview  Terminology  Software Processes  Software Life Cycle  Good Software!

2 nd LectureCEN 5011: Advanced Software Engineering 24 Software Life Cycle  Software life cycle modeling –Attempt to deal with complexity and change.  Software life cycle –Set of activities and their relationships to each other to support the development of a software system.  Software development methodology –A collection of techniques for building models, which are applied across the software lifecycle.

2 nd LectureCEN 5011: Advanced Software Engineering 25 Software Life Cycle  Software construction goes through a progression of states Development Post- Development Pre- Development Conception Childhood Adulthood Retirement

2 nd LectureCEN 5011: Advanced Software Engineering 26 Software Life Cycle Models  Waterfall model and its problems –Pure Waterfall Model –V-Model  Iterative process models –Boehm’s Spiral Model –Unified Process Model  Entity-based models –Issue-based Development Model –Concurrent Development

2 nd LectureCEN 5011: Advanced Software Engineering 27 Waterfall Model (1)  The waterfall model –First described by Royce in 1970  There seem to be at least as many versions as there are authorities - perhaps more Requirements Definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance

2 nd LectureCEN 5011: Advanced Software Engineering 28 Waterfall Model (2)  One or more documents are produced after each phase and “signed off”.  Points to note: –“Water does not flow up”.  it is difficult to change artifact produced in the previous phase. –This model should be used only when the requirements are well understood. –Reflects engineering practice. –Simple management model.

2 nd LectureCEN 5011: Advanced Software Engineering 29 From Waterfall to V Model  Horizontal lines denote the information flow between activities at the same abstraction level. Requirements Specification System design Detailed Design Implementation Unit Test System and integration test Acceptance test

2 nd LectureCEN 5011: Advanced Software Engineering 30 V Model  Similar to pure waterfall model but makes explicit the dependency between development and verification activities.  The left half of the V represents development and the right half system validation.  Note the requirements specification includes systems reqs. analysis, reqs. elicitation, and reqs. analysis.

2 nd LectureCEN 5011: Advanced Software Engineering 31 Spiral Model (1)  Basic Idea –develop initial implementation, expose it to user, and refine it until an adequate system is produced.  Two types: –Exploratory –Throw-away prototyping  Advantages –model used when problem is not clearly defined.  Disadvantages –Process not visible, systems are poorly constructed, may require special tools and techniques.

2 nd LectureCEN 5011: Advanced Software Engineering 32 Spiral Model (2) Requirements plan Concept of operation Risk analysis Prototype 1 Prototype 2 Prototype 3 Risk analysis Risk analysis S/w Reqs. Validation Development Plan Integration Plan Design Validation Acceptance Test Sys. Product Design Integration & Test Unit Test Code Detailed Design Design objectives, alternatives, and constraints Plan next phase Evaluate alternatives, identify and resolve risks Develop and verify next level product Not shown in detail

2 nd LectureCEN 5011: Advanced Software Engineering 33 Spiral Model (3)  Tries to accommodate infrequent change during development.  Each round of the spiral involves: –Determine objectives –Specify constraints –Generate alternatives –Identify risks –Resolve risks –Develop and verify next level product –Plan

2 nd LectureCEN 5011: Advanced Software Engineering 34 Incremental Development (1)  Mills et al Define outline requirements Assign requirements to increments Design system architecture Develop system increment Validate increment Integrate increment Validate system System incomplete Final system

2 nd LectureCEN 5011: Advanced Software Engineering 35 Incremental Development (2)  Software specification, design and implementation is broken down into a series of increments which are developed in turn.  Gives customers some opportunities to delay decisions on the detailed requirements of the system.  Services are identified and a priority allocated.  Each increment provides a subset of the system’s functionality.

2 nd LectureCEN 5011: Advanced Software Engineering 36 Incremental Development (3) Advantages: –Customers do not have to wait for the entire system. –Customers gain experience using early increments of the system. –Lowers the risk of overall project failure. –Most important system services receives the most testing. Disadvantages: –May be difficult to map meaningful functionality into small increments.

2 nd LectureCEN 5011: Advanced Software Engineering 37 Extreme Programming  The incremental approach has evolved to ‘extreme programming’ (Beck 1988).  Extreme programming: –Development and delivery of very small increments. –Customer involvement in the process. –Constant code improvement. –Egoless programming  Programs are regarded as group property!

2 nd LectureCEN 5011: Advanced Software Engineering 38 Unified Software Development Process (1)  Similar to Boehm’s spiral model.  A project consists of several cycles, each ends with the delivery of a product to the customer.  Each cycle consists of four phases: –Inception –Elaboration –Construction –Transition  Each phase consists of a number of iterations.

2 nd LectureCEN 5011: Advanced Software Engineering 39 Unified Software Development Process (2)  Inception ends with –commitment from the project sponsor to go ahead.  Elaboration ends with –basic architecture of the system in place, –a plan for construction agreed, –all significant risks identified, and –major risks understood enough not to be too worried.  Construction ends with –a beta-release system.  Transition –is the process of introducing the system to it users.

2 nd LectureCEN 5011: Advanced Software Engineering 40 Unified Software Development Process (2) Analysis model Use case model Design model Deployment model Implementation model Test model specified by realized by distributed by verified by implemented by Requirements captured as a set of use cases. System Development

2 nd LectureCEN 5011: Advanced Software Engineering 41 Unified Software Development Process (3)  Deployment model –physical communication links between hardware items. –relationships between physical machines and processes.  The models in the Unified Process are traceable –A model element can be traced to at least one element in an associated model.  Transition between models are seamless –we can tell in a foreseeable way how to get from an element in one model to one/more elements in an associated model.

2 nd LectureCEN 5011: Advanced Software Engineering 42 Issue-Based Development  A system is described as a collection of issues –Issues are either closed or open. –Closed issues have a resolution. –Closed issues can be reopened (Iteration!).  The set of closed issues is the basis of the system model I1:Open I2:Closed I3:Closed A.I1:Open A.I2:Open SD.I1:Closed SD.I2:Closed SD.I3:Closed PlanningRequirements Analysis System Design

2 nd LectureCEN 5011: Advanced Software Engineering 43 What to Choose?  PT = Project Time, MTBC = Mean Time Between Change  Change rarely occurs (MTBC >> PT): –Waterfall Model –All issues in one phase are closed before proceeding to the next phase  Change occurs sometimes (MTBC = PT): –Boehm’s Spiral Model –Change occurring during a phase might lead to an iteration of a previous phase or cancellation of the project  “Change is constant” (MTBC << PT) –Issue-based Development (Concurrent Development Model) –Phases are never finished, they all run in parallel  Decision when to close an issue is up to management.  The set of closed issues form the basis for the system to be developed.

2 nd LectureCEN 5011: Advanced Software Engineering 44 IEEE 1074  Standard for Developing Life Cycle Processes  Describes the set of activities and processes that are mandatory for the development and maintenance of software.  Process is a set of activities that is performed towards a specific purpose.  Processes are grouped into higher abstractions called process groups.

2 nd LectureCEN 5011: Advanced Software Engineering 45 Software Processes Process GroupProcesses Project ManagementProject Initiation Project Management and Control Software Quality Management Pre-developmentConcept Exploration System Allocation DevelopmentRequirements Design Implementation Post-developmentInstallation Operation and Support Maintenance Retirement Integral ProcessesVerification and Validation Software Configuration Management Document Development Training

2 nd LectureCEN 5011: Advanced Software Engineering 46 Agenda  Overview  Terminology  Software Processes  Software Life Cycle  Good Software!

2 nd LectureCEN 5011: Advanced Software Engineering 47 Attributes of Good Software  Maintainability –Ease of changing the software to meets the changing needs of the customer.  Dependability –Reliability, security and safety.  Efficiency –Responsiveness, processing time, and memory usage.  Usability –Appropriate user interface and adequate documentation.

2 nd LectureCEN 5011: Advanced Software Engineering 48 Capability Maturity Model (CMM) 1. Initial Level –ad hoc, no feedback from user, black box. 2. Repeatable Level –Each project has a well-defined sw life cycle model. 3. Defined Level –A document sw life cycle model for all managerial and technical activities across the org. exists. 4. Managed Level –Metrics for activities and deliverables are defined. 5. Optimizing Level –Process allows feedback of information to change process itself. –Note: In 2000, the SW-CMM was upgraded to CMMI® (Capability Maturity Model Integration).CMMI

2 nd LectureCEN 5011: Advanced Software Engineering 49 State of the Software Industry in 1995  Maturity Level Frequency 1. Initial 70% 2. Repeatable 15% 3. Defined < 10% 4. Managed < 5% 5. Optimizing < 1% Source: Royce, Project Management, P. 364