软件工程复习

发布 2022-01-11 22:51:28 阅读 4917

7、什么事瀑布模型?瀑布模型一直是唯一被广泛采用的生命周期模型,现在它仍然是软件工程中应用得最广泛的过程模型。

8、比较瀑布模型、快速模型、增量模型和螺旋模型的优缺点,并说明每种模型的适用范围。

答:(1)瀑布模型:

优点:①可强迫开发员采用规范的方法;②严格地规定了每个阶段必须提交的文件;③要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

缺点:传统的瀑布模型过于理想化,是由文档驱动的。

适用范围:需求是预知的; 软件实现方法是成熟的; 项目周期较短。

2)快速原型模型:通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的方法,获取用户真正的需要。

适用范围:①探索型原型:用于开发的需求分析阶段; ②实验型原型:主要用于设计阶段; ③演化型原型:用于及早向用户提交一个原型系统。

3)增量模型:

优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充实的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。

适用范围:适用于需求经常改变的软件开发过程。

4)螺旋模型:

优点:①对可选方案和约束条件的强调有利于已有软件的重用; ②减少了过多测试; ③维护只是螺旋模型中另一个周期。

适用范围:①特别适用于庞大、复杂并具有高风险的系统;②适用于内部开发的大规模软件项目。

5)喷泉模型 :

优点:①该模型的各个阶段没有明显的界限,开发人员可以同步进行开发; ②多次反复地增加或明确目标系统,而不是本质性的改动,降低错误的可能性。

缺点:①由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理; ②要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。

喷泉模型适用于:适用于面向对象的软件开发过程。

9、典型的软件过程模型:瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型。

第二章可行性研究。

1、可行性研究的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。

2、可行性研究的解法:技术可行性,经济可行性,操作可行性。

3、可行性研究过程:

复查系统规模和目标草拟开发计划。

研究目前正在使用的系统书写文档提交审查。

导出新系统的高层逻辑模型。

进一步定义问题。

导出和评价供选择的解法。

推荐行动方针。

4、数据流图:一种图形化技术,它描绘信息流和数据从输入移动到输出过程中所受的变换。

5、数据流图:

1)基本符号:

数据源点/终点:通常是人或部门,可重复表示;

处理:一个处理框可以代表一系列程序、单个程序或程序的一个模块;

数据存储:可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等,数据存储是处于静止状态的数据;

数据流:描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件 ,数据流是处于运动中的数据。

2)附加符号:

星号(*)表示“与”关系。

加号(+)表示“或”关系。

异或(⊕)表示互斥关系。

6、数据字典:关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据流图和数据字典共同构成系统的逻辑模型。

7、数据字典的元素组成:数据流,数据流分量(数据元素),数据存储,处理。

8、数据元素组成数据方式的基本类型:顺序,选择,重复,可选。

9、数据字典最重要的用途是作为分析阶段的工具。在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户之间的通信,因此将消除许多可能的误解。

10、成本/效益分析的方法:货币的时间价值,投资**期,纯收入,投资**率。

第三章需求分析。

1、需求分析是软件定义时期的最后一个阶段,它的基本任务是准确的回答“系统必须做什么”这个问题。

2、需求分析中确定对系统的综合要求:

功能需求②性能需求③可靠性和可用性需求④出错处理需求⑤接口需求⑥约束⑦逆向需求⑧将来可能提出的要求。

3、ipo图是输入、处理、输出图的简称,它是美国ibm公司发展完善起来的一种图形工具,能够方便的描绘输入数据、对数据的处理和输出数据之间的关系。

4、ipo图的基本形式:在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。

5、验证软件需求的正确性:

①一致性:所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。

完整性:需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。

现实性:指定的需求应该是用现有的硬性技术和软件技术基本上可以实现的。

有效性:必须证明需求是正确有效的,确实能解决用户面对的问题。

第五章总体设计。

1.总体设计的基本目的:回答“概括地说,系统应该如何实现?”这个问题,因此,总体设计又称概要设计或初步设计。

2、总体设计过程的两个主要阶段组成:①系统设计阶段,确定系统的具体实现方案;②结构设计阶段,确定软件结构。

3、总体设计的步骤:

①设想供选择的方案。

②选取合理的方案。

③推荐最佳方案。

④功能分解。

⑤设计软件结构。

⑥设计数据库。

⑦指定测试计划。

⑧书写文档。

⑨审查和复审。

4、书写文档的种类:①系统说明②用户手册③测试计划④详细的实现计划⑤数据库设计结果。

5、模块:右边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。

6、模块化:把程序划分成都李命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

