软件工程导论期末复习提纲(精)
《软件工程导论》考试复习资料.docx

2016-2017年第一学期《软件工程》期末复习答疑一、怎样进行课程的总复习?将在16周最后的课程总复习课(串讲):第一、各章的复习重点;第二、适当讲解期末考试复习题。
下面给同学们提几点建议,供大家参考:(1)在进行课程的总复习前,应该完成课程的上机练习作业;(2)要进行全面地系统的复习,决不能靠猜题和押题等侥幸心理进行复习,因为结业考试的题量很大,内容覆盖非常广,所以必须进行全面地系统的复习;(3)在全面地系统复习基础上,掌握的课堂讲授的知识点。
尤其要抓住各章的重点和难点问题深入复习(我将会在最后一次复习课中强调的)。
(4)在全面复习的基础上,认真练习或阅读期末考试复习题(与考试题型一致)。
(5)所给的复习资料上未提到内容,只要求作一般性的掌握,可以不必去深究,但不代表一点不考,因为需要掌握《软件工程》中的一些常识。
二、课程理论考试试卷题型本课程理论考试是闭卷考试,题型包括:名词解释5题15分;单项选择题15题15分,填空题10题20 分,判断题2()题10分,问答与简述题5题2()分。
综合题两题20分。
一、名词解释1、软件危机答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)-般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2、需求分析答:需求分析是指开发人员要准确理解用户的需求,进行细致的调查分析,将用户非形式的需求陈述转化成完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
3> Alpha 测试答:用户在开发者的场所进行测试,并且在开发者的指导下进行,测试在受控环境中进行,开发者记录发现的错误和问题4、Bela测试答:用户在一个或多个客户场所进行测试,不受开发者控制,测试者记录发现的问题和错误,定期将问题报告发送给开发者。
《软件工程导论》期末复习材料

《软件工程导论》期末复习材料1、什么是软件危机?产生的主要原因有哪些?(1页)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要原因:1)用户对软件需求的描述不精确。
2)软件开发人员对用户需求的理解有偏差。
3)缺乏处理大型软件项目的经验。
4)开发大型软件易产生疏漏和错误。
5)缺乏有力的方法学的指导和有效的开发工具的支持。
6)面对日益增长的软件需求,人们显得力不从心。
2、什么是瀑布模型,瀑布模型的缺点主要有哪些?(15页)瀑布模型将软件开发分成:需求分析、规格说明、设计、编码、综合测试和维护阶段,每个阶段必须完成规定的文档,必须等前一个阶段完成之后才开始下一个阶段的工作,前一个阶段输出的文档是下一个阶段的输入文档。
缺点主要包括:1)在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。
2)在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。
3)不支持产品的演化,缺乏灵活性,使软件产品难以维护。
3、什么是数据流图,数据流图由哪些基本符号组成?(40页)数据流图:简称DFD, ,主要用于SA(结构化分析)方法,它描绘信息流和数据从输入移动到输出的过程中所经受的变换,是一种功能模型. 基本符号有四种: ->,箭头,表示数据流; =,开口矩形或者两条平行线,表示数据存储; 正方形或者立方形,表示数据的源点或终点,圆角矩形或圆形,表示加工,也就是数据的处理;数据流图中每一个加工至少有一个输入流和一个输出流。
4、数据字典有哪几种元素组成?(47页)1)数据流,2)数据元素,3)数据存储,4)处理或者加工5、需求分析阶段的基本任务是什么(56页)1).问题识别,确定系统的综合需求和数据需求,包括a.功能需求b.性能需求c.环境需求d.用户界面需求e.出错处理的需求f.接口需求2).分析与综合,导出软件的逻辑模型.3).修正开发计划4).编写文档6、模块的内聚有哪几种?(99页)功能内聚(模块就是一个单一功能)、顺序内聚(模块中的处理必须顺序执行)、通信内聚(模块中所有任务都是对同一批数据操作)、过程内聚(模块中的处理必须按特定次序执行)、时间内聚(模块的任务要在同一时间段完成)、逻辑内聚(模块的任务在逻辑上属于一类)、偶然内聚(模块中的任务有很松散的关系)。
软件工程导论复习整理(最新)

