2. Analysis, Design and Implementation



Similar documents
2. Analysis, Design and Implementation

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

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

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

SOFTWARE PROCESS MODELS

Software Development Processes. Software Life-Cycle Models

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

Software Development Processes. Software Life-Cycle Models. Process Models in Other Fields. CIS 422/522 Spring

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

CS4507 Advanced Software Engineering

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

Software Life Cycle Processes

I219 Software Design Methodology

The Software Lifecycle. Software Lifecycles

(Refer Slide Time: 01:52)

Software Engineering. What is a system?

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

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

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

Unit 1 Learning Objectives

What is a life cycle model?

Project management. Organizing, planning and scheduling software projects

4. Software Project Management

Software Engineering

CHAPTER. Software Process Models

ASSESSMENT OF SOFTWARE PROCESS MODELS

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

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

Software Process Models. Xin Feng

A Comparison between Five Models of Software Engineering

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

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

Software Process for QA

Process Methodology. Wegmans Deli Kiosk. for. Version 1.0. Prepared by DELI-cious Developers. Rochester Institute of Technology

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

11.1 What is Project Management? Object-Oriented Software Engineering Practical Software Development using UML and Java. What is Project Management?

Software Process and Models

Classical Software Life Cycle Models

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

The Unified Software Development Process

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

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

Software Development Life Cycle

Chapter 8 Approaches to System Development

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

Software Lifecycles Models

Software Project Models

IT3205: Fundamentals of Software Engineering (Compulsory)

SOFTWARE DESIGN TECHNIQUES. Nagalaxmi Telkar CSCI 5828 Presentation Slides

Introduction to Software Engineering. Adopted from Software Engineering, by Ian Sommerville

Software Development: The Waterfall Model

Chapter 1 The Systems Development Environment

Knowledge, Certification, Networking

Title: Topic 3 Software process models (Topic03 Slide 1).

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

In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:

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

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Software Engineering UNIT -1 OVERVIEW

ISSUES OF STRUCTURED VS. OBJECT-ORIENTED METHODOLOGY OF SYSTEMS ANALYSIS AND DESIGN

Project management. Organising, planning and scheduling software projects. Ian Sommerville 2000 Software Engineering, 6th edition.

Engineering Process Software Qualities Software Architectural Design

3C05: Unified Software Development Process

Umbrella: A New Component-Based Software Development Model

Introduction to Software Engineering (ESE : Einführung in SE)

Software Processes. Topics covered

In this Lecture you will Learn: Development Process. Unified Software Development Process. Best Practice

Designing Real-Time and Embedded Systems with the COMET/UML method

Software Engineering. Software Engineering. Software Costs

Singhania University, Jhunjhunu, Rajasthan, India. 2 Department of Information Technology King Abdul Aziz University, Jeddah, Saudi Arabia

Chap 1. Introduction to Software Architecture

Organizing, planning and scheduling software projects

Life Cycle Models. V. Paúl Pauca. CSC Fall Department of Computer Science Wake Forest University. Object Oriented Software Engineering

A Survey of Software Development Process Models in Software Engineering

10/4/2013. Sharif University of Technology. Session # 3. Contents. Systems Analysis and Design

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

System development lifecycle waterfall model

Introduction to Systems Analysis and Design

How To Design An Information System

Software Engineering. Christopher Simpkins Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS / 16

Process Models and Metrics

Software Life-Cycle. Series of steps through which software product progresses. A life-cycle is selected during requirement Phase

International Journal of Advance Research in Computer Science and Management Studies

Software Engineering Question Bank

Introduction to Software Engineering

A Comparison Between Five Models Of Software Engineering

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science

Ob j ect-oriented Project Management with UML

Software Engineering. What is SE, Anyway? Based on Software Engineering, 7 th Edition by Ian Sommerville

Karunya University Dept. of Information Technology

CSE 435 Software Engineering. Sept 16, 2015

Software Development with Agile Methods

Chapter 2 Software Processes

The most suitable system methodology for the proposed system is drawn out.

2/25/2012. [5]

The profile of your work on an Agile project will be very different. Agile projects have several things in common:

Introduction to Software Engineering

Transcription:

2. Analysis, Design and Implementation Subject/Topic/Focus: Software Production Process Summary: Software Crisis Software as a Product: From Programs to Application Systems Products Software Development: Goals, Tasks, Actors, Issues Software Development Models Objectory: The UML Software Development Process Literature: Sommerville Brooks Fowler 2.1 Software Crisis declared in the late 60 s at the NATO Conferences Software Engineering Techniques, Oct. 1968 and Oct. 1969 expressed by delays and failures of major software projects that resulted in unmaintable software and unpredictable costs was obviously driven by uncoordinated and unstructured programming ( hacking ) lead to a new research and engineering discipline: Software Engineering vs. vs. Software Engineering Methods Models Tools Tools and and concepts 2.2 2.1