7、模块化的优点:使软件结构清晰,容易设计容易阅读和理解;助于提高软件的可靠性;提高软件的可修改性;有助于软件开发工程的组织管理。

8、抽象:人类在认识复杂现象的过程中使用的最强有力的思维工具。抓住事物的本质而忽略其细节。

9、逐步求精的定义:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。”逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术的基础。

10、信息隐藏:应该这样设计和确定模块,使得一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问的。

11、信息局部化:与信息隐藏概念密切相关的。指把一些关系密切的软件元素物理地放得彼此靠近。显然,局部化有助于实现信息隐藏。

12、模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。

13、模块独立:开发具有独立功能而且和其他模块之间没有过多的相互作用的模块。

14、模块的独立程度的两个标准度量:内聚和耦合。

15、耦合:是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。

16、耦合类型(由低到高):非直接耦合,数据耦合,特征耦合,控制耦合,公共耦合,内容耦合。

17、内聚:标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。

18、内聚的种类(由低到高:):偶然内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,顺序内聚,功能内聚。

19、耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。

20、七条启发规则:

改进软件结构提高模块独立性。

模块规模应该适中。

深度、宽度、扇出和扇入都应适当。

模块的作用域应该在控制域之内。

力争降低模块接口的复杂程度。

设计单入口单出口的模块。

模块功能应该可以**。

第六章详细设计。

1、详细设计阶段的根本目标:确定应该怎么具体地实现所要求的系统。经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。

2、过程设计的工具:①程序流程图 ②盒图(n-s图) ③pad图 ④判定表 ⑤判定树。

3、流程图:

4、盒图:5、pad图:

6、判定表:

7、判定树:

8、计算环形复杂度的方法:

流图中的区域数等于环形复杂度。

流图g的环形复杂度v(g)=e—n+2,其中,e是流图中边的条数,n是节点数。

流图g的环形复杂度v(g)=p+1,其中,p是流图中判定节点的数目。

9、环形复杂度的用途:①定量度量程序内分支数或循环个数,即程序结构的复杂程度;②定量度量测试难度;③能对软件最终的可靠性给出某种**;④实践表明,模块规模以v(g)≤10为宜。

第七章实现。

1、实现:编码和测试的统称。

2、软件测试的目标:

为了实现程序中的错误而执行程序的过程。

好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。

成功的测试时发现了至今为止尚未发现的错误的测试。

3、软件测试的准则:

①所有测试都应该能追溯到用户需求。

应该远在测试开始之前就制定出测试计划。

把pareto原理应用到软件测试中。

应该从’小规模’测试开始,并逐步进行“大规模”。

穷举测试是不可能的。

为了达到最佳的测试效果,应该由独立的第三方从事测试工作。

4、测试步骤:模块测试,子系统测试,系统测试,验收测试,平行运行。

5、单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

6、单元测试主要使用白盒测试技术,而且对多个模块的测试可以并行地进行。

7、测试重点:①模块接口②局部数据结构③重要的执行通路④出错处理通路⑤边界条件。

8、集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题。

9、由模块组装成程序时有两种方法:非渐增式测试,渐增式测试。

10、自顶向下集成方法是一个日益为人类广泛采用的测试和组装软件的途径。从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。

11、自底向上集成测试是从“原子”模块(即在软件结构最底层的模块)开始组装和测试。

12、两种集成测试的优缺点:自顶向下测试的优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。主要缺点是需要存根程序,可能遇到与此相联系的测试困难,底层模块的错误发现较晚,而且用这种方法在早期不能充分展开人力。

而自底向上测试的优缺点与自顶向下测试的优缺点正好相反。

软件工程复习

单选填空简答思考题。1 传统的软件瀑布生命模型包括哪六个方面?需求 分析 设计 实现 交付后维护 退役2 传统瀑布生命模型的中交付后维护包括哪三种?改正性维护 适应性维护 完善性维护3 现代维护和传统维护的观点有何不同?1 传统维护的观点是先开发后维护。2 现代维护的观点是无论是在软件安装前还是安装...

软件工程复习

软件工程复习资料。备注 1.老师反复强调我们之前做过的作业要熟练掌握 需求陈述 实验课画的模型 自己画。的数据流图 2 蓝颜色的字都是老师上课补充的,还有很多需要自己去补充,欢迎修正完善。核心问题 在考试做大是要表述清楚详细,关。键词要有 问题定义 专用名词表要解决的问题是什么?达要准确,不能更改 ...

软件工程 复习

1.概念 软件危机是指在计算机软件开发 使用与维护过程中遇到的一系列严重问题。2.为什么会产生软件危机?当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致使软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。3.软件危机的表现 经费预算经常突破...