软件工程基础讲解

上传人:种**** 文档编号:260546230 上传时间:2022-02-28 格式:PPTX 页数:89 大小:754KB
返回 下载 相关 举报
软件工程基础讲解_第1页
第1页 / 共89页
软件工程基础讲解_第2页
第2页 / 共89页
软件工程基础讲解_第3页
第3页 / 共89页
软件工程基础讲解_第4页
第4页 / 共89页
软件工程基础讲解_第5页
第5页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《软件工程基础讲解》由会员分享,可在线阅读,更多相关《软件工程基础讲解(89页珍藏版)》请在金锄头文库上搜索。

1、软件工程主讲:姜宁教材软件工程 张海藩 清华大学出版社 参考书目软件工程 实践者的研究方法 机械工业出版社软件工程 卢潇 清华大学出版社软件业的生存之道人月神话 学习方式完成必要的作业完成每次的实验题目完成一次综合性的项目分析开发软件工程师的基本功底扎实的基础 丰富的想象力最简单的是最好交流能力良好的编程风格韧性和毅力“开发流程英文优势”印度软件在中国的发展根据统计数据,2004年前三个季度,有21家印度公司在中国直接投资,但投资总额仅为1700万美元,在同期外国IT企业在华直接投资中所占的比例小得可怜。考虑到从2002年起,印度前四名的软件企业塔塔、InfoSys、Wipro以及Satyam

2、就已陆续在上海登陆学习目的对项目的定位分析软件工程思想建模软件工程是典型的计算机科学和数学,管理科学,心理学,社会学等学科的综合。 软件的发展程序设计阶段(20世纪40年代初60年代中期)程序系统阶段(60年代中期到70年代末期)软件工程阶段(20世纪70年代中)第四阶段个体化的软件环境 软件规模小,编写者和使用者往往是同一个人,除程序清单外,无其它文档资料。“软件作坊” 比较广泛使用产品软件,仍沿用个体化开发方法。软件维护工作很难进行,甚至不可维护(不能修改运行时发现的错误,不能适应新的硬件环境)由于软件的“不可维护”,而导致了“软件危机”。微处理器出现 个人计算机产品、分布式系统对软件开发

3、提出更高要求,软件在工业、学术界应用广泛,个人应用少。更强大的硬件和软件 复杂操作系统控制的强大的桌面系统,局域网和广域网,先进的应用软件配合,成为主流。集中主机环境转变为分布的C/S,B/S环境。面向对象技术取代传统技术。 例:Windows95有1000万行代码 Windows2000有5000万行代码Exchange2000和 Windows2000开发人员结构Exchange2000Windows2000项目经理25人约250人开发人员140人约1700人测试人员350人约3200人软件工程概论 什么是软件什么是软件 软件的分类软件的分类 软件的发展软件的发展 软件生存期软件生存期 软

4、件工程软件工程 软件工程的目的和要求软件工程的目的和要求软件软件是计算机系统中与硬件相互依存的另是计算机系统中与硬件相互依存的另一部分,它是包括一部分,它是包括程序,数据及其相关文程序,数据及其相关文档的完整集合档的完整集合 软件程序数据文档资料软件程序数据文档资料程序程序是按事先设计的功能和性能要求执行是按事先设计的功能和性能要求执行的指令序列的指令序列数据数据是使程序能正常操纵信息的数据结构是使程序能正常操纵信息的数据结构文档文档是与程序开发,维护和使用有关的图是与程序开发,维护和使用有关的图文材料文材料软软件的分类件的分类按软件的功能进行划分:按软件的功能进行划分:l l系统软件系统软件

5、 使计算机系统各个部件、相关软件和数据协使计算机系统各个部件、相关软件和数据协调、高效地工作的软件调、高效地工作的软件l l操作系统操作系统l l数据库管理系统数据库管理系统l l设备驱动程序设备驱动程序l l通信处理程序等通信处理程序等l l支撑软件支撑软件 协助用户开发软件的工具软件协助用户开发软件的工具软件l l文本编辑程序文本编辑程序l l文件格式化程序文件格式化程序l l磁盘向磁带进行数据传输的程序磁盘向磁带进行数据传输的程序l l程序库系统程序库系统l l支持需求分析、设计、实现、测支持需求分析、设计、实现、测试和支持管理的软件试和支持管理的软件l l应用软件应用软件l l商业数据

