42
Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering Sheng Bin Shanghai Jiao Tong University

Embed Size (px)

Citation preview

Page 1: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Sheng Bin

Shanghai Jiao Tong University

Page 2: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Course Information

Teacher:

Bin Sheng( 盛斌 )

SEIEE3-511, 15026790946, [email protected]

Teaching Assistant:Li XIA( 夏立 ) [email protected]

Project Mentors: 樊增智 谯从彬 夏立 杜皓 殷本俊 裴树炜Course Website:

http://www.cs.sjtu.edu.cn/~shengbin/course/SE/sesite/home.html

Page 3: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Course Overview

Part A: Software Engineering Concepts

2. Software Life-Cycle Models

3. The Software Process

4. Teams

5. The Tools of the Trade

6. Testing

7. From Modules to Objects

8. Reusability and Portability

9. Planning and Estimating

Page 4: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Course Overview

Part B: The Workflows of the Software Life Cycle10. Key Material from Part A

11. Requirements

12. Classical Analysis

13. Object-Oriented Analysis

14. Design

15. Implementation

16. Postdelivery Maintenance

17. More on UML

18. Emerging Technologies

Page 5: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Team Projects

Form teams of 3 (± 1?) students

DEADLINE: Sept 28, 2014 After that, teams assigned randomly

Project Ideas: Pls refer to the project presentation ppt.

No more than two (2) groups working on the same project

One (1) new project allowed• Email your project idea ASAP, before proposal is due,

for feedback.

5

Page 6: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Project Deliverables

6

Item Due date

Software Engineeri

ng

1.   Proposal Sept 28 2.   First report   (Specification only)      • Part 1 (Statement of Work & Requirements)      • Part 2 (Functional Requirements Spec & UI)      • Full Report #1

 Oct 31Oct 31Oct 31

3.   Second report   (Design only)      • Part 1 (Interaction Diagrams)      • Part 2 (Class Diagram and System Architecture)      • Full Report #2

 Dec 1Dec 8Dec 15

4.   First demo Dec 2 ..

SE Practice

5.   Third report   (All reports collated) Dec 27 6.   final demo Dec 31 ... 7.   Electronic Project Archive Dec 3

Assignment + Attendance= 30%Project=70%

Each group will have a mentor to guide the development of the project.

Page 7: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Reference book: 1. Stephen R Schach, Object Oriented And Classical Software

Engineering 8th Edition, McGraw-Hill.

2. Bruegge & Dutoit: Object-Oriented Software Engineering, Using UML, Patterns and Java, Third Edition, Prentice Hall, 2010.

3. Sommerville, Ian: Software Engineering,9th Edition, Addison Wesley.

4. Miles & Hamilton: Learning UML 2.0, O’Reilly Media, 2006. ISBN: 0-596-00982-8

Page 8: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Why should we learn SE?

Why should we learn SE?• Because you are from Computer Science• SE is the best jobs

• best job of 2011, Career Cast

Best Jobs in America1. Software engineer2. College professor3. Financial advisor4. Human resources manager5. Physician assistant6. Market research analyst7. Computer/IT analyst8. Real estate appraiser9. Pharmacist10. Psychologist

Money Magazine recently published "Best Jobs in America"

Page 9: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Source: US Department of Labor/Bureau of Labor Statistics (Occupational Employment Surveys)

According to the BLS, software engineering unemployment was 4.6% in 2010, compared to 5.4% for electrical engineers.

Average Annual Wages

Page 10: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Software

Q : If you have to write a 10,000 line program in C to solve a problem, how long will it take?

Answers: generally range from 2-4 months

Let us analyze the productivity• Productivity = output/input resources• In SW output is considered as LOC• Input resources is effort - person months;

overhead cost modeled in rate for person month• Though not perfect, some productivity measure is

needed, as project has to keep it high

Page 11: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Software …

The productivity is 2.5-5 KLOC/PM

Q: What is the productivity in a typical commercial SW organization ?

A: Between 100 to 2000 LOC/PM

