软件危机的产生与解决途径

合集下载

软件工程导论复习重点总结很全第六版

软件工程导论复习重点总结很全第六版

第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。

软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。

软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。

1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。

认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。

应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。

应当开发和使用更好旳软件工具。

总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。

1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。

采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。

(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。

软件工程期末复习重点

软件工程期末复习重点

1.软件危机的介绍在计算机软件的开发和维护过程中所遇到的一系列严重问题。

2.产生软件危机的原因与软件本身特点有关:软件开发与维护的方法不正确有关:3.消除软件危机的途径4.软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。

5.软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。

这个时期的工作通常又称为系统分析,由系统分析员负责完成。

软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。

6.开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。

其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。

7.维护时期的主要任务是使软件持久地满足用户的需要。

8.软件生命周期每个阶段的基本任务:问题定义、可行性研究,需求分析,总体设计,详细设计,编码和单元测试,综合测试。

9.常用软件模型区别原理:(1)瀑布模型:按照传统的瀑布模型开发软件,有下述的几个特点。

a)阶段间具有顺序性和依赖性:两重含义:段的输出文档正确,后一阶段的工作才能获得正确的结果。

①必须等前一阶段的工作完成之后,才能开始后一阶段的工作;②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶b) 推迟实现的观点瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。

c)质量保证的观点:软件工程的基本目标是优质、高产。

为了保证所开发的软件的质量,在瀑布模型的每个阶段都应坚持两个重要做法。

每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。

每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。

软件危机的表现

软件危机的表现

1.软件危机的表现答:(1)对软件开发成本和进度的估计常常很不准确。

(2)用户对“已完成的”软件系统不满意的现象经常发生。

(3)软件产品的质量往往靠不住。

(4)软件通常没有适当的文档资料。

(5)软件常常是不可维护的。

2.论述解决软件危机的途径为了消除软件危机,首先应该对计算机软件有一个正确的认识。

事实上,软件是程序、数据及相关文档的完整集合。

更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。

应该开发和使用更好的软件工具。

总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。

3.软件生命周期各个阶段的任务答:(定义时期)确定要求解决的问题是什么;然后要进行可行性研究,决定该问题是否存在一个可行的解决办法;接下来应该进行需求分析,也就是深入具体地了解用户的要求,在所要开发的目标系统必须做什么这个问题上和用户取得完全一致的看法。

(开发时期)对软件进行设计(通常又分为概要设计和详细设计两个阶段),然后才能进入编写程序的阶段,程序编写完之后还必须经过大量的测试工作才能交付使用。

4.瀑布模型的优缺点答:优点:可强迫开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

缺点:将本来非线性的软件开发过程人为地加以线性化,开发的产品只有到交付使用时才能和用户见面,对于用户的反馈意见只能从需求分析开始从头修改,加大了软件开发的工作量。

总之,由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。

软件危机的产生及解决

软件危机的产生及解决

1.分析上述说明中的案例,简述什么原因导致了以上情况,应用什么途径消除?答:这些情况是由软件危机导致的,导致软件工程发生的主要原因为(1)软件的规模越来越大,结构越来越复杂。

(2)软件开发管理困难而复杂。

(3)软件开发费用不断增加。

(4)软件开发技术落后。

(5)生产方式落后。

(6)开发工具落后,生产率提高缓慢。

解决软件危机的办法是:(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。

在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。

(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。

(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。

将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发环境。

总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施2.简述软件生命周期的划分及任务答:软件生命周期的具体划分和任务如下1.问题定义此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。

2.可行性研究可行性分析的任务是明确应用项目的开发的必要性和可行性。

必要性来自实现开发任务的迫切性,而可行性则取决于实现应用系统的资源和条件。

这项工作是建立在初步调查的基础上。

3.需求分析在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。

需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。

"唯一不变的是变化本身。

",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。

4.总体设计此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。

软件工程复习重点

软件工程复习重点

软件工程复习重点温馨提示:紫魏嫒你的个人盘点,有任何遗漏记得通知一下哦,亲~题型:一、名词解释5个15分二、简答题6个50分三、综合设计与计算21分四、软件架构14分第一章1、软件危机定义:软件危机(Software Crisis)是指软件在开发和维护过程中所遇到的一系列严重问题。

2、产生软件危机的原因:既与软件本身的特点有关,也和软件开发和维护的方法不正确有关。

●软件是逻辑产品而不是物理产品,进度和质量难于评价,开发过程难于管理和控制;●软件规模庞大,程序的复杂性随程序规模的增长而呈指数增长;●开发过程中或多或少地采用了错误的技术和方法(如忽视需求分析、认为开发软件就是写程序、轻视软件维护等)。

3、软件的生命周期:软件从定义、开发、使用和维护,直到最终被废弃这个漫长的时期称为软件的生命周期。

4、消除软件危机的途径:●对软件的定义有一个正确的认识。

●必须认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、协同配合、共同完成的工程项目。

必须吸收和借鉴人类长期从事工程项目所积累起来的原理、概念、技术和方法以及计算机硬件研究和开发的经验和教训;●推广使用在实践中总结出来的成功的技术和方法,消除错误的概念和做法,使用和开发更好的软件工具,形成更好的软件工程支撑环境.总之,需要通过一定的技术措施(技术和方法)和管理措施来消除软件危机。

5、软件工程:软件工程是:①把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,即把工程化应用于软件中;②研究①中提到的途径。

6、软件工程的本质特性:●软件工程关注于大型程序的构造;●软件工程的中心课题是控制复杂性;●软件经常变化;●开发软件的效率非常重要;●和谐地合作是开发软件的关键;●软件必须有效地支持它的用户;●软件工程领域是由具有一种文化背景的人替具有另一种文化背景的人创造产品(跨文化)。

7、软件工程的基本原理:●用分阶段的生命周期计划严格管理●坚持进行阶段评审●实行严格的产品控制●采用现代程序设计技术●结果应能清楚地审查●开发小组人员应该少而精●承认不断改进软件工程实践的必要性8、软件工程方法学:通常把软件生命周期过程中使用的一整套技术的集合称为软件工程方法学(Methodology),也称为范型(Paradigm),它包括方法(如何做)、工具(支撑平台)和过程(工作步骤)。

软件危机

软件危机

软件危机基本概念软件工程:在计算机软件的开发和维护过程中所遇到的一系列严重问题。

背景原因(软件工程的发展史……)落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

造成软件危机的原因与软件自身的特点有关,也与软件开发人员在开发和维护时期所采取的生产凡是、方法、技术有关。

可概括为以下几个风方面:1)软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂,给软件的开发和维护带来客观的困难;2)软件开发的管理困难;3)软件开发费用不断增加,维护费用几句上升,直接威胁计算机应用的扩大;4)软件开发技术落后;5)生产方式落后;6)开发工具落后,生产效率提高缓慢。

主要问题软件危机主要包含两方面的问题:1)如何开发软件以满足对软件日益增长的需求;2)如何维护数量不断增长的已有软件。

表现形式软件危机的主要表现形式如下:1)对软件开发成本和研制进度的估计常常很不精确;2)“已完成”的软件不能满足用户需求;3)软件产品质量差,可靠性得不到保证;4)软件产品可维护性差;5)软件成本在计算机系统总成本中所占的比例逐年上升;6)软件开发生产率提高的速度远远跟不上计算机应用速度普及深入的趋势。

