instructor: mao ying-chi ( 毛莺池 ) email: [email protected] mao_yingchi@yahoo

81
河河河河河河河河河河河河河河 2004-02-12 http://csie.hh u.edu.cn 1 Instructor: Mao Ying-Chi ( 河河河 ) Email: [email protected] [email protected] Tel: 25-83787541 Software Engineering Software Engineering

Upload: shanna

Post on 21-Feb-2016

71 views

Category:

Documents


0 download

DESCRIPTION

Software Engineering. Instructor: Mao Ying-Chi ( 毛莺池 ) Email: [email protected] [email protected] Tel: 25-83787541. Syllabus. The basic concepts of SE The software development process Software requirements and specifications Software design techniques - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

河海大学计算机及信息工程学院2004-02-12

http://csie.hhu.edu.cn

1

Instructor: Mao Ying-Chi ( 毛莺池 )Email: [email protected] [email protected]: 25-83787541

Software EngineeringSoftware Engineering

Page 2: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 2河海大学计算机及信息工程学院

SyllabusSyllabus The basic concepts of SE The software development process Software requirements and

specifications Software design techniques Software testing, documentation and

maintenance Software measurement Software quality management CASE tools …

Page 3: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 3河海大学计算机及信息工程学院

Course ObjectivesCourse Objectives

Goal 1 To help students to develop skills that

will enable them to construct software of high quality – software that is reliable, and that is reasonably easy to understand, modify and maintain

Goal 2 To foster an understanding of why these

skills are important

Page 4: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 4河海大学计算机及信息工程学院

Teaching MethodsTeaching Methods Lectures (2 per week)

… are compulsory … cover core material

Practicals (1 per week) … last for 3 hours … are compulsory … are used for the team project … are used to the term assessments

Team meetings (at least 1 per week) You will need to meet with your team regularly

Labs There are no regularly scheduled lab sessions

Page 5: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 5河海大学计算机及信息工程学院

Lectures TimetableLectures Timetable

Location Time Northern building ( 北教 ) Room 203 Monday 3 - 4 Room 303 Wednesday 5 – 6 (week 1 to 14)

Page 6: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 6河海大学计算机及信息工程学院

AssessmentsAssessments Team projects

Team project is worth 40%. Presentation is worth 20% of your grade. All presentations are team presentations. Presentations include feasible analysis report,

design report, a demo of your project and summary.

The term paper is worth 20%. Final Exam

The end of term exam counts for 60% of the course grade and there is no mid-term exam.

Page 7: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 7河海大学计算机及信息工程学院

BooksBooks Course Text (Required)

杨文龙,姚淑珍,吴芸编著,软件工程,电子工业出版社 Other Texts (Recommended)

Roger S. Pressman, “Software Engineering: A Practitioner Approach (Fifth Edition)”. McGraw Hill Education Han van Vliet, “Software Engineering: Principles and Practice (Second Edition)”. Wiley Ian Sommerville, “Software Engineering (6th Edition)”. McGraw Hill Education 可视化面向对象建模技术,刘超、张莉编著,北京航空航天大学出版社

Background Reading I will suggest some other readings during the course.

Page 8: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 8河海大学计算机及信息工程学院

ContentsContents

Part I The traditional Software Engineering

Part II Object Oriented Software Engineering

(UML) Part III

Software Process, Management and Quality

Page 9: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 9河海大学计算机及信息工程学院

Team ProjectsTeam Projects 以“学生选课系统”为例以“学生选课系统”为例

采用面向对象软件工程的方法进行分析、设计、开发、采用面向对象软件工程的方法进行分析、设计、开发、测试及维护。测试及维护。

Page 10: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 10河海大学计算机及信息工程学院

项目分组项目分组 全班分为全班分为 33 组,每组组,每组 1010 人人 各组角色及其职责各组角色及其职责

项目经理(项目经理( 11 )) 系统分析员(系统分析员( 22 )) 软件开发工程师(软件开发工程师( 44 ) ) 测试工程师(测试工程师( 1/21/2 )) 流程及配置工程师(流程及配置工程师( 22 ))

Page 11: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 11河海大学计算机及信息工程学院

时间安排时间安排1 - 4 周 Rational 工具学习

5 周 确定各小组的项目内容6 - 7 周 可行性分析及需求分析8 - 10 周 详细设计8 - 10 周 界面设计(原型)

11 - 14 周 编码(代码生成等)6 - 14 周 软件测试6 - 14 周 软件配置管理6 - 14 周 软件开发过程管理

14 - 16 周 交付

Page 12: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 12河海大学计算机及信息工程学院