Q: Why is it low, when your productivity is so high? (people like you work in the industry)

A: What the student is building and what the industry builds are two different things

Page 12: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Software…

Students build: student software

Industry builds: industrial strength Systems

What is the difference between • student software and • industrial strength software

for the same problem?

Page 13: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Software…

Student

Developer is the user• Works for the typical

case most of the time

• Bugs are tolerable• UI not important• No documentation

Industrial Strength

Others are the users• Works robustly• Bugs not tolerated• UI very important

issue• Documents needed

for the user as well as for the organization and the project

Page 14: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Software…

Student

SW not in critical use

Reliability, robustness not important

No investment

Don’t care about portability

Industrial Strength

Supports important functions / business

Reliability , robustness are very important

Heavy investment

Portability is a key issue here

Page 15: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Industrial Strength Software

Student programs != industrial strength software

Key difference is in quality (including usability, reliability, portability, etc.)• High quality requires heavy testing, which

consumes 30-50% of total development effort• Requires development be broken in stages such

that bugs can be detected in each• Good UI, backup, fault-tolerance, following of stds

etc all increase the size for the same functionality

Page 16: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Industrial strength software

If 1/5th productivity, and increase in size by a factor of 2, industrial strength software will take 10 times effort

Brooks thumb-rule: Industrial strength SW costs 10 time more than student SW

In this course, software == industrial strength software

Page 17: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

What is software?

Computer programs and associated documentation

Software products may be developed for a particular customer or may be developed for a general marketSoftware products may be• Generic - developed to be sold to a range of

different customers• Bespoke (custom) - developed for a single

customer according to their specification

Page 18: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Software is Expensive

Rough cost estimate…Productivity = 500 LOC/PMCost to the company = $10K/PMCost per LOC = $20So each line of delivered code costs about $20.

A simple application for a business may have 20KLOC to 50KLOCCost = $100K to $1MillionCan easily run on $10K-$20K hardwareSo HW costs <<< SW costs.

Page 19: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Software is Expensive…

The HW/SW ratio for a computer system has shown a reversal from the early years.• In 50s , HW:SW :: 80:20• In 80s , HW:SW :: 20:80

So, SW is very expensive• Importance of optimizing HW is not much• More important to optimize SW

Page 20: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Software is Complex

Complex complicated

Complex = composed of many simple parts

related to one another

Complicated = not well understood, or explained

Page 21: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Complexity Example:Scheduling Fence Construction Tasks

Setting posts[ 3 time units ]

Cutting wood[ 2 time units ]

Painting[ 5 time units for uncut wood;

4 time units otherwise ]

Nailing[ 2 time units for unpainted;

3 time units otherwise ]

Setting posts Nailing, Painting

Cutting Nailing

…shortest possible completion time = ?[ “simple” problem, but hard to solve without a pen and paper ]

Page 22: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

More Complexity

Suppose today is Monday, Sept 9, 2013

What day will be on January 3, 2014?

[ To answer, we need to bring the day names and the day numbers into coordination, and for that we may need again a pen and paper ]

Page 23: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Late & Unreliable

20-25% of SW projects never complete• Because after some time they realize that the

final cost will be much higher

Many companies report “runaways”• Budget & cost out of control• Consulting companies to help control them

One defense survey found that 70% of the equipment problems are due to SW

Page 24: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Why is SW Unreliable?

SW failures are different from failures of mechanical or electrical systems

• In software, failures are not due to aging related problems

• Failures occur due to bugs or errors that get introduced during development

• The bug that causes a failure typically exists from start, only manifests later

Page 25: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Maintenance

Once SW delivered, it enters maintenance phase

Why is maintenance needed for SW when it does not wear with age?• Residual errors requiring corrective maintenance• Upgrades and environment changes – adaptive

maintenance

Over SW lifetime, maintenance can cost more than the development cost of SW

Page 26: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

What is Software Engineering?

Problem domain discussed before, now we discuss the area of SE

SE (IEEE): systematic approach to development [….] of software