解决途径软件危机的解决途径如下:1)首先应该对计算机软件有一个正确的人是,彻底清除“软件就是程序”的错误概念;2)要使用好的开发技术和方法,并且要不断研究探索更好、更有效的技术和方法。

尽快消除在计算机系统早期发展阶段形成的一些错误观念和做法;3)要有良好的组织、严谨的管理,各类人员要相互配合,共同完成任务。

充分让人认识软件开发不是某种个体劳动的神秘技巧。

4)应该开发和使用好的软件开发工具,从而可以有效地提高软件生产效率。

软件工程复习知识点

软件工程复习知识点

1.软件危机的概念,内容,原因及消除的途径;软件危机的概念:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。

概括地说,软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机产生的原因:软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确。

消除软件危机的途径:(1)对计算机软件应当有一个正确的认识;(2)应当有组织、有计划、通过严格的管理手段进行软件的开发;(3)及时总结软件开发的成功技术和方法并加以推广;(4)开发和使用更好的软件工具;总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。

2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科。

基本原理:软件工程的7条基本原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性3.软件工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。

软件工程方法学包含3个要素:方法、工具和过程。

内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学。

传统方法学也称为生命周期方法学或结构化范型。

4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做软件项目主要分那几个个阶段。

①问题定义:确定要求解决的问题是什么②可行性研究:决定该问题是否存在一个可行的解决办法③需求分析:深入了解用户的要求,在要开发的目标系统必须做什么问题和用户取得完全一致的看法。

④概要设计:概括回答怎样实现目标系统。

概要设计又叫逻辑设计、总体设计、高层设计。

⑤详细设计:把解法具体化,设计出程序的详细规格说明。

详细设计也叫模块设计、底层设计。

软件工程概论

软件工程概论

