Slide 1.1 CHAPTER 1 INTRODUCTION TO SOFTWARE ENGINEERING.

Slides:



Advertisements
Similar presentations
Object-Oriented and Classical Software Engineering Seventh Edition, WCB/McGraw-Hill, 2007 Stephen R. Schach
Advertisements

1 Introduction to Software Engineering Rajkumar Buyya Grid Computing and Distributed Systems Lab Dept. of Computer Science and Software Engineering University.
Overview and History of Software Engineering
Presented by Group: 110: Byron Sinclair, Jacob Alexander, and Manmeet Singh.
Ch 3: Unified Process CSCI 4320: Software Engineering.
Object-Oriented Software Development CS 3331 Fall 2009.
10 Software Engineering Foundations of Computer Science ã Cengage Learning.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
CS3773 Software Engineering Lecture 01 Introduction.
System Analysis and Design (SAD )
Unit 231 Software Engineering Introduction to SWE What is SDLC Phases of SDLC.
Unit 191 Introduction to Software Engineering The objective of this section is to introduce the subject of software engineering. When you have read this.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Slide 1.1 © The McGraw-Hill Companies, 2002 Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
Slide 1.1 © Center for Research in Electronic Commerce, Xiamen University, 2004 Object-Oriented and Classical Software Engineering Fifth Edition, McGraw-Hill,
Chapter 2- Software Process Lecture 4. Software Engineering We have specified the problem domain – industrial strength software – Besides delivering the.
Introduction to Systems Analysis and Design
 Software Software  Program vs Software Products Program vs Software Products  Software Characteristics Software Characteristics  Software Crisis.