课程设计需要完成的文档课程设计需要完成的文档 可行性研究报告可行性研究报告 项目开发计划项目开发计划 需求规格说明书需求规格说明书 总体设计说明书总体设计说明书 详细设计说明书详细设计说明书 测试计划测试计划 测试分析报告测试分析报告 项目开发总结报告项目开发总结报告 用户手册用户手册 开发进度周报开发进度周报

Page 13: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 13河海大学计算机及信息工程学院

实验目的实验目的 体验软件工程各阶段的主要工作,特别注意吸取体验软件工程各阶段的主要工作,特别注意吸取教训;教训; 学会与他人合作,培养团队精神。学会与他人合作,培养团队精神。

现在开始行 动 起 来!

Page 14: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 14河海大学计算机及信息工程学院

OrientationOrientation

Any Questions??Any Questions??

Page 15: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 15河海大学计算机及信息工程学院

第第 11 讲 软件危机与软件工程讲 软件危机与软件工程

Page 16: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 16河海大学计算机及信息工程学院

从千年虫问题谈起从千年虫问题谈起 千年虫如同一个定时炸弹一样,十几年前就有人提出了预警,但是无人注意 直到日期到来的前两年,才引起了恐慌

Page 17: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 17河海大学计算机及信息工程学院

.COM.COM 浪潮浪潮 Wall Street investors gave tiny “dot-com” companies billion dollar valuations before these start-ups produced a dollar in sales. .COM 纷纷倒下 US government began to indict the biggest software company – Microsoft.

Page 18: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 18河海大学计算机及信息工程学院

“Computer software has become a driving force. It is the engine that drives business decision making. It servers as the basis for modern scientific investigation and engineering problem solving. It is a key factor that differentiates modern products and services. It is embedded in systems of all kinds: transportation, medical, telecommunications, military, industrial processes, entertainment, office products,… the list is almost endless. Software is virtually inescapable in a modern world. And as we move into the 21st century, it will become the driver for new advances in everything from elementary education to genetic engineering.”

Page 19: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 19河海大学计算机及信息工程学院

什么是软件什么是软件 软件软件是计算机系统中与硬件相互依存的另一部分,是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。它是包括程序,数据及其相关文档的完整集合。 程序程序是按事先设计的功能和性能要求执行的指令是按事先设计的功能和性能要求执行的指令序列序列 (instructions)(instructions) 数据数据是使程序能正常操纵信息的数据结构是使程序能正常操纵信息的数据结构 (data (data structures)structures) 文档文档是与程序开发,维护和使用有关的图文材料是与程序开发,维护和使用有关的图文材料(documents)(documents)

Page 20: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 20河海大学计算机及信息工程学院

什么是软件(续)什么是软件(续) And moreAnd more Software is developed or

engineered, it is not manufactured in the classical sense. High quality is achieved through good

design Depend on people Require the construction of a “product”

Page 21: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 21河海大学计算机及信息工程学院

软件的特点软件的特点 表现形式表现形式

软件是一种软件是一种逻辑实体逻辑实体,而不是具体的物理实体。因而,而不是具体的物理实体。因而它具有抽象性它具有抽象性 生产方式生产方式

软件的生产与硬件不同,在它的开发过程中软件的生产与硬件不同,在它的开发过程中没有明显没有明显的制造过程,的制造过程,大多数软件仍是大多数软件仍是定制的。定制的。 维护维护

在软件的运行和使用期间,在软件的运行和使用期间,没有硬件那样的机械磨损,没有硬件那样的机械磨损,老化问题老化问题 要求 ?要求 ?

软件产品不允许误差软件产品不允许误差

Page 22: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 22河海大学计算机及信息工程学院

Software doesn’t wear out.

Failurerate

Time

Infant mortality Wear

out

Failure curve for hardware

idealized curve

change

increased failurerate due to side effects

actual curve

But it does deteriorate!

There are no software spare parts

Although the industry is moving toward component-based assembly, most software continues to be custom built.

Page 23: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 23河海大学计算机及信息工程学院

Page 24: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 24河海大学计算机及信息工程学院

软件的特点软件的特点 软件的开发和运行常受到计算机系统的限制,对软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性计算机系统有着不同程度的依赖性 软件的开发至今软件的开发至今尚未完全摆脱手工艺的开发方式尚未完全摆脱手工艺的开发方式 软件本身是复杂的软件本身是复杂的

实际问题的复杂性实际问题的复杂性程序逻辑结构的复杂性 程序逻辑结构的复杂性

软件成本相当昂贵软件成本相当昂贵 相当多的软件工作涉及到社会因素相当多的软件工作涉及到社会因素

Page 25: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 25河海大学计算机及信息工程学院