6、处理软件商业数据处理软件l l工程与科学计算软件工程与科学计算软件l l计算机辅助设计制造软件计算机辅助设计制造软件l l系统仿真软件系统仿真软件l l智能产品嵌入软件智能产品嵌入软件l l医疗、制药软件医疗、制药软件l l事务管理、办公自动化软件事务管理、办公自动化软件l l计算机辅助教学软件计算机辅助教学软件按软件规模进行划分:按软件规模进行划分:类别类别 参加人员数参加人员数 研制期限研制期限 源程序行源程序行数数 微型微型 1 14周 0.5k 小型小型 1 16月 1k2k 数值计算或数据处理,通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查 。只是

7、没有大题目那样严格。中型中型 25 12年 5k50k 软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写以及技术审查 需要比较严格地进行。应用程序和系统程序。系统的软件工程方法是完全必要的。大型大型 520 23年 50k100k 编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。甚大型甚大型 1001000 45年 1M(=1000k) 若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指

8、挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。极大型极大型 20005000 510年 1M10M军事指挥、弹道导弹防御系统。只是对软件工程技术依赖的程度不同而已。按软件工作方式划分:按软件工作方式划分:l l 实时处理软件实时处理软件l l 分时软件分时软件l l 交互式软件交互式软件l l 批处理软件批处理软件按软件服务对象的范围划分按软件服务对象的范围划分:l 项目软件项目软件 合同约束,实验研究合同约束,实验研究 特殊定制的特殊定制的l l 产品软件产品软件 提供市场,功能、性能、培训及服务按使用的频度进行划分:按使用的频度进行划分:l l

9、 低频度使用低频度使用l l 频繁使用频繁使用按软件失效的影响进行划分:按软件失效的影响进行划分:l l 高可靠性软件高可靠性软件l l 一般可靠性软件一般可靠性软件软件的特点软件的特点软件是一种软件是一种逻辑实体逻辑实体,而不是具体的物理,而不是具体的物理实体。因而它具有抽象性实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程软件的生产与硬件不同,在它的开发过程中中没有明显的制造过程没有明显的制造过程在软件的运行和使用期间,在软件的运行和使用期间,没有硬件那样没有硬件那样的机械磨损,老化问题的机械磨损,老化问题软件对硬件和环境有着不同程度的依赖性,导致软件对硬件和环境有着不同程度的依

10、赖性,导致了软件升级和移植的问题。了软件升级和移植的问题。传统的手工开发方式使软件开发的效率受到很大传统的手工开发方式使软件开发的效率受到很大的限制。因此,应促进软件技术自动生成技术和的限制。因此,应促进软件技术自动生成技术和其他一些有效的软件开发工具或软件开发环境。其他一些有效的软件开发工具或软件开发环境。软件本身是复杂的软件本身是复杂的l l实际问题的实际问题的复杂性复杂性l l程序逻辑结构的复杂性程序逻辑结构的复杂性 软件成本相当昂贵软件成本相当昂贵大多数软件是新开发的,而不是通过已有的构件大多数软件是新开发的,而不是通过已有的构件组装而来的。组装而来的。相当多的软件工作涉及到社会因素相

11、当多的软件工作涉及到社会因素软件生产随规模增大而复杂度增大以美国宇航局的软件系统为例:l1963年 水星计划系统 200万条指令l1967年 双子星座计划系统 400万条指令l1973年 阿波罗计划系统 1000万条指令l1979年 哥伦比亚航天飞机系统 4000万条指令假设1个人一年生产一万条有效指令,那么是否4000人生产一年,或400人生产10年就能完成任务吗?答案是否定的。一万条指令的复杂度决不仅仅是100条指令复杂度的100倍。软件开发进度难以预测拖延工期几个月甚至几年的现象并不罕见,这种现象降低了软件开发组织的信誉。以丹佛新国际机场为例。该机场规模是曼哈顿机场的两倍,宽为希思机场的