CHAPTER 19 Building Software.
Slide 1.1 Copyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill,
Slide 1.1 Copyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill,
Slide 1.1 Copyright © 2008 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen R.
Software Engineering CEN 4010 What is Software Engineering Historical Aspects NATO group coined the phrase during a 1968 meeting in Garmisch, Germany (
Ch 1: The Scope of Software Engineering
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1 SYS366 Lecture 1: Introduction to Systems. 2 What is Software Development? Software Development implies developing some software – but it does not involve.
Software Engineering CSCI Class 1- Introduction/Scope of Software Engineering August 22, 2009.
Software Development and Lifecycles CS201 Fall 2004 Week 11.
CS540 Software Design Lecture 2 1 Lecture 2: Software Design Methods Anita S. Malik Adapted from Budgen (2003) Chapter 3 and Schach.
1 Scope of Software Engineering Somnuk Keretho, Assistant Professor Department of Computer Engineering Faculty of Engineering, Kasetsart University
Lecture 1 Introduction to Software Engineering
Jump to first page (c) 1999, A. Lakhotia 1 Software engineering? Arun Lakhotia University of Louisiana at Lafayette Po Box Lafayette, LA 70504, USA.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
1 Introduction to Software Engineering Lecture 1.
The Systems Development Life Cycle
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
1 The Scope of Software Engineering Xiaojun Qi. 2 Software Engineering Software engineering is a discipline whose aim is the production of fault-free.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Systems Analysis and Design in a Changing World, Fourth Edition
1.1/46 Scope Of Software Engineering 1.2/46 Prologue… ‘Have you any idea what happened to our computers! Pay $0.00 bill, …, Pay the $0.00 bill within.
An Introduction to Software Engineering Support Lecture.
CSC 395 – Software Engineering Lecture 2: Programming As Art & Intro to Software Engineering.
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Slide 13.1 © The McGraw-Hill Companies, 2002 Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach.
Slide 1.1 Copyright © 2008 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen R.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
HNDIT23082 Lecture 06:Software Maintenance. Reasons for changes Errors in the existing system Changes in requirements Technological advances Legislation.
Software Engineering At Glance. Why We Need Software Engineering? The aim of software engineering is to solve the software crisis Software is delivered.
Dr. DEVENDRA TAYAL– THE SCOPE OF SOFTWARE ENGINEERING.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
Software Engineering At Glance. Why We Need Software Engineering? The aim of software engineering is to solve the software crisis Software is delivered.
Winter 2011SEG Chapter 11 Chapter 1 (Part 1) Review from previous courses Subject 1: The Software Development Process.
CS451 Software Maintenance Yugi Lee STB #555 (816) Note: This lecture was designed based on Stephen Schach’s.
Chapter 1 Software Engineering Principles. Problem analysis Requirements elicitation Software specification High- and low-level design Implementation.
Chapter 1: Introduction Omar Meqdadi SE 3860 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
From the customer’s perspective the SRS is: How smart people are going to solve the problem that was stated in the System Spec. A “contract”, more or less.
Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill Stephen R. Schach 1.
2. Software Development Processes. Software Engineering Outline Historical aspects Economic aspects Maintenance aspects Requirements, analysis, and design.
Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen R
Software Engineering--Introduction
Rekayasa Perangkat Lunak
Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach
Rekayasa Perangkat Lunak
Lecture 06:Software Maintenance
Presentation transcript:

Slide 1.1 CHAPTER 1 INTRODUCTION TO SOFTWARE ENGINEERING

Slide 1.2 Outline l Historical aspects l Economic aspects l Maintenance aspects l Specification and design aspects l Team programming aspects l The object-oriented paradigm l Terminology

Slide 1.3 Scope of Software Engineering l Historical Aspects –A NATO study group in 1967 coined the term software engineering – “building software is similar to other engineering tasks” –Endorsed by the 1968 NATO Conference in Garmisch, Germany –Aim: to solve the “Software Crisis” –Software is delivered »Late »Over budget »Low quality with lots of faults –Software crisis is still present over 35 years later!

Slide 1.4 Scope of Software Engineering (contd) l Why cannot bridge-building techniques be used to build operating systems? –Attitude to collapse »Bridge collapse - redesigned and rebuilt from scratch »Operating system crash – reboot! –Imperfect engineering »Bridges are assumed to be perfectly engineered »OSs are assumed to be imperfectly engineered –Complexity is growing faster than we can master –Maintenance »Bridge maintenance – painting, repairing cracks, resurfacing the road »Software maintenance – porting to new hardware, adding more functions, re-write some parts, etc.

Slide 1.5 Conclusion l Software engineering is a discipline whose aim is the production of fault-free software that satisfies the user’s needs and is delivered on time within budget l Software Engineering is not “Engineering” –Not as the same way viewed in other engineering disciplines

Slide 1.6 Economic Aspects l Computer scientists investigate a variety of ways to produce software but software engineers are interested in economically viable techniques l Coding method CM new is 10% faster than currently used method CM old. Should it be used? –Common sense answer »Of course! –Software Engineering answer must consider »the cost of introducing CM new into an organization »the effect of CM new on maintenance

Slide 1.7 Maintenance Aspects l Software Life Cycle –The way we produce software, including »The life-cycle model »The individuals »CASE tools l Until the end of 1970s, most organizations were producing software using the Waterfall Model

Slide 1.8 Life-cycle Model 1. Requirements phase - Client’s requirements are elicited 2. Specification phase - what is the software supposed to do? 3. Design phase - how the software does it 4. Implementation phase – coding and testing the components 5. Integration phase - combined and tested 6. Maintenance phase -Corrective (repair) -Enhancement (update) 7. Retirement –Removed from service

Slide 1.9 Approximate Relative Cost of Each Phase l 1976–1981 data l Maintenance constitutes 67% of total cost

Slide 1.10 Comparative Relative Cost of Each Phase

Slide 1.11 Good and Bad Software l Good software is maintained—bad software is discarded l Different types of maintenance –Corrective maintenance [about 20%] –Enhancement »Corrective (Perfective) maintenance [about 60%] »Enhancement (Adaptive) maintenance [about 20%] l Effect of CM new on maintenance

Slide 1.12 Specification and Design Aspects l 60 to 70 percent of faults are specification and design faults [Boehm, 1979] l Data of Kelly, Sherif, and Hops [1992] –1.9 faults per page of specification –0.9 faults per page of design –0.3 faults per page of code

Slide 1.13 Cost to Detect and Correct a Fault

Slide 1.14 Specification and Design Aspects (contd) l Data of Bhandari et al. [1994] l Faults at end of the design phase of the new version of the product –13% of faults from previous version of product –16% of faults in new specifications –71% of faults in new design l Faults must be found and corrected early in the development stage, otherwise it will cost a lot!

Slide 1.15 Team Programming Aspects l Hardware is cheap –performance-price factor = time to perform 1 million additions x cost of CPU and main memory –We can build products that are too large to be written by one person in the available time l Large product must be developed by a team l But team programming leads to –Interface problems –Communication problems l Good team organization and management is essential

Slide 1.16 The Object-Oriented Paradigm l Structured paradigm had great successes initially –Structured systems analysis, data flow analysis, structured programming, structured testing –It started to fail with larger products (> 50,000 LOC) l Maintenance problems (today, up to 80% of effort) l Reason: structured methods are –Action oriented (finite state machines, data flow diagrams); or –Data oriented (entity-relationship diagrams, Jackson’s method); –But not both

Slide 1.17 The Object-Oriented Paradigm (contd) l Both data and actions are of equal importance l Object: –Software component that incorporates both data and the actions that are performed on that data l Example: –Bank account »Data: account balance »Actions: deposit, withdraw, determine balance

Slide 1.18 Structured versus Object-Oriented Paradigm

Slide 1.19 Key Aspects of Object-Oriented Solution l Conceptual independence –Encapsulation l Physical independence –Information hiding l Impact on development –Physical counterpart l Impact on maintenance –Independence effects: only changes that need be made are within the object itself l Increased reusabilty –Can be utilized in the future products

Slide 1.20 Responsibility-Driven Design l Also called “Design by Contract” l Send flowers to your aunt in Iowa City –Call FLOWERS –Where is FLOWERS? –Which Iowa City florist does the delivery? –Information hiding l Object-oriented paradigm –“Send a message to a method [action] of an object“

Slide 1.21 Transition From Analysis to Design l Structured paradigm: –A sharp transition between analysis (what) and design (how) l Object-oriented paradigm: –Objects enter from very beginning

Slide 1.22 Analysis/Design “Hump” l Systems analysis –Determine what has to be done l Design –Determine how to do it –Architectural design—determine modules –Detailed design—design each module

Slide 1.23 Removing the “Hump” l Object-oriented analysis –Determine what has to be done –Determine the objects l Object-oriented design –Determine how to do it –Design the objects

Slide 1.24 In More Detail l Objects enter here

Slide 1.25 Warning l Do not use the object-paradigm to enhance a product developed using the structured paradigm –Water and oil do not mix l Exception: if the new part is totally disjoint –Example: adding a GUI (graphical user interface)

Slide 1.26 Terminology l Program, system l Software: program + documentation l Product –a nontrivial piece of software –The end result of software production l Software production: development + maintenance l Methodology, paradigm: a collection of techniques for carrying out the software production Bug  –“A bug  crept into the code” instead of –“I made an error”

Slide 1.27 Object-Oriented Terminology l Data component of an object –State variable –Instance variable (Java) –Field (C++) –Attribute (generic) l Action component of an object –Member function (C++) –Method (generic)

Slide 1.28 Object-Oriented Terminology (contd) l C++: A member is either an –Attribute (“field”), or a –Method (“member function”) l Java: A field is either an –Attribute (“instance variable”), or a –Method l Read Chapter 1 l Do Problems