1 / 44

软件工程( SE ) SOFTWARE ENGINEEING

软件工程( SE ) SOFTWARE ENGINEEING. —— 面向对象,使用 UML 、模式和 JAVA. 教师:聂文龙 课程主页 数信学院计算机系 5210 室 Email: nwl@tzc.edu.cn Tel: 664805 ( 工作时间). 图书简介.

dirk
Download Presentation

软件工程( SE ) SOFTWARE ENGINEEING

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 软件工程(SE)SOFTWARE ENGINEEING ——面向对象,使用UML、模式和JAVA 教师:聂文龙 课程主页 数信学院计算机系 5210室 Email: nwl@tzc.edu.cn Tel: 664805(工作时间)

  2. 图书简介 • B.Bruegge和A.H.Doutoit编写的《面向对象软件工程——使用UML、模式和Java》(第2版),是卡耐基·梅隆大学(CMU)高年级本科生和研究生的教材,是我所能见到的各类软件工程教材中最棒的一本,例如:“业余软件工程师总在寻找奇迹——试图用某种惊人的方法或工具来让软件开发变得轻而易举,但职业软件工程师都知道不存在这种灵丹妙药”,“有两条构造软件设计的原则:其一是使设计足够简单,以至于不存在明显的缺陷;其二是使系统足够复杂,以至不存在明显的缺陷”等,这些充满哲理的话,总能给人以启发。

  3. 课程描述与预备知识 • 基本课题: • 软件开发工程过程, 过程模型, 过程管理, 质量控制 • 面向对象概念; 类与对象的设计 • 软件需求分析, 用例, 软件架构设计, 详细设计, 实现与测试 • 高级课题: • RUP统一过程 • UML建模语言 • 软件设计模式, 例如 “四人帮" • 计算辅助软件工程工具(CASE), 例如 ROSE • 特色: • 面向对象的分析和设计 • 不仅学习,而且实践软件工程 • 采用当今最为广泛接受的学习与实践方法

  4. 前言 • 1979-9-9,美战略空军司令部,全球军事指挥和控制系统(WWMCCS),Soviet Union&U.S.A • 1985-1987,Therac-25医疗线性加速器的过量辐射 • 1991海湾战争,飞毛腿导弹刺入爱国者反导弹的外壳,28名美军dead,98伤 软件的开发和维护过程中遇到的一系列严重问题 • 对软件开发成本和进度的估计常常很不准确 • 用户对“已完成的”软件系统不满意的现象经常发生 • 软件产品的质量往往靠不住 • 软件常常是不可维护的 • 软件通常没有适当的文档资料 • 维护费用占软件总费用的55%-70% • HP公司约60%-80%的研发人员都涉及维护工作

  5. 历史教训 • 美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。 • 这个项目的负责人F. D. Brooks事后总结了他在组织开发过程中的沉痛教训时说:“…正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。…程序设计工作正像这样一个泥潭,…一批批程序员被迫在泥潭中拼命挣扎,…谁也没有料到问题竟会陷入这样的困境…”。 • IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。

  6. 软件发展的三个阶段 • 程序设计时代(50-60年代) 软件指程序,软件开发关注程序编写,用汇编及机器语言 • 程序系统时代(60-70年代) • 软件指程序及说明书,软件开发包括程序设计和测试,用高级语言 • 软件工程时代(70年代以后) • 软件指程序、文档、数据,软件开发包括软件生命期,用软件语言(包括需求定义语言、软件功能语言、软件设计语言、程序设计语言等)

  7. 软件工程定义 • IEEE【IEE83】给出的软件工程定义: • “软件工程是开发、运行、维护和修复软件的系统方法。” • IEEE【IEE93】给出了一个更加综合的定义: • “将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。”

  8. 问题: 在进行软件设计和选择软件开发工具之前,是否进行开发方法学的选择? • 方法学是指组织软件生产过程的一系列方法、技术和规范。方法学是软件开发者长年失败和成功经验的理论性总结,从软件重用的思路来说,方法学重用的价值远非某些程序组件重用可比。

  9.   实例:以北京市公路局系统为例。首先,在系统调查阶段我们了解到:这个系统要分期 (递增式) 开发。由于处于机构改革时期,系统生存期内的用户需求和系统结构变因很多。这表明目标系统应该具有较强的可维护性,即每期开发成果应在后续工程中具有较高的可重用率。其次,一期工程的工作量相当大(最后成果包括 124 个模块、72 类报表、119个数据库表、439 个窗口、912 个数据窗口),而开发者对公路局业务不了解,多为经验不足的大学生,理解需求的能力较低。这表明采用的开发方法学必须能最大限度地减少重复劳动,实现开发过程中的成果共享和重用;必须能支持消除需求理解误差的调整工序,使下游成品阶段的设计变更比较容易进行。

  10.   在开发此系统之前,我们承接了一个国外软件的下游开发任务。由于它采用了面向对象的软件设计,使我们深刻认识到国内外软件开发方法学和技术上的差距,颇受启发。  在开发此系统之前,我们承接了一个国外软件的下游开发任务。由于它采用了面向对象的软件设计,使我们深刻认识到国内外软件开发方法学和技术上的差距,颇受启发。 •   参照我们承接的国外软件开发工作量计算方法,即仅下游120个模块 (含报表) 的编码和测试为41人月,那么公路局系统从上游设计开始近200个模块和报表、100多个数据库表的开发工作量至少也应在120人月以上。由于采用了面向对象的软件工程方法,尽管开发人员大多经验不足,但是第一期工程总工时最终仍控制在 80 人月以内,降低成本1/3左右。同时在系统可维护性、重用度及其他功能和性能指标上,均超过了我们以往采用结构化方法开发的系统。 •   对停留在程序主导级开发的软件开发人员来说,他们选择 OOP 的原因也往往是被动的。其实,在程序主导开发者的辞典中是找不到“方法学”这一词的,或者把“方法学”与“程序算法”混为一谈。至于把 OOP 看成是 OOSE 的全部就更不足为怪了。

  11. “软件工程”课程教学与实践的目标 • 正确理解软件: 上升 程序 系统 • 转变思维定式: 上升 程序员 系统工程师 (系统分析员) • 工程化训练

  12. 第一章 导论 今天内容 • 软件跟踪记录 • 什么是软件工程 • 软件生命周期 • 其他(可选) • 为什么软件这么复杂? • 处理复杂性:抽象,分解,架构。

  13. 美国奋进号航天飞机STS-130 • The space shuttle Endeavour STS-130

  14. 安全降落返回地球 • 美国航天飞机奋进号(space shuttle Endeavour)于2010年2月8日从佛罗里达州卡纳维尔角美国国家航空航天局(NASA)肯尼迪太空中心(Kennedy Space Center)发射升空后,于2月10日与国际太空站( International Space Station- ISS)对接成功。 • 奋进号为期14天的飞行,为国际太空站运送去包括拥有观测台的Tranquility 宇宙仓等36,000 磅的设备。 • 在国际太空站停留期间,航天飞机奋进号STS-130宇航员进行3次太空行走,完成了安装Tranquility 宇宙仓等工作。之后,奋进号STS-130于2010年2月19日晚间安全地与国际太空站脱接。

  15. 软件生产的跟踪记录差 哥伦比亚号航天飞机 • 哥伦比亚号的最后一次发射升空 哥伦比亚号的第一次任务 哥伦比亚号航天飞机(STS Columbia OV-102)是美国国家航空暨太空总署(NASA)所属的航天飞机之一。哥伦比亚号是美国的航天飞机机队中第一架正式服役的,它在1981年4月12日首次执行代号STS-1的任务,正式开启了NASA的太空运输系统计划(Space Transportation System program,STS)之序章。然而很不幸的,哥伦比亚号在2003年2月1日,在代号STS-107的第28次任务重返大气层的阶段中与控制中心失去联系,并且在不久后被发现在得克萨斯州上空爆炸解体,机上7名航天员全数罹难。 • 哥伦比亚号的命名由来,是纪念第一艘环绕世界一周航行的美国籍船只,也是哥伦比亚河命名由来的18世纪帆船哥伦比亚号。 • 历次任务 • 哥伦比亚号航天飞机总共有28次飞行纪录,在太空度过300.74日,绕行地球4,808圈,总飞行距离达到125,204,911英里。

  16. 哥伦比亚号航天飞机软件 • Cost: $10 Billion, millions of dollars more than planned • ♦ Time: 3 years late • ♦ Quality: First launch of Columbia was cancelled because of a synchronization problem with the Shuttle's 5 onboard computers. ! Error was traced back to a change made 2 years earlier when a programmer changed a delay factor in an interrupt handler from 50 to 80 milliseconds. ! The likelihood of the error was small enough, that the error caused no harm during thousands of hours of testing. • ♦ Substantial errors still exist. ! Astronauts are supplied with a book of known software problem

  17. 今天软件的质量:市场上发行的软件产品平均地看不是没有错误的今天软件的质量:市场上发行的软件产品平均地看不是没有错误的

  18. 软件错误造成对用户的主要冲击

  19. 软件工程:问题解决的活动 • 分析:理解问题的本质,把问题分解为系列任务。 • 综合:把系列任务集合在一起,形成大的结构。 • 对于问题解决,我们使用 技术:使用某些良定记号用于产生结果的形式程序(流程)。 方法:应用于软件开发的技术汇集。 工具:可完成技术的设备或自动系统。

  20. 软件工程的定义再论 • 软件工程是技术、方法和工具按某种哲学(例如,RUP)统一的汇集,它们有助于在给定价格、需求发生变化时的期限内生产高质量软件系统。

  21. 软件生命周期活动模型

  22. 软件生存周期模型 • 描述软件开发过程中各种活动如何执行的模型。是软件工程过程的简化的抽象描述。 • 瀑布模型 • 演化模型 • 螺旋模型 • 喷泉模型 • 增量模型

  23. 1. 瀑布模型

  24. 2。演化模型—快速原型化方法

  25. 3。螺旋模型

  26. 4。喷泉模型

  27. 科学家对比工程师 • 计算机科学家 证明有关定理,设计语言,定义知识表示格式…… 时间无限制。 • 工程师 为客户的特定应用问题开发解答,使用计算机、语言、工具、技术和方法。 • 软件工程师 工作于多个应用领域,仅有三个月时间(比如),…,即使需求和可用技术发生变化。

  28. 影响软件系统质量的因素 • 复杂 系统如此复杂以致于单个程序员不能理解它。 一个毛病常引起另一个毛病。 • 变化 热力学第二定律。熵是不能再被转化作功的能量的总和的测定单位 ,冷却了的铁钳与平面上的水都不能再作有用的功了,它们的能量是封闭或无效的。 软件系统的熵随着每次改变而增加:每次实现的改变侵蚀了系统的结构,造成下一次改变的代价更昂贵(软件动力学第二定律),最终系统不能支持它原来预期的任务。

  29. 为什么软件系统这么复杂 • 问题领域困难 • 开发过程的管理非常困难 • 软件具有极度的伸展能力 • 软件是一个离散系统 连续系统没有隐藏的意外 离散系统有!

  30. 对付复杂性 • 抽象 • 分解 • 架构

  31. 抽象 • 人类内在的局限性:7 +/- 2 • 组块构建:对象的成组汇集 • 忽略非实质的细节:=>模型

  32. 模型用于提供抽象 • 系统模型 对象模型:系统的结构是什么?对象以及 它们的关系是什么? 功能模型:系统的功能是什么?数据是怎么流过系统的? 动态模型:系统对外部事件如何反应?系统中的事件流是怎么样的? • 任务模型:任务间的依赖关系怎样?如何在时间的限制下完成?项目或组织中的角色是什么? • 问题模型:哪些是未解决的和已解决的?客户提出什么约束条件?已有什么解决方案?

  33. 模型的独立性

  34. 建模的百慕大三角区

  35. 百慕大三角 • 百慕大三角(英语:Bermuda Triangle,又称魔鬼三角,有时又称百慕大三角洲;但此区域并不是三角洲地形,且不合语源),位于北大西洋的马尾藻海,是由英属百慕大群岛、美属波多黎各及美国佛罗里达州南端所形成的三角区海域,据称经常发生超自然现象及违反物理定律的事件,面积约390万平方公里(150万平方英里)。另有电影等以此为名。

  36. Jupiter 木星 •  太阳系八大行星中最大的一颗,天文符号。又称岁星。最亮时为-2.4等,其质量和半径分别是地球的318倍和11.2倍(见行星),现知有18颗卫星(见木星卫星),望远镜中可见其视圆面有明显的扁度。木星的大气层厚度达1400千米,其主要成分是氢(82%)、氦(17%) ,还有1%是甲烷和氨等,但其大气密度仅相当于地球大气的 1/5 。虽然其大气平均温度低达-140℃ ,但内部的对流、环流 、湍流等活动都相当剧烈 ,以致形成了许多平行于木星赤道的亮带和暗纹以及著名的大红斑(见木星大红斑)。 • 木星大气内还有十分强烈而频繁的闪电现象。旅行者探测器发现木星也有环带,并证实它是一颗液 体行星 , 大气层之下是由分子氢构成的海洋,其温度高达5000 K,但在高压下保持着平衡 ,分子氢海下是一层金属氢,它仍是液态,中心是否有固态的铁镍核芯,尚无定论。液态行星造成了木星不同纬度处自转周期不同。已知木星的磁场是复杂的多极场 ,其中心偶极场为地球的 1.9 万倍 ,其磁层伸展到 60 多万千米远,比地球磁层大 100 倍。 • 木星大气内常常发生闪电 。在木星背阳面上空还观测到范围达 3 万千米的极光。测量表明,木星向外辐射的能量是从太阳接收能量的 2.5 倍 ,同时木星还能发出很强的射电辐射与高能电子。

  37. 木星的局部照片(旅行者1号探测器于1979年8月13日拍摄)木星的局部照片(旅行者1号探测器于1979年8月13日拍摄)

  38. 木星卫星

  39. 问题的例子:伽利略PK教堂

  40. 问题建模:正方 pro,反方con

  41. 抽象总结:基于模型的软件工程——代码是对象模型的导出结果抽象总结:基于模型的软件工程——代码是对象模型的导出结果

  42. 实验1.说明 • (1)熟悉Rose 2007 • (2)复习VS 2010 C# 窗体程序设计 • (3)培养模型的思维方式。系统的模型例子:自动售货机。

More Related