Your Experiences, Please! Which software development methods and models do you know? Which steps would you take if a customer, say the boss of 100 (german-wide) warehouses like Karstadt, comes to you, saying that he wants you to develop a business information system that helps him to control his business? How would you organize a team of 100 developers programming a banking application? 2.3 From Programs to Application Systems Products A Program X 3 An Application System X 3 A Program Product X 3 X 3 An Application Systems Product complexity x 9 2.4 2.2

A Program developed by a single programmer A Program complete in itself one customer & one user: the author operational only on the author s system for which it was developed Example: My address manager written in VisualBasic. 2.5 An Application System An Application System contains many programs for different tasks components coordinated in function programs disciplined in format well defined interfaces between components one customer with many users Example: Information system for all departments (stock, accounts, management,...) of firm X 2.6 2.3

A Program Product A Program Product developed by a developer team thoroughly tested and well documented many single customers (= users) specialized to one task available for different environments Example: Microsoft Word 2.7 An Application Systems Product An Application Systems Product Example: SAP combines the attributes of program complete in itself application system programs disciplined in format coordinated components many users program product developed by a team thoroughly tested usable on different platforms many customers 2.8 2.4

Software Systems Characteristics Software is an immaterial product. Software does not underlie an aging process. For software there are no spare parts as there are for machinery etc. Software does not wear off and therefore it does not need maintenance in the common sense. Software is easier changed than other technical products. Software has to be adapted to changes of requirements or environments. For software there is no production process but product development. 2.9 Software Product Attributes Essential attributes of well-engineered software: Maintainability possibility to evolve software to meet the changing needs of a customer well defined interfaces to third party products Dependability reliable systems which do not cause physical or economical damage in case of system failure security and safety Efficiency no wasteful use of resources like memory, storage, or processor cycles Usability appropriate user interface adequate documentation 2.10 2.5

Goals and Tasks of Software Development Main Goals Product related: related: Usability Productivity Quality Quality Process related: related: Schedules and and costs costs Main Tasks Analysis Design Design Implementation Test Test Introduction Maintenance Mission: Delivering a product in in time time that is is useful and and used at at the the predicted costs. 2.11 Meeting the Industrial Requirements The software product has to meet the specification. Track changed requirements during development process. Prepare for changes of hardware platforms and/or software environments. The software product has to be produced in time. Apply project management and project organization. Employ qualified experts. The software product should not exceed the estimated costs. Develop in cycles and evaluate early using prototypes. Plan the installation of the software system and the education of users. 2.12 2.6

Actors Customer and and Users Users Requirements Using Using Training System engineers Problem definition Solution analysis Process planning Process control control Product evaluation Communication capability & competence Project managers Planning Organizing Staffing Directing Controlling Software engineers Software design design Coding Coding Unit Unit testing testing Subsystem integration 2.13 Issues in Software Development Characteristics complex product complex development process many developers Communication users, domain experts & developers different developers in different development phases developers on different platforms development & maintenance Problems Methods & Models representation of complex domains graphically & textually prototypes dividing large problems into small manageable systems accuracy verification contra flexibility creativity teamwork distribution sharing & coordination communication 2.14 2.7

Abstraction Levels Requirements Analysis: Why? Real-World Model System Model requirements domain knowledge goals Design: What? System Design abstractions models structures architecture Implementation: How? System Implementation algorithms generic services platform-specific services 2.15 Software Development Models (1) 1. Waterfall model Requirements Requirements definition, definition, analysis analysis The development phases are performed sequentially. System System and and software software design design Implementation Implementation and and unit unit testing testing Integration Integration and and system system testing testing [Ian Sommerville; Software Engineering, Addison Wesley, 1982] Operation Operation and and maintenance maintenance 2.16 2.8

Software Development Models (2) 1. Waterfall model (modified) Requirements Requirements definition, definition, analysis analysis... but there are backward loops in case of changing requirements, error corrections,... System System and and software software design design Implementation Implementation and and unit unit testing testing Integration Integration and and system system testing testing [Ian Sommerville; Software Engineering, Addison Wesley, 1982] Operation Operation and and maintenance maintenance 2.17 Software Development Models (3) 2. Evolutionary development Concurrent activities Prototypes Specification Initial Initial version version Outline Outline description Development Intermediate versions Validation Final Final version version [Ian Sommerville; Software Engineering, Addison Wesley, 1982] 2.18 2.9