软件质量要素软件质量要素 可维护性:可维护性:软件必须能够不断进化以满足用户的需求变 软件必须能够不断进化以满足用户的需求变 化,这是软件产品最根本的要素,因为工作环境是不断化,这是软件产品最根本的要素,因为工作环境是不断变化的,软件也必然要跟着变化。变化的,软件也必然要跟着变化。 可依赖性:可依赖性:包括可靠性、保密性和安全性。可靠的软件包括可靠性、保密性和安全性。可靠的软件在系统失败的情况下,也不会导致人员伤亡和经济损失。在系统失败的情况下,也不会导致人员伤亡和经济损失。 有效性:有效性:软件不要浪费内存和软件不要浪费内存和 CPUCPU 等系统资源,因而有等系统资源,因而有效性应包括响应时间、处理时间、内存利用率等。效性应包括响应时间、处理时间、内存利用率等。 可用性:可用性:软件必须具备可用性。必须是用户不用特殊地软件必须具备可用性。必须是用户不用特殊地努力就能操作。那么,软件必须提供用户界面和充分地努力就能操作。那么,软件必须提供用户界面和充分地说明文档。说明文档。

Page 26: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 26河海大学计算机及信息工程学院

软件的分类软件的分类按软件的功能进行划分:按软件的功能进行划分:

系统软件系统软件 使计算机系统各个部件、相关软件和数据协调、高效使计算机系统各个部件、相关软件和数据协调、高效地工作的软件地工作的软件

操作系统操作系统数据库管理系统数据库管理系统设备驱动程序设备驱动程序通信处理程序等通信处理程序等

Page 27: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 27河海大学计算机及信息工程学院

软件的分类软件的分类 支撑软件支撑软件 协助用户开发软件的工具软件协助用户开发软件的工具软件

文本编辑程序文本编辑程序文件格式化程序文件格式化程序磁盘向磁带进行数据传输的程序磁盘向磁带进行数据传输的程序程序库系统程序库系统支持需求分析、设计、实现、测试和支持需求分析、设计、实现、测试和支持管理的软件支持管理的软件

Page 28: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 28河海大学计算机及信息工程学院

软件的分类软件的分类 应用软件应用软件

商业数据处理软件商业数据处理软件工程与科学计算软件工程与科学计算软件计算机辅助设计/制造软件计算机辅助设计/制造软件 (CAD/CAM)(CAD/CAM)系统仿真软件系统仿真软件智能产品嵌入式软件智能产品嵌入式软件实时软件实时软件事务管理、办公自动化软件事务管理、办公自动化软件计算机辅助教学软件计算机辅助教学软件

Page 29: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 29河海大学计算机及信息工程学院

软件的分类软件的分类按软件规模进行划分:按软件规模进行划分: 类别 参加人员数类别 参加人员数 研制期限 源程序行数 研制期限 源程序行数 微型 微型 1 1 ~ 4 周 0.5k 小型小型 1 1 ~ 6 月 1k ~ 2k 数值计算或数据处理 ,通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没有大题目那样严格。

中型中型 2 ~ 5 1 ~ 2 年 5k ~ 50k 软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写以及技术审查需要比较严格地进行。应用程序和系统程序。系统的软件工程方法是完全必要的。

Page 30: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 30河海大学计算机及信息工程学院

软件的分类软件的分类• 大型大型 5 ~ 20 2 ~ 3 年 50k ~ 100

k• 编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组 5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。

• 甚大型甚大型 100 ~ 1000 4 ~ 5 年 1M(=1000k) • 若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。

• 极大型极大型 2000 ~ 5000 5 ~ 10 年 1M ~ 10M• 军事指挥、弹道导弹防御系统。• 只是对软件工程技术依赖的程度不同而已。

Page 31: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 31河海大学计算机及信息工程学院

软件的分类软件的分类按软件工作方式划分:按软件工作方式划分:

实时处理软件实时处理软件 分时软件分时软件 交互式软件交互式软件 批处理软件批处理软件

Page 32: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 32河海大学计算机及信息工程学院

软件的分类软件的分类按软件服务对象的范围划分:按软件服务对象的范围划分:

项目软件项目软件 产品软件产品软件

Page 33: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 33河海大学计算机及信息工程学院

软件的分类软件的分类按使用的频度进行划分:按使用的频度进行划分:

一次使用一次使用 频繁使用频繁使用

Page 34: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 34河海大学计算机及信息工程学院

软件的分类软件的分类按软件失效的影响进行划分:按软件失效的影响进行划分:

高可靠性软件高可靠性软件 一般可靠性软件一般可靠性软件

