第一章 软件工程学概述

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程概述一、软件工程学科介绍二、学习目标三、部分参考资料四、课程特点和学习的注意事项五、教材简介六、课程考核方式1一、软件工程学科介绍软件程学科发展历史三个阶段:概念提出、学科雏形、学科确立第一阶段:概念提出1968年NATO会议(北大西洋公约组织的计算机科学家的国际会议)提出“软件工程”概念。当时对“软件工程”代表性定义:为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则和方法。1972年IEEE学会的计算机分会IEEE一CS第一次出版了“软件工程学报”2第二阶段:学科雏形上世纪70年代末,美国将软件工程教程列入研究生教育计划。1980年代末和1990年代初,软件工程教育得到卡内基一梅隆大学软件工程研究所(CMU/SEI)的支持。1991年,“软件工程”被ACM(美国计算机协会)和IEEE/CS列为计算学科的九个知识领域之一。1993年,IEEE一CS和ACM为了把软件工程建设成为一个专业,建立了IEEE一CS/ACM联合指导委员会。3第三阶段:学科确立2004年8月,IEEE一CS和ACM给出:软件工程知识体(SWEBOK,SoftwareEngineeringBodyofKnowledge)软件工程教育知识体(SEEK)最终版,标志着软件工程学科在世界范围正式确立。软件工程、计算机科学、计算机工程、信息系统、信息技术并列成为计算学科下的独立学科。软件工程知识体(SWEBOK):全面描述了软件工程实践所需的知识。4SWEBOK(软件工程知识体》10个领域软件需求软件设计软件构造软件测试软件维护软件配置管理软件工程管理软件工程过程软件工程工具和方法软件质量5参考资料:[1]白征.SWEBOK:软件工程知识体,计算机科学,2001年07期[2万江平.软件工程知识体系指南综述,计算机应用研究,2006年10期SWEBOK详细结构(1)67软件工程与其他学科的关系1、软件工程是计算学科9个领域之一.算法和数据结构计算机系统结构人工智能和机器人学数据库和信息检索人一机交互操作系统程序设计语言软件方法学和软件工程数字和符号计算8计算学科中12个重复出现的基本概念绑定.概念和形式模型效率抽象层次按时间排序安全性大问题的复杂性一致性和完备性演化按空间排序重用折衷与决策9软件工程是计算学科的分支,这12个概念同样将贯穿软件工程学科,是学科的精髓。2、8个相关学科知识域计算机工程计算机科学数学管理学项目管理质量管理系统工程学软件人类工程学其中:计算机科学、数学是基础工程学科、管理学科也非常重要10软件程是一门什么样的学科?是指导计算机软件开发与维护的一门工程学科。工程:将科学及数学原理运用于实际用途的应用手段,如:设计、制造、机器操纵、构架等。典型的传统工程:建筑工程、机械工程、电力工程等。概括的说,软件工程即用工程、科学和数学的原则和方法研制、维护计算机软件的有关技术及方法,其优点是以较小的代价开发高质量的软件并有效地维护它。11二、学习目标(1)掌握软件工程的基础知识和理论,对软件工程学有一个全貌的了解;熟悉软件项目开发和维护的一般过程;熟练掌握软件需求分析、设计、编码和测试等阶段的主要思想和技术方法;12二、学习目标(2)通过学习,特别是通过课程设计,真正运用和深刻体会软件工程的思想方法,转变对软件开发的认识:从个人的单纯编程活动转移到进行系统分析与设计方面上来转变思维定式:程序员―系统工程师(系统分析员)13三、部分参考资料《软件工程理论与实践》许家冶等编著,高等教育出版社,2005年《软件工程》(第二版),齐治昌等,高等教育出版社,2004年《面向对象的系统分析》,杨芙清等编著,清华大学出版社,2001年《UML用户指南》GBooch等著,邵维忠等译,机械工业出版社2002年14四、课程特点和学习的注肯事项1、知易行难要将理论知识与实践运用结合,进行对照,以加深理解和掌握。2、内容纷杂软件工程涉及计算机科学、数学、工程科学和管理科学等多个领域。其中:计算机科学和数学用于构造模型与算法;工程科学用于制定规范、设计范型、评估成本及确定权衡管理科学用于计划、资源、质量和成本的管理。15五、教材总目录第1章软件工程学概述第2章可行性研究第3章需求分析第4章形式化说明技术第5章总体设计第6章详细设计第7章实现第8章维护第9章面向对象方法学引论第10章面向对象分析第11章面向对象设计第12章面向对象实现第13章软件项目管理附录AC++类库管理系统分析与设计附录B汉字行编辑程序设计16课程内容学时安排章节课程内容学时l软件工程学概述42可行性研究43需求分析45总体设计66详细设计47实现8章节课程内容学时8软件维护29面向对象方法学引论410面向对象分析211面向对象设计212面向对象实现213软件项目管理614总结217六、课程考核方式分数组成:平时成绩(书面作业、课堂测试、考勤和态度):10%期中考试:30%期末考试:60%18第1章软件工程学概述1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程1.5小结习题19学习重点1、软件危机、软件工程产生的原因2、软件工程过程和软件生命周期3、软件生命周期模型掌握几个基本概念软件危机软件工程软件过程软件生命周期软件生命周期模型20软件危机与软件工程学软件工程学的产生要从“软件危机”说起1968年,第一届NAT0(北大西洋公约组织的计算机科学家的国际会议)会议,“软件工程”的慨念作为一种有效解决“软件危机”的途径被正式提出。什么是软件危机?软件危机有什么典型表现?为什么会产生软件危机?怎么解决软件危机?21§1软件危机§1.1.1软件危机介绍什么是软件危机?软件危机指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。软件危机主要包括的问题(两方面):①如何开发软件②如何维护软件22软件危机有什么典型表现?(1)开发费用和进度难以估算和控制,大大超过预期的资金和规定日期;软件需求分析不够充分,用户不满意“已经完成”的软件系统。软件质量难于保证;软件维护困难;难以改正程序中的错误;难以根据用户的需要在原有程序中增加一些新的功能。23软件危机有什么典型表现?通常没有保留适当的文档资料。文档的作用:软件开发管理人员:用于管理和评价软件开发工程的进展状况软件开发人员:用于开发人员对各个阶段的工作都进行周密思考、全盘权衡、从而减少返工。并且可在开发早期发现错误和不一致性,便于及时加以纠正软件维护人员:软件维护的依据开发成本逐年上升,软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。2425几个软件危机的著名案例①1966年,IBM360机的操作系统。花费5000人一年的工作量,写了近1万行代码。错误百出,每次的新版本就是从前一版本中找1000个程序错误而修正的结果。②1963年,美国用于控制火星探测器的计算机软件中的一个“,”号被误写为“.”,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失。③美国丹佛新国际机场自动化行李系统软件。投资1.93亿美元,计划1993年万圣节启用。但开发人员一直为系统错误困扰,屡次推后启用时间,直到1994年6月,机场计划者承认无法预测何时能启用。④1996年,欧洲阿里亚纳5型运载火箭坠毁,造成5亿美元损失。原因是控制软件中的一个错误。26§1.1.2产生软件危机的原因主要两个原因:1、与软件本身的特点有关2、与软件开发与维护的方法不正确有关。27一、软件本身的特点(1)软件与硬件、一般程序存在很多不同之处。1、软件与硬件不同抽象性。软件生产没有明显的制造过程,难以衡量开发进展,也难以控制软件质量。问题的隐蔽性。没有硬件的磨损、老化问题,但存在开发早期在分析、设计阶段的错误,修改难度较大。28失效率蜘线29改正一个问题需付出的代价302、软件与一般程序不同(1)①软件远比一般程序规模庞大,复杂性高软件所反映的实际问题的复杂性程序逻辑结构的复杂性。例1:Windows95,1000万行代码;Windows2000,5000万行代码例2:Exchange2000和windows2000开发人员31软件的规模32软件产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。2、软件与一般程序不同(2)②大型软件开发既有技术问题,还有社会问题。社会因素:组织机构、体制、管理方式、观念、人的心理素等。开发团队成员分工合作技术与管理的矛盾软件开发人员对软件应用的领域知识的了解33二、软件开发维护方法中存在的问题(1)①对用户需求的获取不正确用户的原因分析人员的原因对分析人员的要求:沟通能力、归纳总结能力、经验越是早期产生的错误,付出的代价越大。图:不同时期引入同一变动的代价34二、软件开发维护方法中存在的问题(2)②软件开发就是编写程序。一个完整的软件产品由一整套完整的配置组成,程序只是其中的一个组成部分。软件开发过程包括多个阶段,每个阶段的产品都是最终的完整的软件产品的一部分。③软件开发只要依靠个别编程高手就能完成。④轻视软件维护软件维护约占软件费用55一75%,包括修改软件运行的错误;对软件进行改进和功能扩充。3536软件维护在软件费用的比例三、其他产生软件危机的原因①软件开发尚未完全摆脱手工艺的开发方式。②软件成本相当昂贵,主要依靠大量复杂的、高强度的脑力劳动③软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。软件的“可移植性”就是指的软件对硬件的依赖程度。好的可移植性依赖少。37§1.1.3消除软件危机的途径1、彻底消除“软件就是程序”的错误观念。2、充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目,不是个人独立的劳动。3、推广和使用在实践中总结出来的软件开发的成功技术和方法。4、开发和使用更好的软件工具38总结:“软件工程”的方法理论是摆脱软件危机的一个主要出路。计算机和软件科学家为解决软件危机问题,尝试将在其它领域中行之有效的工程学知识运用到软件开发工作中来,经过不断实践和总结,最后得出一个结论;按工程化的原则和方法组织软件开发工作是有效的,是摆脱软件危机的一个主要出路。39思考题(1)1)只要是编程高手,即使是不懂软件工程,也能编出很好的软件。软件是服务于大众,却是由个性化的开发人员完成的。如果个性化太强,程序就无法阅读,其他人员也就无法维护。例:国内80年代涌现出来的众多汉字操作系统均是由编程高手完成的。40思考题(2)2)只要拥有一套讲述如何开发软件的书籍,并了解了书中的标准与示例,就可以解决软件开发中遇到的任何问题。软件是用来解决现实问题的,现实问题的特殊性对规范提出了挑战(要进行适应)。软件技术是发展的,没有祖传秘方。就像拥有食谱并不能成为名厨一样,软件开发需要实践。41思考题(3)3)只要拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。硬件环境只是必要条件,人才是充分条件,软件是人在一定的约束条件下创造出来的。因人因事而异。42思考题(4)4)软件开发时,如果进度慢,落后于计划,可以增加更多的程序员来解决。增加人力可以减少开发时间吗?新手!任务的重新划分!沟通更加复杂!必须依靠科学地计划来解决这样的问题。43思考题(5)5)争议:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?软件的性能问题;应用级别→算法的合理性;系统级别→操作系统、数据库系统、系统软件等;44§1.2软件工程§1.2.1软件工程介绍一、“软件工程”的典型定义1)1968年,第一届NATO会议为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建

1 / 103
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功