• 沒有找到結果。

Software Engineering

N/A
N/A
Protected

Academic year: 2022

Share "Software Engineering"

Copied!
42
0
0

加載中.... (立即查看全文)

全文

(1)

Software Engineering

Sheng Bin

Shanghai Jiao Tong University

(2)

Software Engineering

Course Information Teacher:

Bin Sheng( 盛斌 )

SEIEE3-511, 15026790946, shengbin@cs.sjtu.edu.cn

Teaching Assistant:

Li XIA( 夏立 ) ziggzagg@sjtu.edu.cn

Project Mentors:

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

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

(3)

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

(4)

Software Engineering

Course Overview

Part B: The Workflows of the Software Life Cycle

10. 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

(5)

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 pr oject

One (1) new project allowed

Email your project idea ASAP, before proposal is due, fo r feedback.

5

(6)

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 31 Oct 31 Oct 31 3. Second report (Design only)

• Part 1 (Interaction Diagrams)

• Part 2 (Class Diagram and System Architecture) • Full Report #2

Dec 1 Dec 8 Dec 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.

(7)

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

(8)

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 America 1. Software engineer 2. College professor 3. Financial advisor

4. Human resources manager 5. Physician assistant

6. Market research analyst 7. Computer/IT analyst 8. Real estate appraiser 9. Pharmacist

10. Psychologist

Money Magazine recently published

"Best Jobs in America"

(9)

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

(10)

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; overhea d cost modeled in rate for person month

Though not perfect, some productivity measure is needed, as project has to keep it high

(11)

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 indust ry builds are two different things

(12)

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?

(13)

Software Engineering

Software…

Student

Developer is the use r

Works for the typical case most of the tim e

Bugs are tolerable

UI not important

No documentation

Industrial Strength Others are the users

Works robustly

Bugs not tolerated

UI very important iss ue

Documents needed f or the user as well as for the organization a nd the project

(14)

Software Engineering

Software…

Student

SW not in critical use Reliability, robustness not important

No investment

Don’t care about port ability

Industrial Strength Supports important fu nctions / business

Reliability , robustnes s are very important Heavy investment

Portability is a key iss ue here

(15)

Software Engineering

Industrial Strength Software

Student programs != industrial strength softwa re

Key difference is in quality (including usability, reliability, portability, etc.)

High quality requires heavy testing, which consum es 30-50% of total development effort

Requires development be broken in stages such t hat bugs can be detected in each

Good UI, backup, fault-tolerance, following of stds etc all increase the size for the same functionality

(16)

Software Engineering

Industrial strength software

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

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

In this course, software == industrial strength so ftware

(17)

Software Engineering

What is software?

Computer programs and associated docu mentation

Software products may be developed for a p articular customer or may be developed for a general market

Software products may be

Generic - developed to be sold to a range of differ ent customers

Bespoke (custom) - developed for a single custo mer according to their specification

(18)

Software Engineering

Software is Expensive

Rough cost estimate…

Productivity = 500 LOC/PM

Cost to the company = $10K/PM

Cost per LOC = $20

So each line of delivered code costs about $20.

A simple application for a business may have 2 0KLOC to 50KLOC

Cost = $100K to $1Million

Can easily run on $10K-$20K hardware

So HW costs <<< SW costs.

(19)

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

(20)

Software Engineering

Software is Complex

Complex  complicated

Complex = composed of many simple parts related to one another

Complicated = not well understood, or explained

(21)

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 ]

(22)

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 ]

(23)

Software Engineering

Late & Unreliable

20-25% of SW projects never complete

Because after some time they realize that the fina l 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 eq uipment problems are due to SW

(24)

Software Engineering

Why is SW Unreliable?

SW failures are different from failures of mecha nical or electrical systems

In software, failures are not due to aging related pro blems

Failures occur due to bugs or errors that get introduc ed during development

The bug that causes a failure typically exists from st art, only manifests later

(25)

Software Engineering

Maintenance

Once SW delivered, it enters maintenance phas e

Why is maintenance needed for SW when it do es not wear with age?

Residual errors requiring corrective maintenance

Upgrades and environment changes – adaptive mai ntenance

Over SW lifetime, maintenance can cost more t han the development cost of SW