软件工程1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题;包含两方面的问题:1如何开发软件,以满足对软件日益增长的需求;2如何维护数量不断膨胀的已有软件;2、软件危机的主要表现:1对软件开发成本和进度的估计经常很不准确;2用户对“已完成的”软件系统不满意的现象经常发生;3软件产品的质量往往靠不住;4软件常常是不可维护的;5软件通常没有适当的文档资料;6软件成本在计算机系统总成本中所占的比例逐年上升;7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;3、产生软件危机的原因1从软件特点上看,软件是逻辑部件,不是物理部件;2软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理;3软件的参与人员多且成分复杂需求人员,开发人员,用户,维护人员等;4在软件实践过程中或多或少的采用的错误的但当时无法知晓的方法和技术这是主要原因4、消除软件危机的途径1首先应该对计算机软件有一个正确的认识;2更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;3应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法;4应该开发和使用更好的软件工具总之,为了解决软件危机,既要有技术措施方法和工具,又要有必要的组织管理措施;5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科;11968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理;21993IEEE定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径;6、软件工程的本质特征1软件工程关注于大型程序的构造;2软件工程的中心课题是控制复杂性;3软件经常变化;4开发软件的效率非常重要;5和谐地合作是开发软件的关键;6软件必须有效地支持它的用户;7在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品;7、软件工程的基本原理1用分阶段的生命周期计划严格管理2坚持进行阶段评审3实行严格的阶段性产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应该少而精7承认不断改进软件工程实践的必要性8、软件生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,所历经的一个漫长的时期;包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护;1软件定义时期:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的相关策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并适当估计完成进度表;2软件开发时期:总体设计;详细设计;编码和单元测试;综合测试; 3软件维护时期:主要任务是使软件更持久地满足用户需要;具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要;9、软件生命周期每个阶段的基本任务1问题定义:“要解决的问题是什么”;2可行性研究:“对于上一个阶段所确定的问题有行得通的解决方案吗”3需求分析:“为了解决这个问题,目标系统必须做什么;”4总体设计:“概括地说,应该怎样实现目标系统”5详细设计:“应该怎样具体地实现这个系统呢”6编码和单元测试:关键任务是写出正确的容易理解、容易维护的程序模块;7综合测试:关键任务是通过各种类型的测试及相应的调试使软件达到预定的要求;8软件维护:通过各种必要的维护活动使系统持久地满足用户的需要;10、什么是软件生命周期模型有哪些主要模型1生存周期模型:描述软件开发过程中各种活动如何执行的模型;对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心;2主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型;11、可行性研究的任务:用最小的代价在尽可能短的时间内确定问题是否能够解决;技术可行性;经济可行性;操作可行性;法律、社会效益、道德、政治等诸多方面的因素;12、可行性研究过程的步骤:1复查系统的规模和目标2研究目前正在使用的系统3导出新系统的高层逻辑模型4进一步定义问题5导出和评价供选择的解法6推荐行动方针7草拟开发计划8书写文档提交审查13、可行性分析报告的主要内容:项目背景;客户需求;商务前景;市场计划;技术方案;实施周期;财务分析;风险管理;14、数据流图DFD:以图形的方式描述数据在系统中流动和处理的过程;只反映系统必须完成的逻辑功能,是一种功能模型;15、画数据流图应注意的事项:1命名:不能使用缺乏具体含义的名字,加工名应能反映出处理的功能;2画数据流而不是控制流,一般不画物质流;3每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果 ;4编号:子图应编号子图上的所有加工也应编号,子图的编号应与父图的编号相对应;5父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致;6局部数据存储;7注意数据流图的易理解性;16、数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合;内容:数据流;数据流分量即数据元素;数据存储;处理;17、需求分析的任务1确定对系统的综合要求2分析系统的数据要求3导出系统的逻辑模型4修正系统开发计划18、软件设计的目标和任务:根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计、系统结构设计、过程设计、界面设计;19、什么是软件概要设计该阶段的基本任务是什么1把一个软件需求转换为软件表示时,首先设计出软件总的体系结构;称为概要设计或结构设计;2基本任务:①设计软件系统结构②进行数据结构及数据库的设计③编写概要设计的文档④评审;20、总体设计概要设计原理:1模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的功能;2抽象:抽出事物的本质特性而暂时不考虑它们的细节;3逐步求精4信息隐蔽和局部化5模块独立:每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单;21、模块独立程度的衡量标准:耦合和内聚1耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标;内容耦合、公共耦合、控制耦合、标记耦合、数据耦合、无耦合;2内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标;偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚;22、概要设计的启发式准则:1改进软件结构,提高模块独立性2模块规模应该适中3深度、宽度、扇出和扇入都应适当4模块的作用域应该在控制域之内5力争降低模块借口的复杂程度6设计单入口单出口的模块7模块功能应该可以预测23、面向数据流的设计方法:把信息流映射成软件结构;有两种类型:1交换流:根据基本系统模型,信息通常以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界”的形式离开系统;由输入、输出、变换或称处理三部分组成,是一顺序结构;2事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,这类数据流称为事务流;处理T称为事务中心;24、详细设计的基本任务:1为每个模块进行详细的算法设计2为模块内的数据结构进行设计3对数据库进行物理设计4其他设计5编写详细设计说明书6评审25、结构程序设计:1如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的;2结构化程序设计的基本要点:①采用自顶向下、逐步求精的程序设计方法②使用三种基本控制结构构造程序③主程序员组的组织形式;26、选择程序设计语言基本原则:1系统用户的要求2可以使用的编译语言3可以得到的软件工具4工程规模5程序员的知识6软件可移植性要求7软件的应用领域27、为了编制出清晰、紧凑、高效的程序,一般应依次考虑下列原则:1编制易于修改和维护的代码2编制易于测试的代码3必须将编程和编文档的工作统一起来4编程中采用统一的标准和约定,降低程序复杂性5限定每一层的副作用,减少耦合度6尽可能地复用28、软件测试的目标:1测试是为了发现程序中的错误而执行程序的过程2好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案3成功的测试是发现了至今为止尚未发现的错误的测试29、软件测试的准则:1所有测试都应该能追溯到用户需求2应该远在测试开始之前就制定出测试计划3把Pareto原理应用到软件测试中4应该从“小规模”测试开始,并逐步进行“大规模”测试5穷举测试是不可能的6为了达到最佳的测试效果,应该由独立的第三方从事测试工作;30、测试的步骤:1模块测试:保证每个模块作为一个单元能够正确运行,又称为单元测试2子系统测试:集成测试、组装测试、联合测试;重点在于测试模块之间的接口;3系统测试:将经过测试的子系统装配成一个完整的系统来测试;发现设计和编码的错误,验证系统是否满足需求说明所定义的功能及其动态特性;也称为集成测试;4验收测试:有用户参加的系统测试;验证是否满足用户的需要5平行运行:同时运行新旧两个系统,并且对处理的结果进行比较,以确定新系统是否满足相关性能指标;31、非渐增式和渐增式测试方法1非渐增式测试方法:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式测试方法;2渐增式测试方法:把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试;这种每次增加一个模块的方法称为渐增式测试;3非渐增式和渐增式测试方法的优缺点比较:①非渐增式方法要对每个模块编写驱动模块和桩模块,工作量较大;而渐增式方法可以利用部分已测试过的模块作为测试软件;②非渐增式方法发现模块间的接口错误较晚,而渐增式方法则要早一些;③非渐增式方法发现错误后较难定位;而渐增式方法则要容易一些;④非渐增式方法可以并行测试所有模块,可充分利用人力,加快工程进度;⑤渐增式方法接近全真运行环境,需要较多的测试运行时间,但对程序模块的测试较为彻底;32、什么是白盒测试法有哪些覆盖标准试对他们的检错能力进行比较1白盒法测试法把测试对象看作一个打开的盒子,测试人员须了解程序内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致;2白盒法的覆盖标准:语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;路径覆盖3从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准;在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准;33、什么是黑盒测试法采用黑盒技术测试用例有哪几种方法这些方法各有什么特点1黑盒测试法:把被测试对象看成是一相黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求;2采用黑盒技术测试用例的方法有:等价类的划分、边界值分析、错误推测和因果图;①等价类的划分,是将输入数据按有效的或无效的也称合理的或不合理的划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试;这样就把漫无边迹的随机测试改为有针对性的等价类测试,用少量有代表性的例子代替大量测试目的相同的例子,能有效地提高测试效率;但这个方法的缺点是没有注意选择某些高效的、能够发现更多错误的测试用例;②边界值分析法一般与等价类划分结合起来;但它不是从一个等价类中任选一个例子做代表,而是将测试边界情况作为重点目标,选取正好等于、刚刚大于和刚刚小于边界值的测试数据;边界情况是指输入等价类和输入等价类边界上的情况;这种方法可以查出更多的错误,因为在程序中往往在处理边界情况时易发生错误;③错误推测法是在测试程序时,人们根据经验或直觉推测程序中可能存在的错误,从而有针对性地编写检查这些错误的测试用例;④因果图能够有效地检测输入条件的各种组合可能会引起的错误;它的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例;34、软件维护:就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程;软件维护工作分为以下四类:1矫正性维护:目标是识别和矫正功能错误、性能错误和实现错误; 2适应性维护:使软件适应于外界环境的改变而对软件所做的修改工作;3完善性维护:为了扩充软件的功能或改善软件的性能对软件所做的改变;4预防性维护:为了以后更便于维护,或者为了改进可靠性,或者提供更好的基础便于将来提高性能而修改软件;35、决定软件可维护性的因素:可理解性;可测试性;可修改性;可移植性;可重用性;36、提高可维护性的方法1建立明确的软件质量目标和优先级2使用提高软件质量的技术和工具3进行明确的质量保证审查4选择可维护的程序设计语言5改进程序的文档37、软件维护的副作用有哪些1编码副作用;在使用程序设计语言修改源代码时可能引入的错误;2数据副作用;在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件错误;数据副作用是修改软件信息结构导致的结果;但它可以通过详细的设计文档加以控制;3文档副作用;如果对可执行软件的修改没有反映在文档中,就会产生文档副作用;以上根据老师课件和软件工程概论整理38、某厂对部分职工重新分配工作的政策是:年龄在20岁以下者,初中文化程度脱产学习,高中文化程度当电工;20岁至40岁之间,中学文化程度,男性当钳工,女性当车工,大学文化程度都当技术员;年龄在40岁以上者,中学文化程度当材料员,大学文化程度当技术员;请用结构化语言﹑判定表或判定树描述上述问题的加工逻辑;1判定树2判定表3结构化语言:CASE 年龄<20CASE 文化程度初中分配工种脱产学习CASE 文化程度高中分配工种电工ENDCASECASE 年龄<=40.AND.>=20 CASE 文化程度初中.OR.高中 CASE 性别男分配工种钳工CASE 性别女分配工种车工ENDCASE ENDCASECASE 文化程度大学分配工种技术员ENDCASEENDCASECASE 年龄>40CASE 文化程度初中.OR.高中分配工种材料员CASE 文化程度大学分配工种技术员ENDCASEENDCASE39、请使用流程图、PAD图和PDL语言描述下列程序的算法; 1在数据A1~A10中求最大数和次大数;解:如图所示:PDL语言描述:GETa1,a2,...a10 max=a1;max2=a2;FOR i=2 TO 10 IF ai>maxmax2=max;max=ai;ELSEIF ai>max2max2=ai;ENDIFENDIFENDFORPUTmax,max2END2输入三个正整数作为边长,判断该三条边构成的三角形是等边、等腰还是一般三角形;解:如图:PDL 语言描述如下:GETa,b,cIF a+b>c and b+c>a and c+a>b IF a=bIF a=cPUT"等边三角形"ELSEPUT"等腰三角形"ENDIFELSEIFa=cPUT"等腰三角形" ELSEIF b=cPUT"等腰三角形"ELSEPUT"一般三角形"ENDIFENDIFENDIFELSEPUT "这不是一个三角形"ENDIF40、用PAD图描述下面问题的控制结构;有一个表A1、A2、...An,按递增顺序排列;给定一个Key值,在表中用折半法查找;若找到,将表位置i送入x,否则将零送到x,同时将key值插入表中;算法:置初值H=1表头,T=N表尾;置i=H+T/2取整;若Key=Ai,则找到,i送到x;若Key>Ai,则Key在表的后半部分,i+1送入H;若Key<Ai,则Key在表的前半部分,i-1送入T,重复第2步查找直到H>T为止;查不到时,将Ai,...AN移到Ai+1...AN+1,Key值送入Ai中;解:如图所示:。