Page 35: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 35河海大学计算机及信息工程学院

软件的发展软件的发展

Late 1950’s:

In the early days: “Software” = “Place a sequence of instructions together to get the computer to do something useful”.

User Computer

Computer became cheaper and more commonHigh level languages were invented

ProgrammerUser Computer

easier

Page 36: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 36河海大学计算机及信息工程学院

软件的发展软件的发展In early 1960’s: Very few large software projects were done by some experts.

Hacker Cracker

In middle to late 1960’s: Truly large software systems were attempted.

Page 37: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 37河海大学计算机及信息工程学院

软件的发展软件的发展 70 年代和 80 年代

“新的工业革命” “工业社会将转变为信息社会” ……

90 年代 “知识的民主化将改变旧的权力结构”

21 世纪初 “Y2K 定时炸弹” “无所不在的计算” (Ubiquitous Computing)

Page 38: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 38河海大学计算机及信息工程学院

Dramatic improvements in hardware performance

Profound changes in computing architectures

Vast increases in memory and storage capacity

Wide variety of exotic input and output options

More sophisticated and complex computer-based systems

Today:

Software =Product (information transformer)Vehicle for delivering a product (OS, network, tools)

软件的发展软件的发展

Page 39: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 39河海大学计算机及信息工程学院

The same questions are still asked today: Why does it takes so long to get software finished? Why are development costs so high? Why can’t we find all the errors before we give the soft

ware to customers? Why do we continue to have difficulty in measuring pro

gress as software is being developed?

软件的发展软件的发展

Page 40: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 40河海大学计算机及信息工程学院

软件危机软件危机• Case1: 美国 IBM 公司在 1963 年至 1966 年开发的 IBM360 机的操作系统。这一项目花了 5000 人一年的工作量,最多时有 1000 人投入开发工作,写出了近 100万行源程序。 ...... 据统计,这个操作系统每次发行的新版本都是从前一版本中找出 1000 个程序错误而修正的结果。 ...... 这个项目的负责人 F. D. Brooks 事后总结了他在组织开发过程中的

沉痛教训时说:“ ...... 正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。 ...... 程序设计工作正像这样一个泥潭, ...... 一批批程序员被迫在泥潭中拼命挣扎, ......谁也没有料到问题竟会陷入这样的困境 ......”。 IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。Software Crisis !

Or maybe Chronic Affliction is more

accurate?

Page 41: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 41河海大学计算机及信息工程学院

软件危机软件危机⑴ ⑴ 项目没有被很好地理解;计划不周,最终导致进度拖延。项目没有被很好地理解;计划不周,最终导致进度拖延。

Case2: In the late 1960s, a bright-eyed young engineer* was chosen to “write” a computer program for an automated manufacturing application. The reason for his selection was simple. He was the only person in his technical group who had attended a computer programming seminar. He knew the in’s and out’s of assembler language and Fortran, but nothing about software engineering and even less about project scheduling and tracking.

问题出在哪里?

Page 42: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 42河海大学计算机及信息工程学院

软件危机软件危机His boss gave him the appropriate manuals and a

verbal description of what had to be done. He was informed that the project must be completed in two months.

He read the manuals, considered his approach, and began writing code. After two weeks, the boss called him into his office and asked how things were going.

“Really great,” said the young engineer with youthful enthusiasm, “This was much simpler than I thought. I’m probably close to 75 percent finished.”

The boss smiled. “That’s really terrific,” he said. He then told the young engineer to keep up the good work and plan to meet again in a week’s time.

Page 43: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 43河海大学计算机及信息工程学院

软件危机软件危机A week later the boss called the engineer into his office

and asked, “Where are we?”“Everything’s going well,” said the youngster, “but

I’ve run into a few small snags. I’ll get them ironed out and be back on track soon.”

“How does the deadline look?” the boss asked.“No problem,” said the engineer. “I’m close to 90

percent complete.”If you’ve been working in the software world for more

than a few years, you can finish the story. It’ll come as no surprise that the young engineer stayed 90 percent complete for the entire project duration and only finished (with the help of others) one month late.

Page 44: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 44河海大学计算机及信息工程学院

软件危机软件危机Case3: In the early 1980s, the United States’ Internal Revenue Service (IRS) 国内税收 hired Sperry Corporation to build an automated federal income tax form processing system. According to the Washington Post, the “system has proved inadequate to the workload, cost nearly twice what was expected and must be replaced soon” (Sawyer 1985). In 1985, an extra $90 million was needed to enhance the original $103 million worth of Sperry equipment. In addition, because the problem prevented the IRS from returning refunds 退款 to taxpayers by the deadline, the IRS was forced to pay $40.2 million in interest and $22.3 million in overtime wages for its employees who were trying to catch up.