软件工程导论复习整理(最新)第一篇:软件工程导论复习整理(最新)第一章1..软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.软件与硬件的区别:软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。
3.软件:程序、数据及相关文档的完整集合。
4.软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到最好的技术方法结合起来,以经济地开发出高质量的软件并有校地维护它。
5.软件工程方法学三要素:方法、工具和过程。
6.传统方法学也称为生命周期方法学或结构化范型。
它采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。
7.面向对象方法学把数据和行为看成同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。
8.软件生命周期划分为三个时期:1软件定义(问题定义、可行性研究、需求分析),2软件开发(总体设计、详细设计、编码和单元测试、综合测试),3运行维护(软件维护)。
9.4类软件维护活动:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件,为将来的维护活动预先做准备。
10.“瀑布模型”的缺点:它是由文档驱动的,仅仅通过写在纸上的静态的规格说明,很难全面正确地认识动态的软件产品;瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的产品不能真正的满足用户的需要。
11.快速原型模型的优点:原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求;开发人员通过建立原型系统已经学到了很多东西,因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。
软件工程导论期末复习大纲

软件工程导论期末复习大纲第一章软件工程概述〔软件=程序+数据+文档〕1.软件危机:定义:电脑软件的开发和维护过程中所遇到的一系列严重问题。
表现:软件开发的成本和进度估计常常不准确;用户对“已完成的”软件系统不满意的现象经常发生;软件产品的质量往往靠不住;软件常常是不可维护的;软件通常没有适当的文档资料;软件产品供不应求,跟不上电脑普及速度。
产生原因:与软件本身的特点;与关软件开发与维护的方法不正确有关。
解决方法:消除各自为阵的理念;使用在实践中总结出来的成功的经验,探索更有效地技术和方法;开发和使用更好的软件工具。
2.软件工程:定义:指导电脑软件开发和维护的一门工程学科。
七条基本原理:用分阶段的生命周期计划严格管理;坚持进行阶段评审;实行严格的产品控制;采用现代程序设计技术;结果应能清楚地审查;开发小组的人员应该少而精;承认不断改良软件工程实践的必要性。
3.软件工程方法学:定义:通常把在软件生命周期全过程中使用的一整套技术方法的集合。
两种方法学:传统方法学、面向对象方法学。
优点传统方法学:把软件生命周期划分成假设干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,降低了整个软件开发过程的困难程度;在每个阶段都采用科学的管理技术和良好的技术方法,每个阶段都从技术和管理两个方面进行严格审查,保证软件的质量;提高了软件的可维护性,提高开发成功率。
面向对象方法学:符合人们通常的思维方式,提高了软件的可理解性;对象是相对独立的实体,重用性好;可维护性好。
三种要素:方法、工具、过程。
4.软件生命周期:软件定义〔系统分析〕:问题定义、可行性研究、需求分析;软件开发:总体设计+详细设计〔——系统设计〕、编码和单元测试、+测试〔——系统实现〕;运行维护:软件维护。
5.软件过程:生命周期模型:瀑布模型快速原型模型增量模型螺旋模型喷泉模型 RUP模型优点瀑布模型:可强迫开发人员采用标准的方法,严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证;它基本上是一种文档驱动的模型。
软件工程导论复习重点总结很全(第六版)(精)