12、10倍,可以全天侯同时起降三架喷气式客机;投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4,000台遥控车,可按不同线路在20家不同的航空公司柜台、登机门和行李领取处之间发送和传递行李;支持该系统的是5,000个电子眼、400台无线电接受机、56台条形码扫描仪和100台计算机。按原定计划要在1993年万圣节前启用,但一直到1994年6月,机场的计划者还无法预测行李系统何时能达到可使机场开放的稳定程度。典型失败系统的例子IBM公司开发OS/360系统,共有4000多个模块,约100万条指令,投入5000人年,耗资数亿美元,结果还是延期交付。在交付使用后的系统中仍发现大量(2000

13、个以上)的错误。没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性 确实,直到上个世纪末,20多年以来,软件行业的生产效率依然没有数量级的提高,软件在帮助传统行业提高效率的同时,自身却成为最原始意义上的“手工行业”。虽然,许多大型的企业级应用软件采取了大规模的生产和协作,但是这种软件往往开发时间长,效率低,无法动态调整,无法由僵硬变得灵活和敏捷。软件业也需要脱离手工作坊时代和工业时代,而走进敏捷定制的后工业时代。 软件生产方式的落后,加之需求和环境的进一步复杂,使得传统软件的生产方式,不但不能缓解软件工程的危机,而是处于不断加深的危机之中。互联网

14、应用时代,企业期望的是以更低的成本,更快的速度,获得高质量、高灵活性的随处可得的软件。显然,依靠传统软件业落后的生产方式和僵化的软件结构,无法面对互联网应用的挑战。矛盾在不断加剧,危机在不断加深。 僵化的软件结构无法产生银弹从代码级做起的软件,强调功能实现,天生具有庞大、僵化、无法适应变化的缺点。编码式的软件,无论是采取何种方式,都无法真正实现“敏捷定制”。代码级的编程、代码级的维护使得效率不可能真正地提高。软件开发中的问题计划很难制定致使经费预算常常突破 由于缺乏软件开发的经验 ,主观盲目地制定计划,执行起来和实际情况有很大差距,对于工作量估计不准确,进度计划无法遵循,开发工作完成的期限一拖

15、再拖。已经拖延了的项目,为了加快进度赶上去而增加人力,反而更加延误了。需求在开发的初期阶段提得不够明确, 或是未能得到确切的表达。 软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,造成开发后期矛盾的集中暴露。然而这时问题既难于分析,也难于挽回。开发过程没有统一的、公认的方法论和规范指导 加之不重视文字资料工作,资料很不完整;忽视每个人与其他人的接口部分,发现了问题修修补补,这样的软件很难维护。未能充分做好检测工作 在运行中暴露出大量的问题,轻者影响系统的正常工作,重者发生事故,甚至造成生命财产的重大损失。 美国IBM公司在1963年至1966年开发的IBM 360机的操作系统。50

16、00人-年的工作量,1000人投入,近100万行源程序。每次发行的新版本都是从前一版本中找1000个程序错误,项目负责人F.D.Brook总结时说:“正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深。最后无法逃脱灭顶的灾难。“ 按工程化的原则和方法组织软件开发是软件开发中的问题一个主要出路。 软件工程阶段,约为70年代以后。50年代到60年代时,程序设计曾经被看做是一种任人发挥创造才能的技术领域。写出的程序通篇充满了程序技巧,这些程序很难被别人看懂。然而随着计算机的广泛使用,人们逐渐抛弃了这种观点。对于稍大的程序,并需要较长时间为许多人使用的程序,人们要求这些程序容易看懂、容易使用,并且容易修改和扩充。多个软件人员分工合作、共同完成;只有在项目的总体要求和技术规范的约束下充分发挥和施展。软件危机的具体体现(1)软件开发进度难以预测(2)软件开发成本难以控制(3)用户对软件功能难以满足(4)软件产品质量无法保证(5)软件产品难以维护(6)软件缺少文档资料软软件工程的定义件工程的定义软件工程:软件工程:是一门研究如何用系统化、规范化、是一门研究如何用系统化、规范化、数量化等工程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号