Page 45: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 45河海大学计算机及信息工程学院

软件危机软件危机In 1996, the situation had not improved. The Los Angele

s Times reported on March 29 that there was still no master plan for the modernization of IRS computers, only a six-thousand-page technical document. Congressman Jim Lightfoot called the project “a $4-billion fiasco 惨败 that is floundering( 挣扎 ) because of inadequate planning” (Vartabedian 1996).

Myth: If we get behind schedule, we can add more programmers and catch up.

Reality: Software development is not a mechanistic process like manufacturing. In the words of Brooks, “adding people to a late software project makes it later.”

Page 46: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 46河海大学计算机及信息工程学院

软件危机软件危机

人与人的交流比写程序困难得多。Managers —— evaluate, track progress, ......Programmers —— communicate to each otherMaintainers —— Vital

⑵ ⑵ 没有充分的文档资料没有充分的文档资料 ((documentationdocumentation)) Myth: The only deliverable for a successful project is the working pr

ogram.Reality: A working program is only one part of a software configurat

ion that includes programs, documents, and data. Documentation forms the foundation for successful development and, more important, provides guidance for the software maintenance task.

Page 47: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 47河海大学计算机及信息工程学院

⑶ ⑶ 软件可靠性软件可靠性 ((reliabilityreliability)) 缺少度量的标准,质量无法保证。缺少度量的标准,质量无法保证。如何保证软件产品的质量,是非常复杂困难的问题,特别如何保证软件产品的质量,是非常复杂困难的问题,特别对于规模庞大的软件。对于规模庞大的软件。The software supporting the American space shuttle

consists of 3 million lines of code, including computers on the ground controlling the launch and the flight; there were one hundred thousand lines of code in the shuttle itself in 1985.

President Reagan’s proposed Strategic Defense Initiative (SDI) is estimated to require 10 to 100 million lines of code. Many computer scientists and software engineers continue to believe there is no way to write and test the software to guarantee adequate reliability.

软件危机软件危机

Page 48: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 48河海大学计算机及信息工程学院

Myth: Once we write the program and get it to work, our job is done.

Reality: Someone once said that “the sooner you begin ‘writing code’, the longer it’ll take you to get done.” Industry data indicate that between 60 and 80 percent of all effort expended on a program will be expended after it is delivered to the customer for the first time.

软件危机软件危机⑷ ⑷ 软件难以维护软件难以维护 (maintainability) (maintainability) 不易升级不易升级 (evolvability)(evolvability)

Page 49: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 49河海大学计算机及信息工程学院

软件工程软件工程 Better managementBetter management Different team organizationsDifferent team organizations Better languages & toolsBetter languages & tools Uniform coding conventionsUniform coding conventions 必须意识到:“软件”编程,它有自己的必须意识到:“软件”编程,它有自己的生命周期生命周期 (li(life cycle)fe cycle) 。大型软件系统的开发与其它工程项目如建造。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。桥梁、制造飞机、轮船等的开发是同理的。 “软件工程” (Software Engineering)NATO Conference , Garmisch , Germany , 1968.

解决问题的想法:

Page 50: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 50河海大学计算机及信息工程学院

软件工程定义软件工程定义 BoehmBoehm ::运用现代科学技术知识来设计并构造运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。需的相关文件资料。 IEEEIEEE ::将系统化的、规范的、可度量的方法应将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程用于软件的开发、运行和维护的过程,即将工程化应用于软件中。化应用于软件中。 Fritz BauerFritz Bauer ::建立并使用完善的工程化原则,以建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。靠软件的一系列方法。

Page 51: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 51河海大学计算机及信息工程学院

软件工程定义软件工程定义软件工程是一类求解软件的工程,它应用计算机软件工程是一类求解软件的工程,它应用计算机科学、数学科学、数学(用于构造模型和算法)(用于构造模型和算法)和管理科学和管理科学(用于计划、资源、质量和成本等的管理)(用于计划、资源、质量和成本等的管理)等原等原理,借鉴传统工程理,借鉴传统工程(用于制定规范、设计范型、(用于制定规范、设计范型、评估成本、权衡结果)评估成本、权衡结果)的原则和方法,创建软件的原则和方法,创建软件以达到提高质量、降低成本的目的。以达到提高质量、降低成本的目的。软件工程是一门指导计算机软件开发和维护的工软件工程是一门指导计算机软件开发和维护的工程学科。程学科。

Page 52: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 52河海大学计算机及信息工程学院

软件工程定义软件工程定义软件工程是一门交叉学科软件工程是一门交叉学科

