《软件工程ppt.ppt》由会员分享,可在线阅读,更多相关《软件工程ppt.ppt(37页珍藏版)》请在第壹文秘上搜索。
1、软件工程整体安排v授课时间:1-16周v考试形式:闭卷考试v最终成绩 平时成绩20% 考试成绩80%v课件密码:v关于PPT:Just a outlinev关于教材:组织顺序小结平时成绩计算v满分100分基础分60分什么是软件工程?v工程的定义:将自然科学的理论运用到具体的生产部门例如:水利工程、土木工程、遗传工程等v软件工程:像制造工业产品一样来制作生产软件more about your careerv软件生产过程的演变第一章 概论v软件危机的产生:p传统软件设计过程,除了传统软件设计过程,除了程序清单程序清单外,没有其它文外,没有其它文档资料保存下来档资料保存下来p软件数量和规模不断膨胀(
2、硬件通用化 VS 软件)p因各类需要修改程序p以上原因造成维护的代价太大,甚至不可维护甚至不可维护,软件危机就出现了软件危机v软件危机的定义:在计算机软件的开发和维护过程中所遇到的一系列的严重问题也有人将其称之为“软件萧条”或“软件困扰”p如何开发软件p如何维护软件v绝非不能正常运行的软件才具有这样的问题软件危机v软件危机的一些典型表现p软件开发的进度难以控制,经常出现经费超预算、完成期限一再拖延的现象。1979年,美国US Government Accounting Office对政府项目进行了调查,其中9个软件项目的结果如下: p软件需求在开发初期不明确,导致矛盾在后期集中暴露,从而对整个
3、开发过程带来灾难性的后果。重做一些你认为已做好的事情,返工会耗费开发总费用的40%,而70%85%的重做是由于需求方面的错误引起的 p由于缺乏完整规范的资料,加之软件测试不充分,从而造成软件质量低下,运行中出现大量问题。在1985年到1987年之间,至少有2个病人是死于Therac-25医疗线性加速器的过量辐射,其原因是控制软件中的一个故障。p改正已有错误或添加新功能困难p没有适当的文档资料p软件成本占计算机系统成本的比例逐年上升p软件生产率提高的速度远不及计算机应用普及深入的趋势软件危机v软件的特点:软件的特点:p软件是一种逻辑实体,不是物理的产品p复杂性随程序规模呈指数级上升p软件是由开发
4、或工程化而形成的,没有明显的制造过程。软件成本集中于开上,意味着软件项目不能象硬件制造项目那样来管理。 p软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件(如图a,b)p大多数软件是自定的,而不是通过已有构件组装而成的。迄今为止,软件的开发尚未完全摆脱手工的方式。 p软件成本相当昂贵。 p软件本身是复杂的。 软件危机v软件与硬件的对比图软件危机v软件危机的产生:p由软件自身特点所造成的原因p没有对用户的需求完整准确的认识就开始写代码p认为软件就是代码,没有认识到完整的软件应包括代码、文档和数据(编码一般占工作量的1020%,测试占4050% )p轻视
5、软件的维护( 费用占5070% )软件危机v消除软件危机的途径p首先对计算机软件有正确认识p其次软件开发不是某种个体劳动的神秘技巧p开发和使用好各类软件工具来支持整个软件开发的过程p通过管理和技术(方法和工具)两方面来解决软件危机软件工程软件工程v软件工程的定义P5p1968年Fritz Bauer曾在NATO会议上给出软件工程的定义:是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则。p1983年,IEEE(Institute of Electrical & Electronic Engineers,电气与电子工程师协会)给出了一个更为全面的定义:是研究和应
6、用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。软件工程v软件工程的特征:p软件工程关注于大型程序的构造p软件工程的中心课题是控制复杂性p软件经常变化(现实世界是一个不断变化的世界)p开发软件的效率非常重要p和谐的合作是开发软件的关键p软件必须有效的支持它的用户p用户和开发者的文化背景不同软件工程基本原理v软件工程的七条基本原理(B.W.Boehm)用分阶段的生命周期计划严格管理(一半由计划不周造成)坚持进行阶段评审(为了尽早的发现问题,设计错误占到63%,编码错误仅占37%)实行严格的产品控制(基准配置基准配置)采用现代程序设计技术结果应能清楚的审查开发
7、小组的人员应该少而精(交流开销增加)承认不断改进软件工程实践的必要性软件工程方法学v管理技术管理:通过计划、组织和控制等活动,合理的配置和使用各种资源,以达到既定目标的过程v在软件生命周期全过程中使用的一整套技术方法的集合软件工程方法学(Software Engineering Methodology)软件工程方法学v软件工程方法学三个要素:p方法:完成软件开发各项任务的技术方法p工具:各类自动半自动的软件工程支撑环境p过程:各项任务的工作内容和步骤v软件工程方法学的分类:p传统方法学p面向对象方法学传统方法学v生命周期方法学或结构化方法学采用结构化技术来完成软件开发中的各项任务将生命周期分为
8、若干阶段,然后顺序完成各阶段的任务。通常每一阶段都是对上一阶段的具体化,精化每一阶段完成后都要进行审查(文档)传统方法学v传统方法学的优点p每个阶段任务相对独立,简单p每个阶段后的审查使整个过程有条不紊v传统方法学在相当长的时间内还是有很强的生命力面向对象方法学v将数据和对数据的操作(行为)结合在一起,而不是将其割裂开来v面向对象方法学的四个要点:p将对象作为数据及对数据操作的统一体p将对象划分为类:体现了人类认识从特殊到一般的归纳p继承:体现了人类认识从一般到特殊的演绎p封装:降低了复杂性,促进了重用软件生命周期v软件定义、软件开发、运行维护软件定义:问题定义、可行性研究和需求分析软件开发:
9、v系统设计:总体设计、详细设计v系统实现:编码、测试运行维护:每次维护都是大大压缩了的定义和开发过程软件生命周期v问题定义:非常重要,却又常被忽视。“要解决的问题是什么”v可行性研究:“对于上一个阶段所确定的问题有行得通的解决办法吗?”v需求分析:用正式文档(规格说明书,Specification)记录需求,“目标系统必须做什么”v总体设计概要设计:低中高成本三个方案,推荐最佳方案,“如何实现目标系统”v详细设计模块设计:确定算法流程和数据结构,“应该怎样具体地实现系统”软件生命周期v编码和单元测试v综合测试:至少包括集成测试和验收测试;必要时还可以加上现场测试和平行运行v软件维护:每项维护都
10、应该用文档进行记录并加以保存,包括:改正性维护、适应性维护、完善性维护、预防性维护软件过程v软件过程:为了获得高质量软件所需要完成的一系列任务的框架,规定了完成各项任务的工作步骤who/when/what/how使用资源将输入转化成输出的过程v生命周期模型过程模型:用来描述生命周期的划分及各阶段的执行顺序软件过程v瀑布模型:基本上就是传统方法学的软件过程。具有顺序性和依赖性的特点软件过程v推迟实现的观点v质量保证的观点:文档+审查v是文档驱动的:双刃剑v实际的瀑布模型p带反馈环的p带维护软件过程v快速原型模型:通过快速建立原型来与用户交互,以期准确快速的获得用户需求v原型的作用与建立(4GL)
11、v与瀑布模型对比软件过程v增量模型(渐增模型):将软件分为一系列相对独立的构件来进行开发本质上与扩充已有软件功能是一致的v增量模型的优点p在短时间内向用户提交可完成部分功能的产品p用户学习的时间比较充裕v增量模型的缺点:划分不同构件可能不合理,集成的时候可能出现问题软件过程v螺旋模型:可以将其视为在每个阶段都增加了风险分析的快速原型模型主要适用于内内部开发部开发的大规模软件项目v基本思想:利用原型及其它方法来尽量降低风险v维护与开发之间并没有本质区别维护与开发之间并没有本质区别v螺旋模型的优点与缺点本章小结v计算机软件v软件危机产生及其原因v软件工程v传统方法学VS面向对象方法学v生命周期v软件过程及软件过程模型