《软件工程》新编讲义

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

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

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

资源描述

精品资料网()25万份精华管理资料,2万多集管理视频讲座精品资料网()专业提供企管培训资料[提供学员内部使用,请勿外传]软件工程刘学明编著2目录§1软件工程概述........................................................................3§1-1软件工程的由来.................................................................3§1-2软件工程原理...................................................................6§2软件开发模型.......................................................................14§2-1传统开发模型..................................................................15§2-1-1瀑布模型(WaterfallModel)..............................................15§2-1-2快速原型模型(rapidprototypemodel)....................................16§2-1-3增量模型(incrementalmodel)............................................17§2-1-4螺旋模型(spiralmodel).................................................18§2-2现代开发模型(面向对象开发模型)..............................................20§2-2-1快速应用开发(RAD)模型...................................................20§2-3-2迭代式开发模型(iterativedevelopmentmodel)..............................23§2-2-3喷泉模型(waterfountainmodel).........................................24§2-3-4统一过程开发模型RUP(RationalUnifiedProcess).........................25§2-3-5极限编程模型XP(eXtremeProgramming)...................................28§2-3软件工程工具..................................................................30§2-3-1常见的软件工程工具.......................................................30§2-3-2CASE工具之-Rationalrose介绍...........................................31§2-3-3CASE工具之-VisualStudio.NET介绍.....................................33§2-4现实中的软件工程..............................................................36§3可行性研究.........................................................................40§3-1可行性研究的任务..............................................................40§3-2新系统描述方法................................................................40§3-3可行性研究报告结构............................................................40§4需求分析...........................................................................44§4-1综述..........................................................................44§4-2结构化分析方法................................................................51§4-3面向对象分析方法..............................................................58面向对象的基本概念.................................................................58典型的面向对象方法介绍.............................................................663§1软件工程概述§1-1软件工程的由来软件工程的产生和发展与“软件危机”密切相关。世界上,第一个写软件的人是Ada(AugustaAdaLovelace),在1860年代他尝试为Babbage(CharlesBabbage)的机械式计算机写软件。尽管他们的努力失败了,但他们的名字永远载入了计算机发展的史册。在1950年代,软件伴随着第一台电子计算机的问世诞生了。以写软件为职业的人也开始出现,他们多是经过训练的数学家和电子工程师。1960年代美国大学里开始出现授予计算机专业的学位,教人们写软件。本世纪中叶软件产业从零开始起步,在短短的50年的时间里迅速发展成为推动人类社会发展的龙头产业,并造就了一批百万、亿万富翁。随着信息产业的发展,软件对人类社会性越来越重要。知道今天,软件的发展历史不过五十余年,他对于人类而言还是一个全新的东西,人们对软件的认识经历了一个由浅到深的过程。在计算机系统发展的初期,硬件通常用来执行一个单一的程序,而这个程序又是为一个特定的目的而编制的。早期当通用硬件成为平常事情的时候,软件的通用性却是很有限的。大多数软件是由使用该软件的个人或机构研制的,软件往往带有强烈的个人色彩。早期的软件开发也没有什么系统的方法可以遵循,软件设计是在某个人的头脑中完成的一个隐藏的过程。而且,除了源代码往往没有软件说明书等文档。从60年代中期到70年代中期是计算机系统发展的第二个时期,在这一时期软件开始作为一种产品被广泛使用,出现了“软件作坊”专职应别人的需求写软件。这一软件开发的方法基本上仍然沿用早期的个体化软件开发方式,但软件的数量急剧膨胀,软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊地高,而失败的软件开发项目却屡见不鲜。尤其是,许多程序由于个体化特征使得根本不能维护和继续使用。就这样,“软件危机”开始了!就这样,一门新兴的工程科学就此诞生了!“软件危机”使得人们开始对软件及其特性进行更深一步的研究,人们改变了早期对软件的不正确看法。早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧。现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充。概括来说,软件危机包含两方面问题:一、如何开发软件,以满足不断增长,日趋复杂的需求;二、如何维护数量不断膨胀的软件产品。软件危机主要有以下表现:(1)对软件开发成本和进度的估计常常不准确。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。(2)用户对“已完成”系统不满意的现象经常发生。(3)软件产品的质量往往靠不住。Bug(故障)一大堆,Patch(补丁)一个接一个。(4)软件的可维护程度非常之低。(5)软件通常没有适当的文档资料。4(6)软件的成本不断提高。(7)软件开发生产率的提高赶不上硬件的发展和人们需求的增长。软件危机的原因,一方面是与软件本身的特点有关;另一方面是由软件开发和维护的方法不正确有关。软件开发和维护的不正确方法主要表现为忽视软件开发前期的需求分析;开发过程没有统一的、规范的方法论的指导,文档资料不齐全,忽视人与人的交流;忽视测试阶段的工作,提交用户的软件质量差;轻视软件的维护。这些大多数都是软件开发过程管理上的原因。1968年,第一次提出了“软件危机”(softwarecrisis)这个名词,也第一次提出了软件工程(softwareengineering)这个概念。1968年秋季,NATO(北约)的科技委员会在德国Garmish召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那次会议上FritzBauer首次提出了软件工程(softwareengineering)这个概念。至今,软件工程整整走过了38年的历程。在这38年的发展中,人们针对软件危机的表现和原因,经过不断的实践和总结,越来越认识到:按照工程化的原则和方法组织软件开发工作,是摆脱软件危机的一个主要出路。今天,尽管“软件危机”并未被彻底解决,但软件工程38年的发展仍可以说是硕果累累。统计数据表明,大多数软件开发项目的失败,并不是由于软件开发技术方面的原因。它们的失败是由于不适当的管理造成的。遗憾的是,尽管人们对软件项目管理重要性的认识有所提高,但在软件管理方面的进步远比在设计方法学和实现方法学上的进步小,至今还提不出一套管理软件开发的通用指导原则。软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。软件工程包括两方面内容:软件开发技术和软件项目管理。软件开发技术包括软件开发方法学、软件工具和软件工程环境。软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。软件工程发展至今,其技术可划分为传统软件工程和现代软件工程两类。传统软件工程从单独文件到模块文件早期写程序,都是将代码打在穿孔纸带上,让计算机去读入。后来有了汇编语言,可以写一些代码了。这时的代码是写在文本文件里,然后交给一个编译器去编译,再由一个链接器去链接,这样就出来了程序。第一个写汇编的人,可能写的是有名的“HelloWorld”程序,那个程序写在一个文件里就行了。所以后来就成了习惯,大家都把代码写到一个文件里。早期的汇编语言里,GOTO语句是用得非常非常频繁的,将一个语句GOTO到另一个文本文件里去,既不现实也不方便。所以大家习以为常,便统统地把代码写到一个文件里。再后来出了高级语言,什么C呀,Pascal呀之类的。既然大家已经形成习惯了,所以很自然地会把一个程序写到一个文件里。无论这个程序有多大,多少行代码,写到一个文件里多方便呀。直到如今语言发展得更高级了。可是程序员的习惯还是难改,一旦得了机会,还是5喜欢把代码写到一个文件里的。在早期,程序员把3000行代码写到一个文件里,是司空见惯的事了。所以,按照这样的习惯,一百万行代码也可能写在一个文件里。不单可以,而且编译器、编辑器等等也都必须要支持。这才是正统的软件开发。对于要把“一百万行代码写到一个文件”,查找一个函数要在编辑器里按五千次PageDown/PageUp键的勤快人来说,是不能指望他们创造出“单元文件(Unit)”这样的开发方法来的。然而单元文件毕竟还是出现了。有了单元文件,也就很快出现了一个新的概念:模块。把一个大模块分成小模块,再把小

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

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

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

×
保存成功