软件开发技术软件开发技术 :: 软件开发方法学 软件开发过程 软件工具和软件工程环境

软件工程管理软件工程管理 :: 软件管理学 软件经济学 软件心理学软件工程所包含的内容不是一成不变的,随着人软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解。应用发们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。展的眼光看待它。

Page 53: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 河海大学计算机及信息工程学院

• 软件需求软件需求• 软件设计软件设计• 软件构造软件构造• 软件测试软件测试• 软件维护软件维护• 软件配置管理软件配置管理• 软件工程管理软件工程管理• 软件工程过程软件工程过程• 软件工程工具和方法软件工程工具和方法• 软件质量软件质量

软件工程知识结构软件工程知识结构

Page 54: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 河海大学计算机及信息工程学院

(1) (1) 立足于系统的整体。立足于系统的整体。(2) (2) 讲授系统分析、系统设计、讲授系统分析、系统设计、 测试及维护的理论和方法。测试及维护的理论和方法。(3) (3) 构筑一个软件系统,实践构筑一个软件系统,实践 软件开发全过程。软件开发全过程。

““ 软件工程”课程软件工程”课程 与其它软件专业课的区别与其它软件专业课的区别

Page 55: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 河海大学计算机及信息工程学院

• 转变对软件开发的认识: 上升 程序 系统• 转变思维定式: 上升 程序员 系统工程师 ( 系统分析员 )• 工程化训练

““ 软件工程”课程教学与实践的目标软件工程”课程教学与实践的目标

Page 56: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 河海大学计算机及信息工程学院

工具方法过程质量焦点

Software engineering layers软件工程三个要素:方法、工具、过程

Page 57: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 57河海大学计算机及信息工程学院

软件工程要素软件工程要素 软件工程三要素:方法、工具和过程软件工程三要素:方法、工具和过程 软件工程过程定义了软件工程过程定义了 ::

方法使用的顺序方法使用的顺序 要求交付的文档资料要求交付的文档资料 为保证质量和适应变化所需要的管理为保证质量和适应变化所需要的管理 软件开发各个阶段完成的里程碑软件开发各个阶段完成的里程碑

软件工程方法为软件开发提供了 “如何做” 的技术软件工程方法为软件开发提供了 “如何做” 的技术 软件工具为软件工程方法提供了自动的或半自动的软件软件工具为软件工程方法提供了自动的或半自动的软件

支撑环境支撑环境

Page 58: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 58河海大学计算机及信息工程学院

软件工程原理软件工程原理⑴ 用分阶段的生命周期计划严格管理 项目概要计划 里程碑计划 项目控制计划 产品控制计划 验证计划 运行维护计划⑵ 坚持进行阶段评审⑶ 实行严格的产品控制——基准配置管理 (Basel

ine configuration management)

⑹ 开发小组的成员应该少而精1+1 < 2

⑷ 采用现代程序设计技术⑸ 结果应能清楚地审查— set standards

⑺ 承认不断改进软件工程实践的必要性

Page 59: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 河海大学计算机及信息工程学院

软件工程框架软件工程框架可 用 性 性 性确正 合 算

选取适宜的开发模型采用合适的设计方法提供高质量的工程支持重视软件工程的管理

基本过程原则

目标

过 程

支持过程

组织过程

Page 60: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 60河海大学计算机及信息工程学院

软件工程的历史软件工程的历史 起源于起源于 2020 世纪世纪 5050 年代年代 但是从学术的角度看,软件工程还是一个年轻的但是从学术的角度看,软件工程还是一个年轻的学科学科

第一次会议在第一次会议在 2020 世纪世纪 6060 年代后期年代后期 而在而在 8080 年代才从计算机科学分离开年代才从计算机科学分离开

Page 61: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 61河海大学计算机及信息工程学院

软件工程的历史软件工程的历史 1 、 60 年代末~ 80 年代初状况:状况:软件系统的规模、复杂性以及在关键领域的广泛应软件系统的规模、复杂性以及在关键领域的广泛应 用促进了软件开发过程采纳工程化的方法进行管理。用促进了软件开发过程采纳工程化的方法进行管理。研究:研究:开发模型、支持工具、开发方法。开发模型、支持工具、开发方法。成果:成果:瀑布模型、结构化语言(瀑布模型、结构化语言( PascalPascal 等)、结构化方法、等)、结构化方法、 各种管理方法(如费用估算、文档复审)。各种管理方法(如费用估算、文档复审)。事件:事件:前期主要研究系统实现技术;后期则开始强调管理和前期主要研究系统实现技术;后期则开始强调管理和 软件质量。软件质量。焦点:焦点:软件项目软件项目