(26)

Software Engineering

What is Software Engineering?

Problem domain discussed before, now we discu ss the area of SE

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

Systematic approach: methodologies and practic es that can be used to solve a problem from prob lem domain

2 6

(27)

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/swebo k/html/ch1

(28)

Software Engineering

Basic Problem

CS3130 SOFTWARE ENGINEERING – Summer 2011

2 8

(29)

Software Engineering

The Role of Software Engg. (1)

Customer Customer

Software Engineering

Programmer A bridge from customer needs to programming implementation

First law of software engineering

Software engineer is willing to learn the problem domain

(problem cannot be solved without understanding it first)

29

(30)

Software Engineering

The Role of Software Engg. (2)

30 Customer:

Requires a computer system to achieve some business goals by user interaction or interaction with the environment

in a specified manner

System-to-be

Software-to-be System-to-be

Software-to-be User

Software Engineer’s task:

To understand how the system-to-be needs to interact with the user or the environment so that customer’s requirement is met and design the software-to-be

Programmer’s task:

To implement the software-to-be designed by the software engineer

Environment

May be the same person

(31)

Software Engineering

Second Law of Software Engineering

Software should be written for people first

( Computers run software, but hardware quickly becomes outd ated )

Useful + good software lives log

To nurture software, people must be able to understand it

31

(32)

Software Engineering

Software Engineering Blueprints

Specifying software problems and solutions is li ke cartoon strip writing

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

UML symbols

However …

32

(33)

Software Engineering

What is software engineering?

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

Software engineers should

adopt a systematic and organised approach to their w ork

use appropriate tools and techniques depending on

the problem to be solved,

the development constraints and

the resources available

(34)

Software Engineering

What is the difference between softwar e 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

(35)

Software Engineering Computer Scientist

Proves theorems about algorithms, designs languages, defines knowl edge 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

(36)

Software Engineering

What is the difference between softwar e engineering and system engineerin

g?

System engineering is concerned with all aspects of c omputer-based systems development including hardwar e, software and process engineering

Software engineering is part of this process

System engineers are involved in

system specification, architectural design, integ ration and deployment

(37)

Software Engineering

What is a software process?

A set of activities whose goal is the development or evolution of software

Generic activities in all software processes are:

Specification - what the system should do and its develop ment constraints

Development - production of the software system

Validation - checking that the software is what the custom er wants

Evolution - changing the software in response to changing demands

(38)

Software Engineering

What are the costs of software engineering?

Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evoluti on costs often exceed development costs

Costs vary depending on the type of system bein g developed and the requirements of system attrib utes such as performance and system reliability

Distribution of costs depends on the developme nt model that is used

(39)

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 design ed

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

dependable and usable

(40)

Software Engineering

What are the key challenges

facing software engineering?

Software engineering in the 21st century faces three k ey challenges:

Legacy systems

Old, valuable systems must be maintained and updated

Heterogeneity

Systems are distributed and include a mix of har dware and software

Delivery

There is increasing pressure for faster delivery of software

(41)

Software Engineering

Professional and ethical responsibility

Software engineering involves wider responsibilitie s than simply the application of technical skills

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

Ethical behaviour is more than simply uphold ing the law

(42)

Thanks

shengbin@cs.sjtu.edu.cn

參考文獻

相關文件

化學風化作用(Chemical Weathering) :係岩石被溶解、氧化及

The original curriculum design for the Department of Construction Engineering of CYUT was to expose students to a broad knowledge in engineering and applied science rather than

Department of Computer Science and Information Engineering, Chaoyang University of

Overview of a variety of business software, graphics and multimedia software, and home/personal/educational software Web applications and application software for

This was followed by architectural, surveying and project engineering services related to construction and real estate activities (with a share of 17.6%); accounting, auditing

In these lessons, students will evaluate the impacts of genetic engineering on our daily life, and analyze the moral issues raised in its development, especially those related

The aim of this study is to develop and investigate the integration of the dynamic geometry software GeoGebra (GGB) into eleventh grade students’.. learning of geometric concepts

development of AutoLISP programming language for building and into Knowledge Engineering (Knowledge Based Engineering, KBE) technology, the ball screw and linear guideway the use