第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.概念:(1)软件的概念(组成成分、作用);(2)软件危机的含义、表现、产生原因(客观、主观)(3)软件工程学科包括的内容、解决的主要问题(4)软件生命周期的含义、组成阶段及各阶段主要任务2.需理解的问题:(1)软件与程序的区别和联系?(2)开发一个软件项目包括哪些基本的步骤?每一步骤完成哪些工作?(3)主要的软件过程模型(生命周期模型)有哪些?各自有什么特点?二、结构化分析-面向数据流的分析方法1.什么是软件需求?需求分析过程(步骤)?2.需求分析模型:(1)功能模型(数据流图DFD)的含义、描述符号、画法步骤及规则(2)数据模型(E-R图)的作用(3)行为模型(状态转换图)的作用(4)数据字典的作用三、结构化设计1.软件设计的任务?结构化设计与结构化分析的区别和联系?2.软件设计遵循的基本原理及规则:(1)模块化的含义、如何划分模块(降低成本、提高独立性)?(2)抽象与逐步求精的含义、二者间关系如何?(3)信息隐藏的含义(4)如何完善软件结构(深度、宽度、扇入、扇出、作用域、控制域)? 3.模块独立性:(1)模块独立性含义?(2)模块独立性的度量标准:耦合的分类、含义及应用;内聚的分类、含义及应用。
4.概要设计(面向数据流的设计方法)(1)概要设计的任务?(2)数据流图的类型及特征(变换型、事务型)(3)变换分析设计方法的应用(步骤)(4)事务分析设计方法的应用(步骤)4.详细设计(过程设计)(1)详细设计的任务(2)结构化程序(设计)的特征(3)详细设计结果的描述工具:程序流程图、N-S图、PAD图、PDL、判定表四、软件测试1.软件测试基础(1)软件测试的含义和目的?(2)测试用例的内容(输入数据、预期输出结果)?(3)主要测试方法(黑盒测试、白盒测试)的含义?2.主要的白盒测试技术及应用-------逻辑覆盖法?基本路径测试方法? 3.主要的黑盒测试技术及应用-------等价类法? 边界值分析法?4.软件测试的过程?(1)单元测试(采用的测试方法;测试内容)(2)集成测试(采用的测试方法;测试内容;模块组装策略)(3)确认测试(采用的测试方法;测试内容;α测试与β测试?)(4)辅助模块的含义及作用(驱动模块、存根模块?)五、面向对象方法学基础 1.基本概念:(1)对象的含义及特点?(2)类的含义?类与对象的关系?(3)消息及消息传递的含义及作用?(4)继承的含义?多态性机制?2.面向对象建模技术中的三种模型及各自作用?3.对象模型及描述(类图):对象(类)的图形表示;关系(关联、聚集、继承)的图形表示; 4.事件追踪图、状态图、用例图的作用六、面向对象分析与设计过程1.面向对象分析(OOA)的任务?OOA的基本过程?2.面向对象设计(OOD)的主要任务?OOD与OOA的区别和联系?3.OOD模型的组成(四部分)及内容?七、软件维护1.软件维护的含义及类型? 2.软件维护过程?--------------- 课堂练习题目一、填空题1.软件主要包括程序、和三部分内容。
(完整word版)软件工程导论期末复习题

第一章1、什么是软件工程?软件工程方法学包括哪三要素?答:概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程方法学三要素:方法、工具、过程。
目前使用得最广泛的软件工程方法学:传统方法学、面向对象方法学。
2、传统方法学与面向对象方法学定义传统方法学也称为生命周期方法学或结构化范型。
它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。
这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。
面向对象方法学:面向对象方法把数据和行为看成是同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。
面向对象方法学具有下述4个要点:(1)把对象作为融合了数据及在数据上的操作行为的软件构件。
(2)把所有对象都划分成类。
(3)按照父类(或称为基类)与子类(派生类)的关系,把若干个相关类组成一个层次结构的系统。
(4)对象彼此间只能通过发送消息互相联系。
3、软件生命周期有哪些阶段?软件生命周期由软件定义、软件开发和软件维护3个时期组成,每个时期又进一步划分为若干个阶段。
软件定义时期分3阶段:问题定义、可行性研究、需求分析。
开发时期分4个阶段:总体设计、详细设计、编码和单元测试、综合测试。
其中前两个阶段称为系统设计,后两个称为系统实现。
维护时期的主要任务是使软件持久地满足用户的需要。
第二章1、为什么要进行可行性研究,要从哪几个方面研究?可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
可行性研究至少应从3个方面研究:技术可行性、经济可行性、操作可行性。
必要时还应从法律、社会效益等更广泛的方面研究每种解法的可行性。
软件工程 期末复习提纲完美版

《软件工程》复习提纲1 软件与软件工程1.1软件的基本概念(例如,软件的定义、文档、软件的特点等)简单地说,软件由程序和文档两部分组成,一是机器可以执行的程序及有关的数据,二是机器不能执行的文档,软件的两种普遍定义:①软件是与计算机系统操作有关的程序,规程、规则及任何与之相关的文档和数据。
②软件是程序以及开发,使用和维护程序所需要的文档,包括机器运行所需要的各种程序及有关资料。
程序:为了解决某一问题而按事先设计的功能和性能要求执行的指令系列,或者说,用程序设计语言描述的适合于计算机处理的语句序列。
数据:使程序能正常操纵信息的数据结构。
文档:描述程序、数据和系统开发以及使用的各种图文资料。
它具有永久性并能供人或机器阅读。
软件的基本特点:·①计算机软件产品是一种逻辑产品部件而不是物理产品部件。
·②软件产品的生产主要是研制,是通过人们的智力活动,把知识与技术转化成信息的一种产品。
·③软件具有“复杂性”,其开发和运行常受到计算机系统的限制。
而且,软件投入使用后,仍需要进行维护,这就带来软件维护复杂性的问题。
·④软件不存在磨损,物理上不会老化,但存在软件退化问题。
·⑤软件成本昂贵,其开发方式目前尚未完全摆脱手工生产方式。
1.2软件危机的概念软件危机是指在软件开发和维护过程中所遇到的一系列严重问题。
【由于软件的规模越来越大,复杂度不断增加,软件需求量增大。
而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。
致使大量质量低劣的软件涌向市场,有的花费大量人力财力,而在开发过程中就夭折。
】“软件危机”主要表现在两个方面:(1)软件产品质量低劣,甚至开发过程就夭折;(2)软件生产率低,不能满足需要。
1.3软件工程学的概念(定义)、研究的内容(三要素)1993年IEEE定义:(1)把系统化的、规范化的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;(2)研究(1)中提到的途径。
软件工程导论第五版复习资料全