Page 62: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 62河海大学计算机及信息工程学院

22 、、 8080 年代初~现在年代初~现在 状况:状况:“软件工厂”的概念已经提出。“软件工厂”的概念已经提出。 研究研究:软件生产技术,特别是软件复用技术和软件生产 软件生产技术,特别是软件复用技术和软件生产 管理的研究和实践。管理的研究和实践。 成果:成果:提出了具有广泛应用前景的面向对象方法和相关提出了具有广泛应用前景的面向对象方法和相关 的编程语言。的编程语言。 事件:事件:软件过程改进。在工业实践中建立起一种量化的软件过程改进。在工业实践中建立起一种量化的 评估程序,判定软件组织成熟的程度。评估程序,判定软件组织成熟的程度。 焦点:焦点:软件过程软件过程

软件工程的历史软件工程的历史

Page 63: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 63河海大学计算机及信息工程学院

近几年: 近几年: 研究从过程管理转向产品开发,更加注重新的程序开研究从过程管理转向产品开发,更加注重新的程序开

发范型和软件生产。发范型和软件生产。 范围:范围:面向面向 agentagent 语言、复用技术、需求分析规格说明语言、复用技术、需求分析规格说明 的形式化研究、高智能高自动化的的形式化研究、高智能高自动化的 CASECASE 成为热点。成为热点。

软件工程的历史软件工程的历史

Page 64: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 64河海大学计算机及信息工程学院

软件工程的历史软件工程的历史 20世纪 60 年代晚期,刊物上开始出现软件工程的专业文章出现专业杂志

ACM Transactions on Software Engineering and Methodologies Software Engineering Notes IEEE’s Transactions on Software Engineering Software

Page 65: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 65河海大学计算机及信息工程学院

软件工程的历史软件工程的历史 Wang Institute and Seattle

University established SE graduate programs in the early 1980s

Southern Methodist University --define the curriculum topics and

content SEI of Carnegie Mellon University

joined the fray

Page 66: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 66河海大学计算机及信息工程学院

软件工程知识域软件工程知识域 软件工程知识体系项目( Software Engineering Body of Knowledge)

Requirements Design Construction Testing maintenance

Configuration management

SE management SE process SE tools and methods Quality

Page 67: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 67河海大学计算机及信息工程学院

研究内容研究内容 Systems/software concepts Methods/techniques Tools(including compilers and

debuggers) Inter-computer communications Software life cycle engineering Product quality

Page 68: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 68河海大学计算机及信息工程学院

研究内容研究内容 Measurement and metrics Methodologies Database/warehouse/mart

organization Programming languages Project/product management

Page 69: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 69河海大学计算机及信息工程学院

软件工程杂志软件工程杂志

Page 70: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 70河海大学计算机及信息工程学院

软件工程顶尖学者软件工程顶尖学者

Page 71: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 71河海大学计算机及信息工程学院

研究领域研究领域

Page 72: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 72河海大学计算机及信息工程学院

软件工程顶尖学院软件工程顶尖学院

Page 73: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 73河海大学计算机及信息工程学院

我国软件业的现状我国软件业的现状 我国软件业的规模我国软件业的规模

目前,我国从事软件开发、研制、销售、维护目前,我国从事软件开发、研制、销售、维护和服务的软件企业有和服务的软件企业有 20002000家左右,加上兼营家左右,加上兼营的企业,总数大约有的企业,总数大约有 1000010000 多家,其中具有自多家,其中具有自主软件研发能力的软件企业约主软件研发能力的软件企业约 57005700家,已经家,已经通过双软认定的有通过双软认定的有 23002300余家,从事软件销售、余家,从事软件销售、维护和服务的企业维护和服务的企业 50005000 多家。在这里面,营多家。在这里面,营业规模超过一亿元的软件企业达到业规模超过一亿元的软件企业达到 100100家以上,家以上,超过超过 55 亿元的达到亿元的达到 1818家,超过家,超过 1010亿元的达到亿元的达到1212家。家。

Page 74: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 74河海大学计算机及信息工程学院

我国软件业的现状我国软件业的现状 20012001 年,世界软件产品市场销售额超过年,世界软件产品市场销售额超过 18651865 亿亿美元,我国当年的销售额为美元,我国当年的销售额为 285285 亿元人民币,只亿元人民币,只占世界市场不到占世界市场不到 22%的份额。 %的份额。 国内软件市场有限的份额中大部分为国外软件厂国内软件市场有限的份额中大部分为国外软件厂商所瓜分,国内所开发的软件产品仅占小部分。商所瓜分,国内所开发的软件产品仅占小部分。