软件工程导论(整理)

软件工程导论(整理)

一、软件危机与软件工程1、软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.(正常、不正常运行软件都具有这种问题)2、软件危机的原因1)软件本身特点造成;程序规模庞大;程序复杂性随着程序规模的增加而呈指数上升。

2)软件开发与维护的方法不正确。

主要表现:(a)忽视软件需求分析;(b)认为软件开发就是写程序并使之运行;(c)轻视软件维护;3、解决软件危机的途径:1、组织管理:软件开发不是某种个体劳动的神秘技巧,软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

2、方法:应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。

3、工具:应该开发和使用更好的软件工具。

在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好.4、软件工程包括哪7条基本原理?1. 用分阶段的生命周期计划严格管理;2。

坚持进行阶段评审;3. 实行严格的产品控制;4. 采用现代程序设计技术;5. 结果能清楚地审查;6. 开发小组的人员应该少而精;7。

承认不断改进软件工程实践的必要性。

5、软件开发流程?1)、问题定义2)、可行性研究3)、需求分析4)、总体设计5)、详细设计6)、编码和单元测试7)、综合测试8)、软件维护6、软件开发模型瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、rational统一过程、敏捷过程与极限编程、微软过程二、可行性研究1.系统流程图系统流程图是概括地描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。

2.数据流图数据流图描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。

软件工程复习知识点

软件工程复习知识点