Software Development Models (4) 3. Boehm s spiral model [Ian Sommerville; Software Engineering, Addison Wesley, 1982] Objectory: The UML Software Development Process Inception establishes the business rationale for the project and decides on the scope of the project. Inception Elaboration is the phase where you collect more detailed requirements, do high-level analysis and design to establish a baseline architecture and create the plan for construction. Elaboration Construction is an iterative and incremental process. Each iteration in this phase builds production-quality software prototypes, tested and integrated as subset of the requirements of the project. Construction 1 2 3 4 5... Transition contains beta testing, performance tuning and user training. Transition 2.20 2.10

Objectory: Incremental Iterations Analysis Design Design Elaboration Requirements binding contracts Transition Project deliverables Demonstration Integration Coding Coding Debugging Construction Executable modules 2.21 First Step: Inception Inception can take many forms: For some projects it is a chat at the coffee machine. For bigger projects it is a full-fledged feasibility study that takes months. During the inception phase you work out the business case for the project: Derive how much the project will cost. Estimate how much profit it will bring in. Some initial analysis is required to get a sense of the project s scope and size. Inception should be a few days of work to consider if it is worth doing a few months of work of deeper investigation during elaboration. At the point of inception the project sponsor agrees to no more than a serious look at the project: Do we go go ahead with the project? 2.22 2.11

Second Step: Elaboration Starts after you have received the go-ahead to start the project agreement. At this stage you typically have only a vague idea of the requirements. We are going to build the next generation customer support system for the Watts Galore Utility Company. We intend to use object-oriented technology to build a more flexible system that is more customer oriented - specifically, one that will support consolidated customer bills. Elaboration is the point where you want better understanding of the problem: What is it you are actually going to build? How are you going to build it? What technology are you going to use? Elaboration includes to have a careful and thorough look at the possible risks in your project: What are the things that could derail you? 2.23 Elaboration: Systems Analysis Rationale: Finding Finding and and fixing fixing a fault fault after after software delivery is is 100 100 times times more more expensive than than finding finding and and fixing fixing it it during during systems analysis or or early early design design phases. The goal of analysis is to develop a model of what the system will do. The analysis should include information required to understand what is meaningful from a real world system. The client of a system should understand the analysis model. The analysis phase delivers a base from which further details are derived in the design phase. Analysis provides the requirements and the real-world environment in which the software system will exist. Object-oriented analysis forces forces a seamless development process with with no no discontinuities because of of continuos refinement and and progressing from from analysis through design design to to implementation. 2.24 2.12

Analysis: Actors, Steps, Deliverables Users Users Developers Managers Generate requests Problem statement Users Users interviews Domain knowledge Real-world experience Build Build models models UML Diagrams Use Use Cases Cases Classes Interactions Packages States States Activities...... 2.25 Elaboration: Requirements Capture Identify typical typical use use cases cases (see (see chapter 2.1) 2.1) of of the the system system you you are are going going to to build. build. For a person using a database a typical use case would be: list all customers who have ordered a certain product Use case 3 create a list with my top 10 customers Use case 2 I want fax-letters to be sent automatically Use case 1 A developer responds with specific cost estimates: The top 10 customer list can be developed in a week. Creating the auto-fax function will take two months. User and developer negotiate about the priorities: Developer: I could start with the sold - products list. User: I definitely need the top 10 customers list first. 2.26 2.13

Elaboration: Planning Schedule use use cases cases to to specific specific iterations and and dates dates of of delivery. The users should indicate the level of priority for each use case. I absolutely must have this function for any real system. I can live without this function for a short period. It is an important function, but I can survive without it for a while. The developers should consider the architectural risk. Do not omit use cases which later cause you to do a lot of rework to fit them in. Concentrate to the use cases which are technologically most challenging. The developers should be aware of the schedule risks. I m pretty sure I know how long it will take. I can estimate the time only to the nearest man-month. I have no idea. 2.27 Planning: Estimate Once the use cases are assigned, the length of each iteration should be estimated to the nearest person-week. In performing this estimate assume you need to do analyzing designing coding unit testing integration documentation The estimates should be be done by by the developers, not by by the managers. 2.28 2.14

Third Step: Construction Construction builds the system in a series of iterations. Each iteration is a project in itself. Use case 1 Use case 2 Demonstration Integration Use case 3 Use case 4 Analysis Design Design Coding Coding Debugging Use case 5 Iteration 5 Iteration 4 Iteration 3 Iteration 2 Iteration Use Case driven system increments During each iteration you go through a cycle of analyzing, designing, coding, debugging, integration and demonstration of the implemented use case by a prototype. 2.29 Construction: Iterations Finish the iteration with a demo to the user and perform system tests to confirm that the use cases have been built correctly. Iterations within a construction are both, incremental and iterative. Iterations are incremental in function. Each iteration builds on the use cases implemented in the previous iteration They are iterative in terms of the code base which will be rewritten to make it more flexible. Do not underestimate the testing phase. Write test code. Separate the test into unit and test code. Unit tests should be written by the developers. Apply all tests after each iteration. 2.30 2.15