Page 75: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 75河海大学计算机及信息工程学院

我国软件业的现状我国软件业的现状 20012001 年我国软件销售总额年我国软件销售总额 96.396.3 亿美元,软件企业约亿美元,软件企业约 50050000家,从业人员家,从业人员 2929 万。万。 20012001 年印度软件销售总额年印度软件销售总额 102.3102.3 亿美元,软件企业约亿美元,软件企业约 60600000家,从业人员家,从业人员 4040 万。 万。 20012001 年我国软件的出口额仅为年我国软件的出口额仅为 7.27.2亿美元,亿美元, 20002000 年与年与 11999999 年分别为年分别为 44 亿美元及亿美元及 2.52.5 亿美元。 亿美元。 印度在软件出口方面,则一直保持高速的增长。印度在软件出口方面,则一直保持高速的增长。 19901990 年年印度软件出口只有印度软件出口只有 50005000 万美元,万美元, 19991999 年就达到了年就达到了 3939 亿亿美元,美元, 20002000 年达到了年达到了 6262亿美元,而亿美元,而 20012001 年印度软件出年印度软件出口额为口额为 77.877.8亿美元,已经占到了印度全部出口总额的亿美元,已经占到了印度全部出口总额的 10.10.55 %%。。

Page 76: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 76河海大学计算机及信息工程学院

我国软件业的现状我国软件业的现状 我国软件业发展不理想的原因除了政策和盗版外,我国软件业发展不理想的原因除了政策和盗版外,最大的问题是我国绝大多数软件企业对其软件开最大的问题是我国绝大多数软件企业对其软件开发工作过程缺乏有效的管理和控制。多数软件企发工作过程缺乏有效的管理和控制。多数软件企业开发和生产基本上处于“业开发和生产基本上处于“技术少标准、开发缺技术少标准、开发缺规范、生产无检验、质量无保证规范、生产无检验、质量无保证”的状态。在这”的状态。在这方面印度软件业的发展能够给我们以启发。方面印度软件业的发展能够给我们以启发。

Page 77: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 77河海大学计算机及信息工程学院

它山之石它山之石印度软件业能够这么迅速地发展起来,除了有政府支持、英语程度、人才储备等原因外,最重要的是从标准化与产品流程入手,重视管理。印度的软件开发管理的特点是流程重于项目,流程管理人员独立于研发部门,专门检查研发部门的开发流程是不是按照既定流程走,如果流程不对,项目肯定就此停止。另外,所谓的项目经理一般都是从编码人员升上来的,至少有四年以上的经验,而公司所有的东西(包括草稿)都有文档,其详细文档要求达到只有这个文档就可以编码的程度。

Page 78: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 78河海大学计算机及信息工程学院

它山之石它山之石于是,印度软件公司开发出来的软件整个体系架构非常清晰,而且相当稳定。由于印度企业不是靠一两个软件英雄搞研发,而是靠一大批软件技术人员的分工协作,所以,他们必须注重标准化,注重开发的流程管理,以与国际接口。

Page 79: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 79河海大学计算机及信息工程学院

它山之石它山之石 目前印度软件公司中有 170家公司获得 ISO9000质量标准认证,是世界上获得质量认证软件企业最多的国家。在得到卡内基—梅隆大学软件工程学会最高级别的全球 23 家计算机软件公司中,有 15 家是印度公司。

Page 80: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 80河海大学计算机及信息工程学院

小结小结 什么是软件?什么是软件? 软件与硬件相比,其特点是什么?软件与硬件相比,其特点是什么? 软件质量要素?软件质量要素? 产生软件危机的原因?产生软件危机的原因? 什么是软件工程?什么是软件工程? 软件工程研究的内容软件工程研究的内容 软件工程原理、基本框架软件工程原理、基本框架

Page 81: Instructor:  Mao Ying-Chi  ( 毛莺池 ) Email:  julie@dislab.nju mao_yingchi@yahoo

2004-02-12 81河海大学计算机及信息工程学院

参考文献参考文献 [DEJ98] De Jager, P. et al., Countdown Y2K: Business Survival Plannin

g for the Year 2000, Wiley, 1998. [DEM95] DeMarco, T., Why Does Software Cost So Much? Dorset Hou

se, 1995, p.9. [GLA98] Glass, R.L., “Is There Really a Software Crisis?” IEEE Softwar

e, vol. 15, no. 1, January 1998, pp. 104-105. [Brooks] F. P. Brooks, “No silver bullet: Essence and accidents of softwa

re engineering”, IEEE Computer, 20 (4), April 1987. [YOU 98a] Yourdon, E., Death March Projects, Prentice-Hall, 1998.