软件工程学概述
3. 郑人杰等. 实用软件工程(第二版). 北京:清华大学出版社, 1997,4
4. 周之英. 现代软件工程 . 北京:科学出版社,1999 5.《敏捷开发方法—原则、模式与实践》 Robert C. Martin著
清华大学出版社 6.《人月神话》 弗雷德里克·布鲁克斯著 清华大学出版社
学习《软件工程》对我有什么用?
代价
高
中
低
早期 中期 后期 软件开发时期
引入同一修改的代价随时间变化的趋势
关于软件开发,常见的一些观点,我们看 看是否正确:
“有一个对目标的概括描述就足以着手编写程序了, 许多细节可以在以后再补充。”
“所谓软件开发就是编写程序并设法使它运行。”
“用户对软件的要求不断变化,然而软件是柔软而灵 活的,可以轻易地改动。”
迅速普及深入的发展趋势:软件产品“供不应求”。
❖ 1.1.2 产生软件危机的原因
1)软件本身特点造成; 2)软件开发与维护的方法不正确。
主要表现:
(a)忽视软件需求分析; (b)开发过程没有统一、规范的方法论的指导,文档
资料不齐全,认为软件开发就是写程序并使之运 行; (c)轻视软件维护。
❖ 在软件开发的不同阶段进行修改需要付出 其正常运行,我们的工作就结 束了。
我们拥有一套讲述如何开发软件的书籍,书中充满了标 准与示例,可以帮助我们解决软件开发中遇到的任何问 题。
在项目计划发生延迟的情况下,增加更多的程序员一定 会加快进度。
文档是软件产品的一部分,没有文档的软件就不称其为 软件。
一个成功的项目唯一提交的就是运行程序。
软件危机的典型表现:
❖ 1)对软件开发成本和进度的估计 常常很不准确:实际成本比估计 成本高出几倍甚至十几倍,实际进 度比预期进度拖延几个月甚至几年 的现象并不罕见。
❖ 2)用户对完成的软件系统不满意 的现象经常发生:软件开发人员 与用户的信息交流不充分。
❖ 3)软件产品的质量往往靠不住: 软件质量保证技术的不完善和未全 面推广。
❖软件工程时代:为了克服软件危机,适应软件发展的需要,而采用 “工程化的生产” 方式。将工程学的某些原理和方法应用在软件的设计 和开发中来,最终出现软件工程。
软件危机的最突出的爆发:
60年代美国IBM公司开发IBM360机的操作系统, 化了5000人年的工作量,完成时间一再推迟,结 果却不理想。
软件工程
张海藩 主编
➢主讲:赵春霞 电话:13937182207 Email:springshiner@
➢课程性质:考试课 学时:共72学时 实验18学时,分组进行
➢课程成绩构成:形成性成绩:40%(考勤: 10分;实验项目:20分;实验报告:10分) 终结性考核:60%
建议参考书目
“软件投入生产性运行以后需要的维护工作并不多, 而且维护是一种很容易做的简单工作。”
❖软件维护的费用占软件总费用的55%-70%
不完善的系统定义往往是导致软件项目失败的主要原因。
只有质量差的软件产品才需要维护。
在软件开发的过程中,若能推迟暴露其中的错误,则为 修复和改正错误所花费的代价就会降低。
1.(美)Shari Lawrence Pfleeger .Sofeware Engineering Theory and Practice(Second Edition).吴丹,史争印,唐 忆译. 北京:清华大学出版社,2003,8
2. (英) Ian Sommerville .Sofeware Engineering (6th Edition). 程成等译. 北京:机械工业出版社,2003,1
1.1 软件危机
软件发展的历程: ❖60年代中期以前:通用硬件相当普遍,软件却是为某个具体的应用而 编写的。采用“个体生产方式” ❖ 60年代中到70年代中:软件作坊。随着软件规模的扩大,个体生产已 经不能够满足软件生产的需要,一个软件需要由几个人协同完成,采用 “生产作坊方式” ,随着软件需求量、规模及复杂度的增大,生产作坊 的方式已经不能够适应软件生产的需要,出现所谓“软件危机”。
什么是软件?
❖ 软件是计算机系统中与硬件相互依存的 另一部分,它是包括程序,数据及其相 关文档的完整集合。
❖ 程序是按事先设计的功能和性能要求执 行的指令序列。
长远看:…… 近期:帮助你完成毕业设计及毕业论文的撰写。
思考:假如你的毕业设计是关于一个软件的设计与开发, 拿到这个题目之后,你打算怎么开展工作?
到底什么是软件工程?
第1章 软件工程学概述
❖ 1.1 软件危机 ❖ 1.2 软件工程 ❖ 1.3 软件生命周期 ❖ 1.4 软件过程 ❖ 1.5 问题定义
项目负责人Brook后来对整个过程反思,总结经验 和教训,写成了《人月神话》,被称为程序员的 “圣经”。
1968年北大西洋公约组织的计算机科学家在联邦 德国召开国际会议,讨论软件危机问题,在这次 会议上正式提出并使用了“软件工程”一词,软 件工程学由此开始研究。
1.1.1 软件危机的介绍
软件危机:计算机软件的开发和维护过程中所遇 到的一系列严重问题。(正常、不正常运行软件都 具有这种问题)
1.1.3 解决软件危机的途径
❖ 1)正确认识软件的概念。 ❖ 2)充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组
织良好、管理严密、各类人员协同配合共同完成的工程项目。 ❖ 3)充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的
原理、概念、技术和方法,特别要吸取几十年来人类从事计算机软硬件 研究和开发的经验教训。 ❖ 4)推广使用在实践中总结出来的开发软件的成功技术和方法,并研究探 索更有效的技术和方法; ❖ 5)开发和使用更好的软件工具; ❖ 6)良好的组织管理措施。
❖ 4)软件常常是不可维护的:很多程序中的错误都非常难 以改正。“可重用的软件”的目标很难实现。
❖ 5)软件通常没有适当的文档资料:缺乏必要的文档资料 或者文档资料不合格,必然给软件开发和维护带来许多严 重的困难和问题。
❖ 6)软件成本在计算机系统总成本中所占的比例逐年上升; ❖ 7)软件开发生产率提高的速度,远远跟不上计算机应用