Systematic approach: methodologies and practices that can be used to solve a problem from problem domain

26

Page 27: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

What is SE?

The SWEBOK Knowledge Areas (KAs) 

  Software requirements  Software design

  Software construction  Software testing

  Software maintenance  Software configuration management  Software engineering management

  Software engineering process  Software engineering tools and methods

  Software quality

http://www.computer.org/portal/web/swebok/html/ch1

Page 28: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Basic Problem

CS3130 SOFTWARE ENGINEERING – Summer 2011

28

Page 29: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

The Role of Software Engg. (1)

CustomerCustomerProgrammer

A bridge from customer needs to programming implementation

First law of software engineeringSoftware engineer is willing to learn the problem domain

(problem cannot be solved without understanding it first)

29

Page 30: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

The Role of Software Engg. (2)

30

Customer:Requires a computer system to achieve some business goalsby user interaction or interaction with the environmentin a specified manner

System-to-be

Software-to-be

System-to-be

Software-to-beUser

Software Engineer’s task:To understand how the system-to-be needs to interact withthe user or the environment so that customer’s requirement is metand design the software-to-be

Programmer’s task:To implement the software-to-bedesigned by the software engineer

Environment

May be thesame person

Page 31: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Second Law of Software Engineering

Software should be written for people first

• ( Computers run software, but hardware quickly becomes

outdated )

• Useful + good software lives log

• To nurture software, people must be able to understand it

31

Page 32: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Software Engineering Blueprints

Specifying software problems and solutions is like cartoon strip writing

Unfortunately, most of us are not artists, so we will use something less exciting:UML symbols

However …

32

Page 33: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

What is software engineering?

Software engineering is an engineering discipline which is concerned with all aspects of software production

Software engineers should • adopt a systematic and organised approach to their

work • use appropriate tools and techniques depending on

• the problem to be solved, • the development constraints and • the resources available

Page 34: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

What is the difference between software engineering and computer

science?

Computer Science Software Engineering

is concerned with

Computer science theories are currently insufficient to act as a complete

underpinning for software engineering

theory

fundamentals

the practicalities of developing

delivering useful software

Page 35: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Computer Scientist• Proves theorems about algorithms, designs languages, defines

knowledge representation schemes• Has infinite time…

Engineer• Develops a solution for an application-specific problem for a client• Uses computers & languages, tools, techniques and methods• Has finite (usually not enough) time…

Software Engineer• Works in multiple application domains• Has only 3 months...• …while changes occurs in requirements and available technology

Page 36: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

What is the difference between software engineering and system

engineering?System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering

Software engineering is part of this process

System engineers are involved in system specification, architectural design,

integration and deployment

Page 37: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

What is a software process?

A set of activities whose goal is the development or evolution of softwareGeneric activities in all software processes are:• Specification - what the system should do and its

development constraints• Development - production of the software system• Validation - checking that the software is what the

customer wants• Evolution - changing the software in response to changing

demands

Page 38: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

What are the costs of software engineering?

Roughly 60% of costs are development costs, 40% are testing costs. For custom

software, evolution costs often exceed development costs

Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability

Distribution of costs depends on the development model that is used

Page 39: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

What are the attributes of good software?

Maintainability• Software must evolve to meet changing needs

Dependability• Software must be trustworthy

Efficiency• Software should not make wasteful use of system resources

Usability• Software must be usable by the users for which it was

designed

The software should deliver the required functionality and performance to the user and should be maintainable,

dependable and usable

Page 40: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

What are the key challenges facing software engineering?

Software engineering in the 21st century faces three key challenges:

Legacy systems• Old, valuable systems must be maintained and updated

Heterogeneity• Systems are distributed and include

a mix of hardware and software

Delivery• There is increasing pressure

for faster delivery of software

Page 41: Software Engineering Sheng Bin Shanghai Jiao Tong University

Software Engineering

Professional and ethical responsibility

Software engineering involves wider responsibilities than simply the application of technical skills

Software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals

Ethical behaviour is more than simply upholding the law