1.软件危机的概念,内容,原因及消除的途径;软件危机的概念:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题;概括地说,软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;软件危机产生的原因:软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确;消除软件危机的途径:1对计算机软件应当有一个正确的认识;2应当有组织、有计划、通过严格的管理手段进行软件的开发;3及时总结软件开发的成功技术和方法并加以推广;4开发和使用更好的软件工具;总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施;2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科;基本原理:软件工程的7条基本原理:1用分阶段的生命周期计划严格管理2坚持进行阶段评审3实行严格的产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应该少而精7承认不断改进软件工程实践的必要性3.软件工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型;软件工程方法学包含3个要素:方法、工具和过程;内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学;传统方法学也称为生命周期方法学或结构化范型;4.软件生命周期的具体内容,每一个阶段的任务是什么结合具体的工程例子来理解做软件项目主要分那几个个阶段;①问题定义:确定要求解决的问题是什么②可行性研究:决定该问题是否存在一个可行的解决办法③需求分析:深入了解用户的要求,在要开发的目标系统必须做什么问题和用户取得完全一致的看法;④概要设计:概括回答怎样实现目标系统;概要设计又叫逻辑设计、总体设计、高层设计;⑤详细设计:把解法具体化,设计出程序的详细规格说明;详细设计也叫模块设计、底层设计;⑥编码和单元测试:编写程序的工作量只占软件开发全部工作量的10%-20%;⑦综合测试:软件测试的工作量通常占软件开发全部工作量的40%-50%;⑧软件维护:软件维护的费用通常占软件总费用的55%-70%;①②③为软件定义时期,④⑤⑥⑦为软件开发阶段;④⑤为系统设计,⑥⑦为系统实现;5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;瀑布模型内容:瀑布模型是带“反馈环”的;优点:1可强迫开发人员采用的规范的方法结构化技术;2严格地规定了每个阶段必须提交的文档;3要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证;缺点:瀑布模型是由文档驱动的;1开发过程一般不可逆,否则代价太大;2实际的项目开发过程很难严格按照模型进行;3客户往往很难清楚地给出所有需求,而该模型却要求如此;4软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心;快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;不带反馈环优点:软件产品的开发基本上是线性顺序进行的;1可以得到比较良好的需求定义,容易适应需求的变化;2有利于开发与培训的同步;3开发费用低、开发周期短且对用户更友好;缺点:1客户与开发者对原型理解不同;2准确的原型设计比较困难;3不利于开发人员的创新;增量模型也称为渐增模型;使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试;优点:在较短时间内可以向用户提交可完成部分工作的产品,逐步增加产品功能可以使用户有比较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击;1人员分配灵活,刚开始不用投入大量资源;2如果核心产品很受欢迎,则可增加人力实现下一增量;3可先发布部分功能给客户,对客户起到镇定剂的作用;缺点:1并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构2增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程失去整体性;螺旋模型的基本思想是使用原型及其他方法来尽量降低风险;理解这种模型的一种简便方法是把它看做在每个阶段之前都增加了风险分析过程的快速原型模型;优点:1设计上的灵活性,可以在项目的每个阶段进行变更;2以笑得分段来构建大型系统,使成本计算变得简单容易;3客户始终参与每个阶段的开发,保证项目不偏离正确的方向一击项目的可控性;4随着项目的推进,客户始终掌握项目的最新信息,从而他能够和管理层有效地交互;缺点:1采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标示风险,势必造成重大损失;2过多的迭代次数会增加开发成本,延迟提交时间;喷泉模型:喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各阶段可以相互重叠和多次反复,而且项目的整个生存期中还可以嵌入子生存期;就像水喷上去又可以落下来,可以落在中间,还可以落在底部;6.了解可行性研究中的任务和过程;用最小的代价在尽可能短的时间内确定问题是否能够解决;不是解决问题,而是确定问题是否值得去解决;可行性研究的根本任务:对以后的行动方案提出建议;实质:一次大大压缩简化了的系统分析和设计;任务:1.初步确定项目的规模,目标,约束和限制;2.在澄清了问题定义之后,分析员应该导出系统的逻辑模型;3.从系统逻辑模型出发,探索若干种可供选择的主要解法即系统实现方案;4.对每种解决方法都要研究它的可行性;技术可行性、经济可行性、操作可行性过程:1.复查系统规模和目标访问关键人员,描述目标系统的限制和约束;2.研究目前正在使用的系统:现有系统的问题;3.导出新系统的高层逻辑模型;4.进一步定义问题;5.导出和评价供选择的解法;6.推荐行动方针;7.草拟开发计划;8.书写文档提交审查;7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图p388.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图P409.掌握数据字典的内容、方法、用户和实现p47内容:数据字典由4类元素定义组成;1数据流;2数据流分量即数据元素;3数据存储;4处理;定义数据的方法:数据字典中的定义就是对数据自顶向下的分解;由数据元素组成数据的方式只有下述3种基本类型:顺序选择重复用途:作为分析阶段的工具;实现:P4910.了解成本/效益分析方法p50货币的时间价值投资回收期:就是使累计的经济效益等于最初的投资费用所需的时间纯收入:整个生存周期之内的累计经济效益折成现在值-投资;投资回收率:现在的投资额P和估算出的将来每年的收益Fn,假设系统的使用寿命为n年;11.了解需求分析过程中任务是什么.p471.确定对系统的综合要求功能需求;指定系统必须提供的服务性能需求;指定系统必须满足的定时约束或容量约束可靠性和可用性需求;应定量指定出错处理需求;指环境错误,非系统本身的错误;2.分析系统的数据要求接口需求;常见的接口需求有:用户接口需求、硬件接口需求、软件接口需求、通信接口需求; 约束;常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台;逆向需求;说明软件系统不应该做什么;将来可能提出的要求;3.导出系统的逻辑模型;用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;4.修正系统开发计划;用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;12.理解面向数据流自顶向下逐步求精的方法和意义;p59结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法;通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级;方法:为了达到这个目标,通常从数据流图的输出端着手分析,这是因为系统的基本功能是产生这些输出,输出数据决定了系统必须具有的最基本的组成元素;意义:1对数据流图细化之后得到一组新的数据流图,不同的系统元素之间的关系变得更清楚了; 2对这组新数据流图的分析追踪可能产生新的问题,这些问题的答案可能又在数据字典中增加一些新条目,并且可能导致新的或精化的算法描述;3随着分析过程的进展,经过提问和解答的反复循环,分析员越来越深入具体地定义目标系统,最终得到对系统数据和功能要求的满意了解;13.理解分析及建模的意义,需求分析中应该建立哪三种模型有哪些工具来帮助建立这些模型14.需求分析需要建立三种模型:1.数据模型:实体-联系图E-R数据对象即实体之间的关系2.功能模型:数据流图DFD系统对数据进行变换的功能3.行为模型:状态转换图系统的各种状态行为模式及状态之间的转换15.掌握实体关系E-R图的概念,内容和实现方法,能结合具体实例建立实体关系图;P6216.掌握状态图的概念,内容,实现方法和作用;p6517.掌握层次方框图、warnier图、IPO图的概念,内容和作用p6818.有穷状态机的概念和内容;Petri的概念;P77有穷状态机:状态集、输入集、转换函数、初始态、终态集Petri:P8219.总体设计是做什么总体设计的过程是怎样的P9120.总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求;总体设计通常由两个过程组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;典型的设计过程包括:1.设想选择的方案2.选取理想的方案3.推荐最佳方案4.功能分解5.设计软件结构6.设计数据库7.制定测试计划8.书写文档9.省查和复审21.掌握软件设计的几个设计原理,理解他们的内容和意义;p941模块化就是把程序划分成独立命名且可独立访问的;2抽象;3逐步求精;4信息隐藏和局部化;5模块独立;它有两个定性标准度量:内聚和耦合;22.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;耦合:耦合是对一个软件结构内不同模块之间互连程度;内聚:内聚标志着一个模块内各个元素彼此结合的紧密;耦合是影响软件复杂程度的一个重要因素;设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度并且降低模块间的耦合程度,从而获得较高的模块独立性;23.耦合包含了哪些类型每个类型的具体内容是什么由低到高24.1非直接耦合:就是没有耦合;2数据耦合:就是参数传递耦合,它属于低级别耦合;3标记耦合:标记耦合指两个模块之间传递的是数据结构;4控制耦合:它属于中级别耦合,比如调度程序与进程之间的耦合,就是控制耦合;5外部耦合:属于高级别耦合6公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合;7内容耦合:属于最高级别耦合,例如,一个模块利用分支或跳转技术,转入到另一个模块中去执行,就是内容耦合;25.启发性规则的内容及部分概念;1.改进软件结构提高模块独立性2.模块规模应该适中3.深度、宽度、扇出和扇入都应适当4.模块的作用域应该在控制域之内5.力争降低模块接口的复杂程度6.设计单入口单出口的模块7.模块功能应该可以预测26.层次图、HIPO图和结构图的内容;p10227.掌握面向数据流的设计方法,怎样用变换分析法基于数据流图设计出软件总体结构了解其中涉及到的概念,结合例子理解具体是怎么做的;p104概念:面向数据流的设计方法把信息流映射成软件结构,信息流决定了映射的方法,信息流有两种类型:1、信息沿输入通路进入系统,同时由外部形式变换成内部,进入系统的信息通过变换中心,经过加工处理以后再沿输出通路变换成外部形式离开软件系统;当数据流图具有这些特征时,这种信息流就叫做变换流;2、数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行;这类数据流应该划为一类特殊的数据流,称为事务流;28.详细设计是做什么p117详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,即经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某些程序设计语言书写的程序;29.什么是结构程序设计p117结构程序设计是尽可能少用GOTO语句的程序设计方法,最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向GOTO语句;30.人机界面设计问题包含哪些p1221、系统响应时间;2、用户帮助设施;3、出错信息处理;4、命令交互31.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD图的概念和内容;掌握判定表的概念和内容;要结合实例来掌握它们;P12432.结合Jackson图来掌握面向数据结构的设计方法;p13033.如何度量程序算法的复杂性p13634.掌握几种测试:单元测试、集成测试、确认测试、白盒测试技术和黑盒测试技术;掌握它们的概念,内容和方法;P14635.理解软件维护的定义、特点和维护过程;P189定义:在软件已交付使用之后,为了改正错误或满足新的需要而修改软件的过程;特点:1结构化维护与非结构化维护差别巨大2维护的代价高昂3维护的问题很多维护过程:1、维护组织2、维护报告3、维护的事件流4、保存维护记录5、评价维护活动;36.掌握面向对象方法学的要点,理解面向对象方法学的优点;P203四个要点:对象、类、继承、消息优点:1、与人类习惯的思维方法一致2、稳定性好3、可重用性好4、较易开发大型软件产品5、可维护性好6、掌握面向对象的概念;37.掌握面向对象的概念;P209对象对象的形象表示,对象的定义,对象的特点其他概念类,实例,消息,方法,属性,封装,继承,多态性,重载38.面向对象建模是建立哪三个模型它们的具体内容是什么P21539.1、描述系统数据结构的对象模型类图:表示静态的、结构化的系统的“数据”性质;它是对模拟客观世界实体的对象彼此间的关系的映射,描述了系统的静态结构;2、描述系统控制结构的动态模型状态转换图:动态模型表示瞬时的,行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列;3、描述系统功能的功能模型用例图,数据流图:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求;40.建立对象模型的内容是什么P235建立对象模型,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则;也就是说,需要用适当的建模语言来表达模型,建模语言由记号即模型中使用的符号和使用记号的规则语义、语法和语用组成;41.掌握用UML提供的类图来建立对象模型的方法;理解类图的定义、基本符号和具体内容;类图建立对象模型的方法:1、定义类2、定义属性3、定义服务4、定义类与类之间的各种关系关联、泛化、依赖和细化;类图的定义:类图描述类与类之间的静态关系;类图是一种静态模型,它是创建其他UML图的基础;基本符号:UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域下面两个区域可省略3个区域分别放类的名字、属性和服务;42.能结合实例掌握类图中类与类之间的关系:关联、泛化继承、依赖和细化;能根据实例情况正确判断出类与类之间的具体关系类型;关联:关联表示两个类的对象之间存在某种语义上的联系;泛化继承:UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系;具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息;泛化关系指出类与类之间存在“一般-特殊”关系;泛化可进一步分成普通泛化和受限泛化;依赖:描述两个模型元素类、用例等之间的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它是依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素;细化:当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系;43.动态模型的概念、内容;P223概念:动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列;内容:动态模型是基于事件共享而互相关联的一组状态图的集合;44.功能模型的概念、内容和建立功能模型的方法;P224概念:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此直接地反应用户对目标系统的需求;内容:功能模型由一组数据流图组成;用例图也是进行需求分析和建立功能模型的强有力工具;方法:创建用例模型的工作包括:定义系统,寻找行为者和用例、描述用例,定义用例之间的关系,确认模型;其中,寻找行为者和用例是关键;45.掌握用例图的概念、内容和方法;P224概念:用例图包括模型元素有系统、行为者、用例和用例之间的关系;内容:系统、用例、行为者、用例之间的关系;方法:创建用例模型的工作包括:定义系统,寻找行为者和用例、描述用例,定义用例之间的关系,确认模型;其中,寻找行为者和用例是关键;46.掌握面向对象分析的基本过程:三个子模型与5个层次;P232三个子模型:静态结构对象模型交互次序动态模型数据变换功能模型复杂问题大型系统的对象模型通常由5个层次组成:主题层、类与对象层、结构层、属性层和服务层;47.结合实例来掌握面向对象分析过程中建立对象模型的方法包含哪些步骤;P231 1.首先,系统分析员要对需求文档进行分析;发现和改正需求文档中的歧义性、不一致性,剔除冗余的内容,挖掘潜在的内容,弥补不足,从而使需求文档更完整、更准确;2.然后,是需求建模;系统分析员根据提取的用户需求,即用面向对象观点建立对象模型、动态模型和功能模型;3.最后,是需求评审;通过用户、领域专家、系统分析员和系统设计人员的评审,并进行反复修改后,确定需求规格说明;48.结合实例来掌握面向对象分析过程中建立动态模型的方法包含哪些步骤;P24749.结合实例来掌握面向对象分析过程中建立功能模型的方法包含哪些步骤;P25350.能结合实例画事件跟踪图P24951.能结合实例画类的状态图P25052.能结合实例画出0层数据流图与功能级数据流图;P42。

