软件工程(B)教案田萱2008-8-30目录课程说明..........................................................................................................................................1一软件工程概述(理论3学时).................................................................................................11软件工程的起源和作用........................................................................................................1附录(一)常用CASE工具介绍.....................................................................................................4附录(二)CASE工具的种类及应用特点....................................................................................10附件(三)软件、软件危机、软件工程...................................................................................16附录(四)软件工程的七条基本原理.........................................................................................20课程说明学时数:总学时40(理论30实验10习题0讲座0讨论0实习0周)一软件工程概述(理论3学时)1软件工程的起源和作用1)软件开发的发展历史分为三个阶段:程序设计阶段20世纪的50—60年代),手工作坊软件设计阶段(20世纪的60—70年代),小组合作生产软件工程阶段(20世纪的70年代—至今),工程化的生产2)软件危机软件危机的突出代表--IBM360操作系统的开发。软件危机(softwarecrisis)指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(softwarecrisis)这个名词。概括来说,软件危机包含两方面问题:一、如何开发软件,以满足不断增长,日趋复杂的需求;二、如何维护数量不断膨胀的软件产品。具体来说,软件危机主要有以下表现:(1)对软件开发成本和进度的估计常常不准确。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。(2)用户对“已完成”系统不满意的现象经常发生。(3)软件产品的质量往往靠不住。Bug一大堆,Patch一个接一个。(4)软件的可维护程度非常之低。(5)软件通常没有适当的文档资料。(6)软件的成本不断提高。(7)软件开发生产率的提高赶不上硬件的发展和人们需求的增长。软件危机的原因,一方面是与软件本身的特点有关;另一方面是由软件开发和维护的方法不正确有关。软件开发和维护的不正确方法主要表现为忽视软件开发前期的需求分析;开发过程没有统一的、规范的方法论的指导,文档资料不齐全,忽视人与人的交流;忽视测试阶段的工作,提交用户的软件质量差;轻视软件的维护。这些大多数都是软件开发过程管理上的原因。3)软件工程的作用1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程(softwareengineering)这个概念。到今年(2008),软件工程整整走过了40年的历程。软件工程用来解决在开发大型的复杂软件系统过程中遇到的问题。之所以称为软件工程,是因为软件开发是一个工程化的过程。软件工程的目标就是找到一种能指导大型复杂的软件系统的开发原则,能指导软件开发过程,从而生产出高效可靠的软件产品。在开发大型系统时,涉及到使用大量人工、时间,涉及到项目管理、人员管理等,因而有许多内容与业务管理相关,而不只是和计算机科学有关。为了理解软件工程中涉及的问题,可以先想象其它的大型复杂设施的构建(机械行业和建筑行业等)。例如,汽车,办公大楼,水立方等。自然会想到以下几个问题,这个项目需要的人力、时间、资源、技术等;如何把项目分割成几个便于管理的模块?如何保证模块间的协调?如何便于同一模块内外人员的沟通?如何检查进度?如何处理广泛存在的细节?软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。是不是软件工程完全可以借鉴这...