软件工程导论第一章软件工程学概述1、软件完成特点功能的程序以及数据结构和文档2、软件的特点(1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
软件开发、设计几乎都是从头开始,成本和进度很难估计。
(2)软件存在潜伏错误,硬件错误一般能排除。
(3)软件开发成功后,只需对原版进行复制。
(4)软件在使用过程中维护复杂:1)纠错性维护一改正运行期间发现的潜伏错误;2)完善性维护一提高或完善软件的性能;3)适应性维护一修改软件,以适应软硬件环境的变化;4)预防性维护一改进软件未来的可维护性和可靠性。
(5)软件不会磨损和老化。
3、软件危机及软件危机的表现软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
软件危机的表现1)对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象,从而降低了开发商的信誉,引起用户不满。
2)用户对已完成的软件不满意的现象时有发生。
3)软件产品的质量往往是靠不住的。
4)软件常常是不可维护的。
5)软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
6)软件成本在计算机系统总成本中所占比例逐年上升。
特别是软件维护成本迅速增加已经占据软硬件总成本的40%~75%。
7)开发生产率提高的速度远跟不上软件需求。
4、软件工程及软件工程的特性软件工程是用工程、科学和数学的原则与方法开发、维护计算机软件的有关技术和管理方法。
软件工程的特性:1)软件工程关注于大型程序的构造2)软件工程的中心课题是控制复杂性3)软件经常变化4)开发软件的效率非常重要5)和谐地合作是开发软件的关键6)软件必须有效地支持它的用户7)在软件工程中是由具有一种文化背景的人替具有另一种文化背景的人创造产品5、软件工程的基本原理用分阶段的生存周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应少而精承认不断改进软件工程实践的必要性6、软件生存周期一个软件从得出开发要求开始直到该软件报废为止的时期。
软件工程导论期末复习重点

软件工程导论期末复习重点选择、判断略一、名词解释1、软件危机 2 、软件工程 3 、数据字典 4 、模块化 5 、黑盒测试6、软件维护7 、软件过程8 、快速原型9 、白盒测试二、简答题1、可行性研究目的和任务?2、可行性研究包括哪几方面的内容?3、简述需求分析的描述工具和基本任务?4、什么是模块化?模块设计的准则?5、详细设计阶段的根本目标和任务?6、比较面向数据流和面向数据结构两类设计方法的异同?7、测试与调试的主要区别?8、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。
9、比较层次方框图与结构图的异同?10、结构化程序设计的基本原则?11、提高软件编码效率的3 条原则?、名词解释1、软件危机答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,包含两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
2、软件工程答:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
3、数据字典答:数据字典是描述数据流图中数据的信息的集合。
它对数据流图上每一个成分:数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成。
4、模块化答:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
5、黑盒测试答:黑盒测试也称为功能测试, 它着眼于程序的外部特征, 而不考虑程序的内部逻辑结构。
测试者把被测程序看成一个黑盒, 不用关心程序的内部结构。
黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
软件工程导论期末复习提纲(精)

