Object-Oriented Software Engineering



Similar documents
CHAPTER 01 THE SCOPE OF SOFTWARE ENGINEERING

Overview and History of Software Engineering

Object-Oriented and Classical Software Engineering

Object-Oriented and Classical Software Engineering

Slide 2.1. Slide 2.3. Slide 2.5

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

Software Engineering. An Introduction. Fakhar Lodhi

CHAPTER 02 SOFTWARE LIFE-CYCLE MODELS

Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice

Development/Maintenance/Reuse: Software Evolution in Product Lines

SOFTWARE PROCESS MODELS

Object-Oriented Software Engineering THE TOOLS OF THE TRADE CHAPTER 5. Stephen R. Schach 5.1 Stepwise Refinement.

Example IEEE software project management plan (SPMP)

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

10.1 Determining What the Client Needs. Determining What the Client Needs (contd) Determining What the Client Needs (contd)

Basic Testing Concepts and Terminology

Development Methodologies

Application of software product quality international standards through software development life cycle

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

What is a life cycle model?

Chapter 9 Software Evolution

Master of Science in Software Engineering (MSC)

CS4507 Advanced Software Engineering

Software Engineering. So(ware Evolu1on

Agile Software Development Methodologies and Its Quality Assurance

(Refer Slide Time: 01:52)

A COMPARISON OF FIVE APPROACHES TO SOFTWARE DEVELOPMENT. David J. Schultz. January 21, 2000

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

Chapter 7: Software Engineering

Weighted Total Mark. Weighted Exam Mark

Quality prediction model for object oriented software using UML metrics

Software Engineering. Hans van Vliet Vrije Universiteit Amsterdam, The Netherlands

Software Life Cycle Processes

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

CLOUD COMPUTING SECURITY ISSUES

Software Project Models

Master of Science in Information Systems management

SC207 Software Engineering. Review Report: Producing More Reliable Software

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

Introduction to Software Paradigms & Procedural Programming Paradigm

Quality Management. Lecture 12 Software quality management

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

The Software Process. Chapter. Learning Objectives

The V-Model. Prepared for. Prepared by. Christian Bucanac Software Engineering Student, University Of Karlskrona/Ronneby

System development lifecycle waterfall model

Course: SE501 Semester: 121 Assessment: Final Exam Duration: 120 minutes Weight: 30%

EVALUATING METRICS AT CLASS AND METHOD LEVEL FOR JAVA PROGRAMS USING KNOWLEDGE BASED SYSTEMS

SAFE SOFTWARE FOR SPACE APPLICATIONS: BUILDING ON THE DO-178 EXPERIENCE. Cheryl A. Dorsey Digital Flight / Solutions cadorsey@df-solutions.

Introduction for Software Configuration Management Training

Plan-based Software Development

An Agent-Based Concept for Problem Management Systems to Enhance Reliability

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Reduce cost and increase you ability to support your customers: Integrating Customer Support and Defect Tracking an architecture for success

CHAPTER 11 REQUIREMENTS

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

Course Goals. Solve Non-Technical Customer problem Server side: Ruby on Rails Client side: HTML, CSS, AJAX, JavaScript Deploy using cloud computing

7 Component-based Development Process and Component Lifecycle

Your Software Quality is Our Business. INDEPENDENT VERIFICATION AND VALIDATION (IV&V) WHITE PAPER Prepared by Adnet, Inc.

Software Engineering. Introduction. Lecturer: Giuseppe Santucci

Software Code Quality Checking (SCQC) No Clearance for This Secret: Information Assurance is MORE Than Security

Chapter 1 Introduction

How To Improve Software Quality

Basic Trends of Modern Software Development

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

CMSC 435: Software Engineering Course overview. Topics covered today

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

A Tool to Support Knowledge Based Software Maintenance: The Software Service Bay

A Model for Component Based E-governance Software Systems

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

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

How To Understand Software Engineering

Chapter 8 Approaches to System Development

unless the manufacturer upgrades the firmware, whereas the effort is repeated.

An Analysis of the B2B E-Contracting Domain - Paradigms and Required Technology 1

Processing and data collection of program structures in open source repositories

CALCULATING THE COSTS OF MANUAL REWRITES

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

CHAPTER 7 Software Configuration Management

Structure of Presentation. The Role of Programming in Informatics Curricula. Concepts of Informatics 2. Concepts of Informatics 1

A Software Engineering Process for Operational Space Weather Systems. S. Dave Bouwer, W. Kent Tobiska Space Environment Technologies

Software Development Life Cycle (SDLC)

Chapter 13 Configuration Management

COMP 354 Introduction to Software Engineering

Outline. Definitions. Course schedule

Software Engineering Tools and Methods

Software Engineering. Introduction. Software Costs. Software is Expensive [Boehm] ... Columbus set sail for India. He ended up in the Bahamas...

Component Based Development in Software Engineering

An Introduction to the ECSS Software Standards

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

Architecture Centric Development in Software Product Lines

Agile Methods and Software Maintenance by Dr. David F. Rico, PMP, CSM

A Security Approach in System Development Life Cycle

Chapter 13 Configuration Management

Software Process Improvement Framework for Software Outsourcing Based On CMMI Master of Science Thesis in Software Engineering and Management

Risk Based Software Development Reducing Risk and Increasing the Probability of Project Success

A Study on Software Metrics and Phase based Defect Removal Pattern Technique for Project Management

OOP? What is OOP? Why? OOP in a nutshell. Stéphane Ducasse 2.1

THE APPLICATION OF THE PARETO PRINCIPLE IN SOFTWARE ENGINEERING.

Transcription:

Slide 1.1 CHAPTER 1 Slide 1.2 Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 THE SCOPE OF OBJECT-ORIENTED SOFTWARE ENGINEERING Stephen R. Schach srs@vuse.vanderbilt.edu Outline Slide 1.3 Outline (contd) Slide 1.4 _ Historical aspects _ Why there is no testing phase _ Economic aspects _ Maintenance aspects _ Requirements, analysis, and design aspects _ Why there is no documentation phase _ The object-oriented paradigm _ Terminology _ Team development aspects _ Why there is no planning phase _ Ethical issues 1.1 Historical Aspects Slide 1.5 Standish Group Data Slide 1.6 _ 1968 NATO Conference, Garmisch, Germany _ Aim: To solve the software crisis _ Software is delivered Late Over budget With residual faults _ Data on 9236 projects completed in 2004 Figure 1.1 1

Cutter Consortium Data Slide 1.7 Slide 1.8 _ 2002 survey of information technology organizations 78% have been involved in disputes ending in litigation _ For the organizations that entered into litigation: In 67% of the disputes, the functionality of the information system as delivered did not meet up to the claims of the developers In 56% of the disputes, the promised delivery date slipped several times In 45% of the disputes, the defects were so severe that the information system was unusable _ The software crisis has not been solved _ Perhaps it should be called the software depression Long duration Poor prognosis 1.2 Economic Aspects Slide 1.9 1.3 Maintenance Aspects Slide 1.10 _ Coding method CM new is 10% faster than currently used method CM old. Should it be used? _ Common sense answer Of course! _ Life-cycle model The steps (phases) to follow when building software A theoretical description of what should be done _ Life cycle The actual steps performed on a specific product _ Software Engineering answer Consider the cost of training Consider the impact of introducing a new technology Consider the effect of CM new on maintenance Waterfall Life-Cycle Model Slide 1.11 Typical Classical Phases Slide 1.12 _ Classical model (1970) _ Requirements phase Explore the concept Elicit the client s requirements _ Analysis (specification) phase Analyze the client s requirements Draw up the specification document Draw up the software project management plan What the product is supposed to do Figure 1.2 2

Typical Classical Phases (contd) Slide 1.13 Typical Classical Phases (contd) Slide 1.14 _ Design phase Architectural design, followed by Detailed design How the product does it _ Postdelivery maintenance Corrective maintenance Perfective maintenance Adaptive maintenance _ Implementation phase Coding Unit testing Integration Acceptance testing _ Retirement 1.3.1 The Modern View of Maintenance Slide 1.15 Classical Maintenance Defn Consequence 1 Slide 1.16 _ Classical maintenance Development-then-maintenance model _ This is a temporal definition Classification as development or maintenance depends on when an activity is performed _ A fault is detected and corrected one day after the software product was installed Classical maintenance _ The identical fault is detected and corrected one day before installation Classical development Classical Maintenance Defn Consequence 2 Slide 1.17 Classical Maintenance Definition Slide 1.18 _ A software product has been installed _ The client wants its functionality to be increased Classical (perfective) maintenance _ The client wants the identical change to be made just before installation ( moving target problem ) Classical development _ The reason for these and similar unexpected consequences Classically, maintenance is defined in terms of the time at which the activity is performed _ Another problem: Development (building software from scratch) is rare today Reuse is widespread 3

Modern Maintenance Definition Slide 1.19 Modern Maintenance Definition (contd) Slide 1.20 _ In 1995, the International Standards Organization and International Electrotechnical Commission defined maintenance operationally _ Maintenance is nowadays defined as The process that occurs when a software artifact is modified because of a problem or because of a need for improvement or adaptation _ In terms of the ISO/IEC definition Maintenance occurs whenever software is modified Regardless of whether this takes place before or after installation of the software product _ The ISO/IEC definition has also been adopted by IEEE and EIA Maintenance Terminology in This Book Slide 1.21 1.3.2 The Importance of Postdelivery Maintenance Slide 1.22 _ Postdelivery maintenance Changes after delivery and installation [IEEE 1990] _ Modern maintenance (or just maintenance) Corrective, perfective, or adaptive maintenance performed at any time [ISO/IEC 1995, IEEE/EIA 1998] _ Bad software is discarded _ Good software is maintained, for 10, 20 years or more _ Software is a model of reality, which is constantly changing Time (= Cost) of Postdelivery Maintenance Slide 1.23 1.4 Requirements, Analysis, and Design Aspects Slide 1.24 _ The earlier we detect and correct a fault, the less it costs us (a) Between 1976 and 1981 (b) Between 1992 and 1998 Figure 1.3 4

Requirements, Analysis, and Design Aspects (contd) Slide 1.25 Requirements, Analysis, and Design Aspects (contd) Slide 1.26 _ The cost of detecting and correcting a fault at each phase _ The previous figure redrawn on a linear scale Figure 1.4 Figure 1.5 Requirements, Analysis, and Design Aspects (contd) Slide 1.27 Requirements, Analysis, and Design Aspects (contd) Slide 1.28 _ To correct a fault early in the life cycle Usually just a document needs to be changed _ To correct a fault late in the life cycle Change the code and the documentation Test the change itself Perform regression testing Reinstall the product on the client s computer(s) _ Between 60 and 70% of all faults in large-scale products are requirements, analysis, and design faults _ Example: Jet Propulsion Laboratory inspections 1.9 faults per page of specifications 0.9 per page of design 0.3 per page of code Slide 1.29 1.5 Team Programming Aspects Slide 1.30 _ It is vital to improve our requirements, analysis, and design techniques To find faults as early as possible To reduce the overall number of faults (and, hence, the overall cost) _ Hardware is cheap We now can build products that are too large to be written by one person in the available time _ So Software is built by teams Interfacing problems between modules Communication problems among team members 5

1.6 Why There Is No Planning Phase Slide 1.31 Planning Activities of the Waterfall Model Slide 1.32 _ We cannot plan at the beginning of the project we do not yet know exactly what is to be built _ Preliminary planning of the requirements and analysis phases at the start of the project _ The software project management plan is drawn up when the specifications have been signed off by the client _ Management needs to monitor the SPMP throughout the rest of the project Slide 1.33 1.7 Why There Is No Testing Phase Slide 1.34 _ Planning activities are carried out throughout the life cycle _ It is far too late to test after development and before delivery _ There is no separate planning phase Testing Activities of the Waterfall Model Slide 1.35 Slide 1.36 _ Verification Testing at the end of each phase (too late) _ Continual testing activities must be carried out throughout the life cycle _ Validation Testing at the end of the project (far too late) _ This testing is the responsibility of Every software professional, and The software quality assurance group _ There is no separate testing phase 6

1.8 Why There Is No Documentation Phase Slide 1.37 Documentation Must Always be Current Slide 1.38 _ It is far too late to document after development and before delivery _ Key individuals may leave before the documentation is complete _ We cannot perform a phase without having the documentation of the previous phase _ We cannot test without documentation _ We cannot maintain without documentation Slide 1.39 1.9 The Object-Oriented Paradigm Slide 1.40 _ Documentation activities must be performed in parallel with all other development and maintenance activities _ There is no separate documentation phase _ The structured paradigm was successful initially It started to fail with larger products (> 50,000 LOC) _ Postdelivery maintenance problems (today, 70 to 80% of total effort) _ Reason: Classical methods are Action oriented; or Data oriented; But not both The Object-Oriented Paradigm (contd) Slide 1.41 Strengths of the Object-Oriented Paradigm Slide 1.42 _ Both data and actions are of equal importance _ Object: A software component that incorporates both data and the actions that are performed on that data _ Example: Bank account» Data: account balance» Actions: deposit, withdraw, determine balance _ 1. With information hiding, postdelivery maintenance is safer The chances of a regression fault are reduced _ 2. Development is easier Objects generally have physical counterparts This simplifies modeling (a key aspect of the objectoriented paradigm) 7

Strengths of the Object-Oriented Paradigm (contd) Slide 1.43 Weaknesses of the Object-Oriented Paradigm Slide 1.44 _ 3. Well-designed objects are independent units Everything that relates to the real-world item being modeled is in the corresponding object encapsulation Communication is by sending messages This independence is enhanced by responsibility-driven design (the way the operation is done is the responsibility of the object) _ 1. The object-oriented paradigm has to be used correctly All paradigms are easy to misuse _ 2. When used correctly, the object-oriented paradigm can solve some (but not all) of the problems of the classical paradigm Weaknesses of the Object-Oriented Paradigm (contd) Slide 1.45 1.10 Terminology Slide 1.46 _ 3. The object-oriented paradigm has problems of its own _ 4. The object-oriented paradigm is the best alternative available today However, it is certain to be superceded by something better in the future _ Client, developer, user _ Internal software _ Contract software _ Commercial off-the-shelf (COTS) software (shrinkwrapped sw or clickware) _ Open-source software Linus s Law ( given enough eyeballs, all bugs are shallow ) Terminology (contd) Slide 1.47 Terminology (contd) Slide 1.48 _ Software _ Program (sw ind. Unit), system (sw and hw), product (non-trivial piece of sw) _ Methodology, paradigm Object-oriented paradigm Classical (traditional) paradigm _ Mistake, fault, failure, error _ Defect _ Bug A bug crept into the code instead of I made a mistake _ Technique (specific to phase or task) 8

Object-Oriented Terminology Slide 1.49 Object-Oriented Terminology (contd) Slide 1.50 _ Data component of an object State variable Instance variable (Java) Field (C++) Attribute (generic) _ Action component of an object Member function (C++) Method (generic) _ C++: A member is either an Attribute ( field ), or a Method ( member function ) _ Java: A field is either an Attribute ( instance variable ), or a Method Definition of Object-Oriented Software Engineering Slide 1.51 1.11 Ethical Issues Slide 1.52 _ Software engineering A discipline whose aims are» The production of fault-free software,» Delivered on time and within budget,» That satisfies the client s needs» Furthermore, the software must be easy to modify when the client s needs change _ Developers and maintainers need to be Hard working Intelligent Sensible Up to date and, above all, Ethical _ Object-oriented software engineering A discipline that utilizes the object-oriented paradigm to achieve the aims of software engineering _ IEEE-CS ACM Software Engineering Code of Ethics and Professional Practice www.acm.org/serving/se/code.htm 9