软件工程导论

软件工程导论

第一章1.什么是软件危机?产生软件危机的原因?消除软件危机的途径?1)软件危机是指在计算机的开发和维护中所遇到的一系列严重问题。

2)原因,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。

3)途径:1)将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。

2)、研究和推广成功的软件开发技术和方法。

3)、开发和使用好的软件工具。

1.软件工程是:①把系统的规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。

2.软件工程的基本原理1)用分阶段的生命周期计划严格管理2)坚持进行阶段评审3)实行严格的产品控制4)采用现代程序设计技术5)结果应能清楚的审查6)开发小组的人员应该少而精7)承认不断改进软件工程实践的必要性3.软件工程方法学包含三个要素,方法、工具和过程。

4.软件生命周期的八个阶段1)问题定义2)可行性研究3)需求分析4)总体设计5)详细设计6)编码和单元测试7)综合测试8)软件维护5.什么是软件过程?几种模型的优缺点及适用项目?软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的步骤。

软件开发模型有瀑布型、渐增型和变换型。

瀑布型开发方法是按照软件生存周期的划分依次实施,每一个阶段有明确规定的任务。

它的特点:(1)各个阶段的顺序性和依赖性;(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。

渐增型开发方法及特点:(1) 从部分需求出发,先建立一个不完全的系统,通过测试运行该系统取得经验和信息反馈,加深对软件需求的理解,进一步使系统扩充和完善。

如此反复,直至软件人员和用户对所设计完成的软件系统满意为止。

(2) 在渐增型开发下的软件是随软件开发的过程而逐渐形成的。

(3) 渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。

《软件工程与开发环境》第一章软件危机与软件工程

《软件工程与开发环境》第一章软件危机与软件工程
与此同时,计算机软件成本却在逐年上升,质量没 有可靠的保证,软件开发的生产率也远远跟不上普及计 算机应用的要求。软件已经成为限制计算机系统发展的 关键因素。
1
1.1 软件危机 在计算机系统发展的早期时代的一些错误概念和做法 ,已经严重地阻碍了计算机软件的开发。用错误方法开发 出来的许多大型软件几乎根本无法维护和升级,只好提前 报废,造成大量人力、物力的浪费。
10
software crisis The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem."
Peter Keen - Managing the Economics of Information Capital
14
1.2软件工程 1.2.1软件工程简介
软件工程是工程学科。 1968年第一届NATO会议定义:
软件工程:采用工程的概念、原理、 技术和方法来开发与维护软件,把经 过时间考验而证明正确的管理技术和 当前能够得到的最好的技术方法结合 起来,这就是软件工程。

软件工程导论(第六版)课后习题答案

软件工程导论(第六版)课后习题答案

软件工程导论(第六版)课后习题答案软件工程导论(第六版)课后习题答案1. 简答题1.1 软件是如何演变而来的?软件起源于计算机的发展。

最初,计算机只能执行硬件内置的指令,而随着计算机的发展,人们开始意识到可以编写程序来控制计算机的行为。

因此,软件就诞生了。

从最初的汇编语言、机器语言编写程序,到高级编程语言的出现,软件也逐渐从简单的指令集合演变为复杂的程序系统。

同时,计算机应用领域的拓展也催生了更多类型的软件,如操作系统、数据库管理系统、图形界面等。

软件工程导论旨在帮助人们理解和应对软件开发过程中的种种问题和挑战。

1.2 简述软件危机的原因以及软件工程的解决途径。

软件危机指的是在软件开发过程中出现的一系列问题和挑战。

其原因主要包括:(1)软件开发过程中需求不明确或者需求频繁变更;(2)软件项目规模庞大,组织和管理困难;(3)软件开发中缺乏标准化的工程方法和规范;(4)软件开发中技术不成熟、人员培训和素质不足等。

为了应对软件危机,软件工程提出了一系列解决途径:(1)引入系统化的软件开发过程,如瀑布模型、迭代模型、敏捷开发等;(2)规范化软件开发活动,如需求分析、软件设计、编码、测试、维护等;(3)建立软件开发的标准和规范,如ISO 9000、CMMI等;(4)提高软件开发人员的专业水平,加强软件工程教育和培训。

1.3 软件工程活动的核心内容是什么?软件工程活动的核心内容包括需求分析、软件设计、编码、测试和维护等。

(1)需求分析:确定用户需求,定义软件的功能和性能要求。

(2)软件设计:制定软件的体系结构,并将需求转化为具体的设计方案。

(3)编码:根据设计方案,使用编程语言实现软件的功能。

(4)测试:验证软件是否符合需求和设计的要求,发现并修复潜在的问题。

(5)维护:对软件进行改进、优化和修复,确保软件长期稳定运行。

2. 应用题2.1 简述软件生命周期模型,并列举至少两种常见的软件生命周期模型。

软件生命周期模型指的是软件开发过程中各个阶段的组织和安排方式,常见的软件生命周期模型包括:(1)瀑布模型:按照固定的顺序依次进行需求分析、设计、编码、测试和维护等活动。

软件危机的表现

软件危机的表现

软件危机的表现1. 软件危机的表现答:(1)对软件开发成本和进度的估计常常很不准确。

(2)用户对“已完成的”软件系统不满意的现象经常发生。

(3)软件产品的质量往往靠不住。

(4)软件通常没有适当的文档资料。

(5)软件常常是不可维护的。

2. 论述解决软件危机的途径为了消除软件危机,首先应该对计算机软件有一个正确的认识。

事实上,软件是程序、数据及相关文档的完整集合。

更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。

应该开发和使用更好的软件工具。

总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。

3. 软件生命周期各个阶段的任务答:(定义时期)确定要求解决的问题是什么;然后要进行可行性研究,决定该问题是否存在一个可行的解决办法;接下来应该进行需求分析,也就是深入具体地了解用户的要求,在所要开发的目标系统必须做什么这个问题上和用户取得完全一致的看法。

(开发时期)对软件进行设计(通常又分为概要设计和详细设计两个阶段),然后才能进入编写程序的阶段,程序编写完之后还必须经过大量的测试工作才能交付使用。

4. 瀑布模型的优缺点答:优点:可强迫开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

缺点:将本来非线性的软件开发过程人为地加以线性化,开发的产品只有到交付使用时才能和用户见面,对于用户的反馈意见只能从需求分析开始从头修改,加大了软件开发的工作量。

总之,由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。

《软件工程基础》习题集答案-2

《软件工程基础》习题集答案-2

《软件工程基础》习题集答案 -2第一章概述1.什么是软件危机,它有哪些典型表现?所谓“软件危机”就是,在计算机软件的开辟和维护过程中所遇到的一系列严重的问题,概括起来归纳为:如何开辟软件,以满足日益增长、日益复杂的需要;如何维护数量不断膨胀的已有软件。

软件危机的典型表现主要有: a.开辟成本和进度不能准确估计b.开辟出来的软件不能满足用户的要求c.软件的可维护性差d.软件质量不可靠e.软件成本在系统中的比重逐年上升f.软件开辟生产率的提高速度不够2.简述产生软件危机的原因和解决的思路。

软件危机产生的原因一方面与软件本身的特点有关,另一方面,是与已有软件开辟、维护的方法不正确有密切关系。

解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

即采用工程化的原则和方法组织软件开辟是摆脱软件危机的一个主要出路。

3.什么是软件工程?它有哪些本质特性?软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法进行软件开辟和维护的学科。

其实质就是用工程的概念、原理、技术和方法,结合有效的管理方法和先进的开辟技术,开辟与维护软件,以解决软件危机。

4.软件工程是如何用来消除软件危机的?软件工程是从技术和管理两个方面来研究如何更好地开辟和维护计算机软件,从源头上消除软件危机。

6.简述软件的定义。

软件=程序+数据+文档7.软件工程的目的是什么?为高质量的软件开辟提供一个科学的体系框架。

8.什么是软件工程方法学?软件工程是一种什么样的技术?包括哪三大要素?分为哪三个分支?软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和开辟技术方法的集合。

目前,使用最广泛的软件工程方法学分别是传统方法学和面向对象方法学。

软件工程作为一种层次化的技术,有方法、工具和过程三大要素,并由于其涉及学科内容的极其广泛,而分为三个分支:软件开辟技术、软件项目管理技术、软件质量管理技术。

9.简述软件工程的基本原理。

软件工程有 7 条基本原理:1.严格按照软件生命周期计划进行管理 2.坚持进行阶段评审 3.实行严格的产品控制4.采用先进的程序设计技术 5.结果应能清晰的审查 6.开辟小组成员应少而精7.承认不断改进软件工程实践的必要性10.软件工程的基本开辟原则有哪些?软件工程的基本开辟原则有: 1.模块化2.抽象和信息隐蔽3.模块的高内聚和低耦合 4.确定性 5.一致性 6.完备性11.构成软件工程的基本元素有哪些?除了前面给出的软件工程三大要素,还应该包括控制和质量保证。

计算机导论之小论文1

计算机导论之小论文1

软件开发工作量分配比例
40% ~ 50%
10% ~ 20%
测试
程序
其它
软件危机的原因

一方面是与软件本身的特点有关 另一方面是由软件开发和维护的方法 不正确有关

3、消除软件危机的途径
对计算机软件有一个正确的认识
(软件≠程序) 必须充分认识到软件开发不是某种个体劳 动的神秘技巧,而应该是一种组织良好、 管理严密、各类人员协同配合、共同完成 的工程项目。 推广使用在实践中总结出来的开发软件的 成功技术和方法。 开发和使用更好的软件工具。
软件危机
过去几十年的大型软件系统的开发就犹如这 样一个焦油坑,很多大型和强壮的动物在其 中剧烈地挣扎。
拉布雷阿的焦油坑(Mural of La机包含两方面问题:

如何开发软件,以满足不断增长、日趋复杂的需求;

如何维护数量不断膨胀的软件产品。
鉴于软件危机的长期性和症状不明显的特点,近年来有人建议将软件危 机更名为:
Software depression (软件萧条) Software affliction (软件困扰) “慢性的苦恼”
软件危机主要有以下表现:


对软件开发成本和进度的估计常常不准确。开发 成本超出预算,实际进度比预定计划一再拖延的 现象并不罕见。 用户对“已完成”系统不满意的现象经常发生。 软件产品的质量往往靠不住。Bug一大堆,Patch 一个接一个。 软件的可维护程度非常之低。 软件的成本不断提高。

软件危机实例案例分析

软件危机实例案例分析

软件危机实例案例分析引言随着科技的快速发展和智能化的进步,软件已经渗透进入我们生活的各个方面。

从智能手机上的应用程序到银行系统的核心软件,软件已经成为了现代社会不可或缺的一部分。

然而,在软件的发展过程中,也经常会出现各种危机和问题。

本文将通过分析一些实际的软件危机案例,来深入探讨软件危机的原因和解决方案。

一、2003年美国东部大停电事件2003年8月,美国东北部地区遭遇了一场历史上最严重的停电事件。

停电导致数百万人口陷入黑暗中,交通系统瘫痪,经济活动中断。

初步调查显示,停电的直接原因是一台重要的线路故障。

但更深层次的原因则是市场危机和软件系统的故障。

市场危机方面,电力公司由于盲目追求利润,将维护和升级电网的投资降到了最低,导致电网老化和负荷过重。

软件系统方面,则是由于电网的复杂性和规模庞大,传统的手动维护方式已经无法满足需求。

为提高效率,电力公司采用了自动化的软件系统,但该系统存在软件缺陷和漏洞。

针对这一危机,电力公司立即启动了紧急措施来修复电网,并调查了软件系统的缺陷。

结果发现,软件系统设计上存在严重的漏洞和错误,无法正确识别并处理电网的异常情况,导致故障扩大化。

此事件再次凸显了软件系统的重要性和安全问题。

二、2014年心脏植入物异常事件2014年,全球范围内发生了一系列与心脏植入物相关的异常事件。

这些异常事件主要涉及到植入物的软件系统缺陷和安全问题。

例如,一些心脏起搏器和除颤器被黑客攻击,导致患者心脏停止跳动或者电击过度。

这些异常事件使得人们意识到植入物软件系统的重要性和安全问题。

以往,开发植入物软件系统主要考虑功耗和可靠性,安全性则没有得到足够重视。

针对这一问题,医学界和软件行业展开了深入合作,共同提出了软件安全标准和测试方法。

此外,加强对植入物软件系统的监管和审查也成为了必不可少的措施。

三、2017年世界各地恶意软件攻击2017年,全球范围内爆发了多起规模庞大的恶意软件攻击事件,例如“永恒之蓝”和“想象力”等病毒。

什么是软件危机怎么解决这个危机

什么是软件危机怎么解决这个危机

什么是软件危机怎么解决这个危机软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

那么你对软件危机了解多少呢?以下是由店铺整理关于什么是软件危机的内容,希望大家喜欢!软件危机的介绍软件危机(software crisis),20 世纪60年代以前,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。

60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长。

高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生。

软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。

原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发。

1968年,北大西洋公约组织(NATO)在联邦德国的国际学术会议创造软件危机(Software crisis)一词。

而1960年代中期开始爆发众所周知的软件危机,为了解决问题,在1968、1969年连续召开两次著名的NATO会议,并同时提出软件工程的概念。

软件危机的解决途径软件工程诞生于60年代末期,它作为一个新兴的工程学科,主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本、改进软件产品质量、提高软件生产率水平的目标。

软件工程学从硬件工程和其他人类工程中吸收了许多成功的经验,明确提出了软件生命周期的模型,发展了许多软件开发与维护阶段适用的技术和方法,并应用于软件工程实践,取得良好的效果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本章主要内容
❖ 软件开发过程 ❖ 软件危机的产生 ❖ 解决软件危机的途径 ❖ 软件工程
08.04.2020
1
计算机硬件与软件
软 件
❖ 任何计算机系统都包含硬件(hard)和软件

(software)两大部分。

❖ 硬件只是提供了计算的可能性


❖ 必须有支持和管理计算机的软件,系统才能
实现计算
08.04.2020


08.04.2020
17
解 软件工程基本原理

软 3.实行严格的产品质量控制

在现实中由于外部原因要求对需
危 求等进行修改是难免的。但必须有严
机 格的管理制度和措施。



08.04.2020
18
解 软件工程基本原理

软 4.采用现代程序设计技术和软件工程技术

如结构化程序分析(Structured Analysis)
2
软件的三层含义
软 件 ❖ 个体含义:指计算机中的程序及其文 档。
开 发

整体含义:指在特定计算机系统中所有上述
个体含义下的软件的总称,即计算机系统中硬件
过 除外的所有成分。
程 ❖
学科含义:指在研究、开发、维护以及使用
前述含义下的软件所涉及的理论、方法、技术所
构成的学科。
08.04.2020
3
软件开发过程的演化
软 ① 对软件开发成本高和进度估计不准确。 件 ② 用户对已完成的“软件系统”不满意。 危 ③ 软件产品的质量不可靠。
机 ④ 软件维护困难,维护的人员与费用不断 增加。 的 ⑤ 缺乏完整、正确的文档资料。 产 ⑥ 软件成本在计算机系统中所占比例逐年上升。 生 ⑦ 软件的发展跟不上硬件的发展和用户的要求。
人员不宜过多。人员素质低和人员过多, 都会导致软件的错误率高,且开的
途 7.承认不断改进软件工程的必要性

软件工程是一门不断迅速发展的学科,
必须学习和跟踪先进的技术和方法,也要
不断总结经验、改进方法,要不断进行技
08.04.2020
术创新。
20
解决软件危机的传统方法
B.W.Boehm认为,应制定和严格执行6类计划: 项目概要计划、里程碑计划、项目控制计划、产
途 品控制计划、验证计划、运行维护计划。

08.04.2020
16

软件工程基本原理
决 软
件 危 机

2.坚持进行阶段评审
设计的错误占软件错误的63%,编码错 误只占37%。而且在后期纠正错误的代价 非常高。因此,必须严格坚持阶段评审, 及早发现和纠正错误。
发。 08.04.2020
8
软件的生命周期

决 软 软件的生命周期(life cycle):

是指软件产品或软件系统,从生产、投
危 入使用到被淘汰的全过程。


把软件生命周期依次划分为若干阶段,
途 每个阶段有相对独立的任务,逐步完成各个
径 阶段的任务后,软件的生命周期向前推进。
08.04.2020

和结构化设计(Structured Design)等。
机 5.结果应能清楚地审查

由于软件是一种看不见摸不着的逻辑
途 径
产品,对它的检验和审查很困难。因此, 应提供可视化的检验标准和方法。
08.04.2020
19
解 软件工程基本原理

软 6.开发人员应少而精
件 危
软件开发小组的人员应该是素质高,
08.04.2020
7
产生软件危机的原因
软 件 危

❖ 客观原因:软件需求大,规模大
❖ 主观原因:软件本身的特点
软件是一种逻辑部件不是物理部件,其进展情 况和质量难以控制。
的 软件的规模非常庞大,多人共同开发,必须有
产 严格和科学的管理。
生 软件开发过分依赖于个人的智力劳动和经验。
在对用户需求没有完整、准确的认识,匆忙开
9
软件的生命周期

决 软
软件计划(planning)阶段
件 危
❖ 问题定义:要解决的问题是什么?
机 ❖ 可行性研究:在时间和资源的约束条
的 途
件下,能否完成指定的任务?包括:技
径 术可行性、经济可行性、法律可行性、
社会可行性。
08.04.2020
10
软件的生命周期

决 软件开发(development)阶段
件 算法,工程科学用于制定规范、设计范
危 机 的
型、评估成本及确定权衡,管理科学用 于计划、资源、质量、成本等管理。


08.04.2020
14
软件工程基本原理

决 ❖ 1968年在联邦德国召开的国际会议正
软 式提出并使用“软件工程”的概念和术
件 危
语,众多专家提出100多条关于软件
机 程的准则。
发 过 程
2个数量级,且质量稳步提高。 ❖ 软件生产跟不上计算机应用的要求,开
发成本增加,质量没有保证,已成制约
计算机发展的关键因素。
08.04.2020
5
软件危机
软 件
❖ 软件危机(crisis):是指在计算机软
危 件开发和维护过程中所遇到的一
机 的
系列的严重问题。


08.04.2020
6
软件危机的具体表现
❖ 第一个时期:40—60年代,个体时期
软 件
(程 序时期)
开 ❖ 第二个时期:60—70年代,软件作坊时
发 期(程序+文档)
过 程

第三个时期:70年代以后,软件工程时
期。
08.04.2020
4
软件开发过程的演化
软 ❖ 计算机软件的数量以惊人的速度急剧
件 膨胀。
开 ❖ 计算机硬件的性能/价格比,每10年提高
软 件
❖ 需求分析
危 ❖ 总体设计
机 ❖ 详细设计
的 途
❖ 编码
径 ❖ 测试
❖ 运行
08.04.2020
11
软件的生命周期

决 软
软件维护(maintenance)阶段

在不同的阶段对软件修改而付出的
危 代价是不同的!在后期引入一个变动的
机 的
代价比在早期引入要高的多,甚至高达
途 2─3个数量级。
的 ❖ 1983年,B.W.Boehm归纳提出了七条
途 基本原则。

08.04.2020
15
解 软件工程基本原理
决1.用分阶段的生命周期计划严格管理

有人统计,在不成功的软件项目中有50%左
件 右是由于计划不周造成的。应该把软件生命周期
危 机 的
划分为若干阶段,并制定出相应的切实可行的计 划,严格按照计划对开发和维护进行管理。

08.04.2020
12

软件工程
决 软
软件工程

是一门指导计算机软件开发和维 护
危 的工程学科,是一类求解软件包的工程。
机 它应用计算机科学、数学及管理科学等原
的 途
理,借鉴传统工程的原则、方法,创建软
径 件以达到提高质量、降低成本的目的。
08.04.2020
13
软件工程



计算机科学、数学用于构造模型与
相关文档
最新文档