第一章绪论软件:是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。
软件工程:是指导计算机软件开发和维护的工程学科。
它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要是两个问题:1. 如何开发软件,怎样满足对软件的日益增长的需求。
2. 如何维护数量不断膨胀的已有软件。
主要表现:1. 对软件开发成本和进度的估计不准确2. 用户不满意3. 软件质量不高、可靠性差4. 软件常常不可维护、错误难以改正5. 缺乏适当的文档资料6. 软件成本占系统总成本的比例逐年上升7. 软件开发速度跟不上计算机发展速度产生软件危机的原因1. 与软件本身的特点有关:软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件。
在写出程序代码并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。
因此,管理和控制软件开发过程相当困难。
2. 软件不易于维护:(1软件维护通常意味着改正或修改原来的设计,客观上使软件较难维护。
(2软件不同于一般程序,它的规模大,不易于维护。
3. 在软件开发过程中,或多或少地采用了错误的方法和技术。
4. 对用户需求没有完整准确的认识,就匆忙着手编写程序。
解决软件危机的途径:⑴研制新一代体系结构的智能计算机,以改变软件的实现方式,降低软件的复杂性。
目前尚未研制成功。
⑵采用工程化、规范化的开发方法来指导软件的开发:这就是产生“软件工程学”的背景,并在70年代形成了结构化分析、设计方法。
⑶在求解方法上采用面向对象的软件设计方法。
即在软件开发中,以客观世界的问题空间入手进行软件设计,以减少求解方法空间与客观世界问题空间存在的“鸿沟”。
“生命周期法”的起源:软件工程采用的“生命周期法”,就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后再逐步完成每个阶段的任务.生命周期划分的原则:任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。
软件工程导论期末复习重点

软件工程导论期末复习重点软件工程期末复习一、软件工程学概述1.软件危机:计算机开发和维护的过程中所遇到的一系列问题名词解释(需要加上软件危机产生的原因)对用户的要求没有完整准确的认识就匆忙着手编写程序论述题(需要加上软件危机的典型表现)01.对软件开发成本和嫉妒的估计常常不准确02.用户对已完成软件系统的不满意情况经常发生03.软件的质量靠不住2.软件工程:指导计算机开发和维护的一门工程学科?名词解释3.软件工程方法学的三要素:方法、工具、过程4.软件生命周期的三个时期:软件定义、软件开发、运行维护01.软件定义时期的三个阶段:问题定义、可行性研究、需求分析02.软件开发时期的四个阶段:总体设计、详细设计、编码、单元测试,综合测试,前两个称系统设计,后两个称系统实现03.软件维护时期:只要任务是使软件持久的满足用户的需要,具体的说,当软件在使用过程中发现错误时应该加以纠正,当环境改变时应修改软件以适应新的环境,当用户有新的需要时,应该及时改进软件以满足用户新的需求,本时期不在划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程5.可行性研究的结果是客户做出是否继续这项工程的决定的重要依据,只有投资取得较大收益的的那些工程项目才是值得继续进行下去的6.需求分析的目标是:确定出系统必须具备哪些功能,和用户密切配合,充分交流信息,以得出经过系统确认的系统逻辑模型7.软件维护的四类维护活动:01.改正性维护:改正和诊断在使用过程中发生的软件错误02.适应性维护:修改软件以适应新的环境变化03.完善性维护:根据用户的需求改善和扩充软件使它更完善04.预防性维护:为将来的维护活动事先做准备8.瀑布模型: ?论述题01.传统的瀑布模型开发软件的特点A.阶段间具有顺序性和依赖性B.推迟实现的观点C.质量保证的观点02.软件配置:程序、文档、数据03.注释有什么用:提高代码的可读性(有待补充)二、可行性研究1.可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决2.从三个方面研究每种解法的可读性;01.技术可行性:使用现在的技术能实现这个系统吗?02.经济可行性:这个系统的经济效益能超过它的开发成本吗?03.操作可行性:系统的操作方式在这个用户组织内能行得通吗?3.系统流程图:是概括的描绘物理系统的传统工具。
软件工程导论期末复习重点

软件工程导论期末复习重点选择、判断略一、名词解释1、软件危机2、软件工程3、数据字典4、模块化5、黑盒测试6、软件维护7、软件过程8、快速原型9、白盒测试二、简答题1、可行性研究目的和任务?2、可行性研究包括哪几方面的内容?3、简述需求分析的描述工具和基本任务?4、什么是模块化?模块设计的准则?5、详细设计阶段的根本目标和任务?6、比较面向数据流和面向数据结构两类设计方法的异同?7、测试与调试的主要区别?8、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用X围.9、比较层次方框图与结构图的异同?10、结构化程序设计的基本原则?11、提高软件编码效率的3条原则?一、名词解释1、软件危机答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.概括地说,包含两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件.2、软件工程答:①把系统的、规X的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径.3、数据字典答:数据字典是描述数据流图中数据的信息的集合.它对数据流图上每一个成分:数据项、文件<数据结构>、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成.4、模块化答:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.5、黑盒测试答:黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构.测试者把被测程序看成一个黑盒,不用关心程序的内部结构.黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息<如数据库或文件>的完整性.6、软件维护软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程.7、软件过程答:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤.8、快速原型答:快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集.9、白盒测试答:白盒测试是指测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致.二、简答题1、可行性研究目的和任务?目的:确定在问题定义中所提出的问题是否值得去解,在限制条件下问题能否解决.可行性研究的任务:<1> 进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型;<2> 从系统逻辑模型中,选择问题的若干种主要解法,研究每一种解法的可行性,为以后的行动提出建议;<3> 如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐一个较好的解决方案,并为工程制定一个初步的计划.2、可行性研究包括哪几方面的内容?答:<1>技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;<2>经济可行性:经济效益是否超出开发成本;<3>操作可行性:系统操作在用户内部行得通吗?<4>法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律. 3、简述需求分析的描述工具和基本任务?答:需求分析的描述工具有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier图、IPO图和需求描述语言等.需求分析的基本任务是:准确定义未来系统的目标,确定为满足用户的需要系统必须做什么.4、什么是模块化?模块设计的准则?答:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.模块设计的准则:<1> 改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合.<2> 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中.<3> 软件结构图的深度、宽度、扇入和扇出要适当.一般模块的调用个数不要超过5个.<4> 尽量降低模块接口的复杂程度;<5> 设计单入口、单出口的模块.<6> 模块的作用域应在控制域之内.5、详细设计阶段的根本目标和任务?答:详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统;详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的"蓝图〞.6、比较面向数据流和面向数据结构两类设计方法的异同?答:相同点:<1> 遵守结构程序设计"由顶向下〞逐步细化的原则,并以其为共同的基础;<2> 均服从"程序结构必须适应问题结构〞的基本原则,各自拥有从问题结构<包括数据结构>导出程序结构的一组映射规则.不同点:<1> 面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构.面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构.<2> 面向数据流的设计的最终目标是软件的最终结构图,面向数据结构的设计的最终目标是程序的过程性描述.7、测试与调试的主要区别?答: <1> 测试从一个侧面证明程序员的失败;调试证明程序员的正确;<2> 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试从不可知内部条件开始,除统计性调试外,结果是不可预见的;<3> 测试有计划并且要进行测试设计;调试不受时间约束;<4> 测试是发现错误、改正错误、重新测试的过程;调试是一个推理的过程;<5> 测试执行是有规程的;调试执行要求程序员进行必要的推理;<6> 测试由独立的测试组在不了解软件设计的件下完成;调试由了解详细设计的程序员完成;<7> 大多数测试的执行和设计可由工具支持;调试用的工具主要是调试器.8、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用X围.答:软件生命周期模型可以简洁地描述软件过程,它规定了把生命周期划分成哪些阶段与各个阶段的执行顺序.包括瀑布模型、快速原型模型、增量模型和螺旋模型等.瀑布模型优点:可强迫开发人员采用规X的方法〔例如,结构化技术〕;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证.缺点:模型过于理想化,是由文档驱动的.快速原型模型优点:通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的方法,获取用户真正的需要.增量模型优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充实的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击.螺旋模型优点:对可选方案和约束条件的强调有利于已有软件的重用;减少过多测试.瀑布模型适用于文档驱动的产品研发;快速原型模型适用于软件交付时间紧急,且需获知用户真实需求的情况;增量模型适用于能在较短时间内向用户提交可完成部分工作的产品;螺旋模型适用于内部开发的大规模软件项目.9、比较层次方框图与结构图的异同?答: <1> 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构.<2> 二者都采用多层次矩形框树形结构.层次方框图的顶层矩形框代表完整的数据结构, 下面各层矩形框依次代表上个框数据的子集;结构图是在层次图的每一个方框内注明模块的名字或主要功能,方框之间的直线表示模块的调用关系,用带注解的箭头表示模块调用过程中传递的信息.10、结构化程序设计的基本原则?答:结构化程序设计的基本原则是:在详细设计中所有模块都使用单入口、单出口的顺序、选择、循环三种基本控制结构.11、提高软件编码效率的3条原则?答:3条原则为:1〕效率是性能要求,因此应该在需求分析阶段确定效率方面的要求.2〕效率是靠好设计来提高的.3〕程序的效率和程序的简单程度是一致的,不要牺牲程序的清晰性和可读性来不必要地提高效率.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章绪论软件:是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。
软件工程:是指导计算机软件开发和维护的工程学科。
它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要是两个问题:1. 如何开发软件,怎样满足对软件的日益增长的需求。
2. 如何维护数量不断膨胀的已有软件。
主要表现:1. 对软件开发成本和进度的估计不准确2. 用户不满意3. 软件质量不高、可靠性差4. 软件常常不可维护、错误难以改正5. 缺乏适当的文档资料6. 软件成本占系统总成本的比例逐年上升7. 软件开发速度跟不上计算机发展速度产生软件危机的原因1. 与软件本身的特点有关:软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件。
在写出程序代码并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。
因此,管理和控制软件开发过程相当困难。
2. 软件不易于维护:(1软件维护通常意味着改正或修改原来的设计,客观上使软件较难维护。
(2软件不同于一般程序,它的规模大,不易于维护。
3. 在软件开发过程中,或多或少地采用了错误的方法和技术。
4. 对用户需求没有完整准确的认识,就匆忙着手编写程序。
解决软件危机的途径:⑴研制新一代体系结构的智能计算机,以改变软件的实现方式,降低软件的复杂性。
目前尚未研制成功。
⑵采用工程化、规范化的开发方法来指导软件的开发:这就是产生“软件工程学”的背景,并在70年代形成了结构化分析、设计方法。
⑶在求解方法上采用面向对象的软件设计方法。
即在软件开发中,以客观世界的问题空间入手进行软件设计,以减少求解方法空间与客观世界问题空间存在的“鸿沟”。
“生命周期法”的起源:软件工程采用的“生命周期法”,就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后再逐步完成每个阶段的任务.生命周期划分的原则:任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。
生命周期的划分:软件生命周期一般分为:软件定义(问题定义、可行性研究、需求分析、软件开发(总体设计、详细设计、编码和测试、软件使用与维护等三个时期八个阶段。
问题定义:“要解决什么问题?”可行性研究:“上一个阶段所确定的问题是否有行得通的解决办法”目的:用最小的代价在尽可能短的时间内确定问题是否能够解决需求分析:“系统必须做什么”对待开发软件提出的需求进行分析并给出详细的定义、编写软件需求规格说明书、提交管理机构评审概要设计:把各项需求转换成软件的体系结构。
结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应详细设计:对每个模块要完成的工作进行具体的描述,为源程序编写打下基础、编写设计说明书,提交评审。
编码:把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”、写出的程序应当是结构良好、清晰易读的,且与设计相一致的软件测试:单元测试:查找各模块在功能和结构上存在的问题并加以纠正组装测试:将已测试过的模块按一定顺序组装起来,按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用软件维护改正性维护:运行中发现了软件中的错误需要修正适应性维护:为了适应变化了的软件工作环境,需做适当变更完善性维护:为了增强软件的功能需做变更软件工程三要素:过程(为软件工程的过程和方法提供自动化或半自动化的工具支持、方法(完成项目的技术手段(传统方法学、面向对象方法学和工具(为软件工程的过程和方法提供自动化或半自动化的工具支持软件工程釆用层次化的方法,每个层次都包括过程、方法、工具三要素.方法支撑过程和工具、过程和工具促进方法学的研究。
将系统的、规范的、可量化的方法运用到软件工程的始终,渗透到软件工程的过程、方法和工具中。
传统方法学(生命周期方法学原理: 采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用,即把软件生命周期的全过程依次划分为若干阶段,然后顺序地完成每个阶段的任务。
软件的生存周期及其开发模型:一、瀑布模型:优点:通过设置里程碑,明确每阶段的任务与目标。
可为每阶段制定开发计划,进行成本预算,组织开发力量。
通过阶段评审,将开发过程纳入正确轨道。
严格的计划性保证软件产品的按时交付。
缺点:缺乏灵活性,不能适应用户需求的改变。
开始阶段的小错误被逐级放大,可能导致软件产品报废。
返回上一级的开发需要十分高昂的代价。
随着软件规模和复杂性的增加,软件产品成功的机率大幅下降。
适应范围:它主要适应于小规模和需求较为稳定的的软件开发。
瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。
例如操作系统、编译系统、数据库管理系统等系统软件的开发。
应用有一定的局限性。
二、快速原型模型:基本思想:在获取一组基本的需求定义后,利用高级软件工具的可开发环境,快速地建立一个目标系统的最初版本,并把它交给用户试用、补充和修改,再进行新的版本开发。
反复进行这个过程,直到得出系统的“精确解”,即用户满意为止。
经过这样一个反复补充和修改的过程,应用系统的“最初版本”就逐步演变为系统的“最终版本”。
三、增量模型:一种非整体开发的模型。
根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。
使用增量模型开发模型时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。
每个构件由多个相互作用的模块构成,并且能完成特定的功能。
第一个增量构件往往提供最核心的功能。
注意:在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
增量模型和瀑布模型之间的本质区别是:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。
而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件。
四、螺旋模型:在原型基础上,进行多次原型反复并增加风险评估,形成螺旋模型。
模型、优点、缺点:瀑布模型、文档驱动、系统可能不满足客户的需求;快速原型模型、关注满足客户需求、可能导致系统设计差、效率低,难于维护;增量模型、开发早期反馈及时,易于维护、需要开放式体系结构,可能会设计差、效率低;螺旋模型、风险驱动、风险分析人员需要有经验且经过充分训练第二章可行性分析可行性分析就是解决一个项目是否有可行解以及是否值得去解的问题。
该阶段的主要任务就是用最小的代价在尽可能短的时间内确定问题是否能够得到解决。
主要任务:具体地说,分析员应从下面三个方面对项目做出可行性分析:(1技术可行性:使用现有的技术能实现这个系统吗?(2经济可行性:这个系统的经济效益能超过它的开发成本吗?(详细在后面介绍成本/效益分析(3操作可行性:系统的操作方式在该用户组织内行得通吗?必要时还应该进一步从法律、社会效益等更广泛的角度研究每种解法的可行性。
计算成本/效益分析“可行性报告”中最主要的内容是:(1项目的背景:问题描述、实现环境和限制条件等(2管理概要与建议:重要的研究结果(结论、说明、劝告和影响等(3推荐的方案(不止一个:候选系统的配置与选择最终方案的原则(4简略的系统范围描述:分配元素的可行性(5经济可行性分析结果:经费概算和预期的经济效益等(6技术可行性(技术风险评价:技术实力分析、已有的工作及技术基础和设备条件等等(7法律可行性分析结果描述(8可用性评价:汇报用户的工作制度和人员的素质,确定人机交互功能界面需求(9其他项目相关的问题:如可能会发生的变更等等可行性研究报告由系统分析员撰写,交由项目负责人审查,再上报给上级主管审阅。
在可行性研究报告中,应当明确项目“可行还是不可行”,如果认为可行,接下来还要制定项目开发计划书。
第三章软件需求分析需求分析:准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。
用<需求规格说明书> 规范的形式准确地表达用户的需求。
任务:确定对系统的综合要求、分析系统的数据要求、导出系统的逻辑模型、修正系统开发计划。
确定对系统的综合要求:1. 功能需求:这方面的需求指定系统必须提供的服务。
通过需求分析应该划分出系统必须完成的所有功能2. 性能需求:性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间、信息量速率、主存容量、磁盘容量、安全性等方面的需求3. 可靠性和可用性需求:可靠性需求定量地指定系统的可靠性4. 出错处理需求:这类需求说明系统对环境错误应该怎样响应5. 接口需求:接口需求描述应用系统与它的环境通信的格式。
常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求6. 约束:设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条件。
常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台7. 逆向需求:逆向需求说明软件系统不应该做什么8. 将来可能提出的要求:应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。
分析系统的数据要求:分析系统的数据要求,这是软件需求分析的一个重要任务。
分析系统的数据要求通常采用建立数据模型的方法(ER图—考点、数据字典、层次方框图、Wariner图等工具导出系统的逻辑模型:综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。
修正系统开发计划:根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。
需求获取的常用方法:1.客户访谈:发放调查表和情景分析2. 面向数据流自顶向下求精:数据字典、数据流图3.简易的应用规格说明:面向团队需求收集法4.快速建立原型:要点:建立用户看的见得功能、快速、易修改需求建模:所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。
通常,模型由一组图形符号和组织这些符号的规则组成。
模型化或模型方法是通过抽象、概括和一般化,把研究的对象或问题转化为本质(关系或结构相同的另一对象或问题,从而加以解决的方法。
需求分析的模型(结构化分析:数据模型ER图;功能模型数据流图P41;行为模型状态转换图数据字典(DD,DataDictionaryDD是对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算有共同的理解。