软件工程复习

发布 2022-01-11 22:49:28 阅读 1618

1、什么是软件?软件的特征 ?

software = program + data + document

1) 能够完成预定功能和性能的可执行指令;

2) 使得程序能够适当地操作信息的数据结构;

3) 描述程序的操作和使用的文档。

软件的特征:

1) 软件是逻辑的,而不是物理的产品。逻辑往往实际只存在于人的头脑当中,软件人员好比“皇帝的新衣”故事中的裁缝,软件的开发过程极难加以控制。

2) 软件是由开发或工程化而形成的,没有明显的制造过程。软件成本集中于"开"上,意味着软件项目不能象硬件制造项目那样来管理。

3) 软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。

4) 大多数软件是自定的,而不是通过已有构件组装而成的。迄今为止,软件的开发尚未完全摆脱手工的方式。

5) 软件成本相当昂贵。

6) 软件本身是复杂的。

软件比任何其他人类制造的结构更复杂,甚至硬件的复杂性和软件相比也是微不足道的。软件本质上的复杂性是软件产品难以理解,影响软件过程的管理,并使维护过程十分复杂。

2、什么叫软件危机?产生危机的主要原因是什么?

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

包含下述两方面的问题:

1.如何开发软件,以满足对软件日益增长的需求;

2.如何维护数量不断膨胀的已有软件。

原因:一方面是与软件本身的特点有关;

另一方面是由软件开发和维护的方法不正确有关。

3、什么是软件工程?软件工程三个要素 ?

软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。

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

方法:完成软件开发的各项任务的技术方法,回答“怎样做”的问题;

工具:为运用方法而提供的自动的或半自动的软件工程支撑环境;

过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

4、什么叫软件生命周期?软件生命周期有哪些阶段?

软件生命周期有软件定义、软件开发和运行维护3个时期组成。

软件定义分为问题定义、可行性研究和需求分析3个阶段;

软件开发分为总体设计、详细设计、编码与单元测试、综合测试四个阶段;

软件维护的任务是使软件持续地满足用户的需要。

5、软件过程及常用的软件开发模型?瀑布模型的特点

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

常用的软件开发模型及特点:

传统的瀑布模型: 1.阶段间具有顺序性和依赖性。2.推迟实现的观点。3.质量保证:每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。

快速原型模型: 快速建立起来的可以在计算机上运行的程序,他所能完成的功能往往是最终产品能完成的功能的一个子集。

增量模型(渐增模型): 先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。系统的总体设计在初始子集设计阶段就应作出设想。

螺旋模型:基本思想是使用原型及其他方法来尽量降低风险。可以把它看作在每个阶之前都增加了风险分析过程的快速原型模型。

喷泉模型: 主要用于支持面向对象开发过程体现了软件创建所固有的迭代和无间隙的特征。

6、可行性研究的内容

1) 技术可行性:现有技术能否实现新系统?

2) 经济可行性:这个系统的经济效益能否超过它的开发成本?

3) 操作可行性:用户使用可能性、时间进度可行性、组织和文化上的可行性;系统的操作方式在这个组织内行的通吗?

4) 社会可行性(法律可行性) :开发项目是否会在社会上或政治上引起侵权、破坏或其它责任问题。

5) 抉择。

7、数据流图(dfd --data flow diagram)

计算机售书系统流程图。

定货系统的功能级数据流图。

把处理事务的功能进一步分解后的数据流图。

某旅店管理系统:用例建模。

旅店管理系统用例规约:1.用户选择预定房间后启动该用例2.

系统显示用户可以预定的房间列表3.用户选择某一个房间4.系统启动“计算总费用”用例,来计算该房间的费用5.

用户确认本次预定业务6.用户选择支付方式,以便预付定金。

8、结构化需求分析的任务、阶段性产品、分析建模?结构化需求分析过程应该建立哪些模型,分别用什么表示?

需求分析是软件定义时期的最后一个阶段,它的基本任务不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的 “做什么” 的问题。

需求分析的具体任务:确定对系统的综合要求---功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、 逆向需求、将来可能提出的要求。分析系统的数据要求。

导出系统的逻辑模型。修正系统开发计划。

分析建模。模型---就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,由一**形符号和组织这些符号的规则组成。

需求分析过程应该建立3种模型: 数据模型---实体-联系图:必须理解并描述问题的信息域、功能模型---数据流图:

必须定义软件应完成的功能、行为模型---状态转换图:必须描述作为外部事件结果的软件行为。必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。

9、 详细设计的基本任务。

详细设计的目的: 为软件结构图 (sc) 中的每一个模块确定采用的算法和模块内数据结构,用某种选定的表达工具给出清晰的描述。

详细设计的任务:为每一模块确定算法确定每一模块使用的数据结构确定模块的外部接口和用户界面为每一模块设计一组测试用例。

总体设计的任务:划分出组成系统的物理元素—程序、文件、数据库、人工过程和文档等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。

10、阶段性产品?

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

11、结构化软件设计基本原理?

模块化、 抽象、逐步求精、 信息隐藏和局部化、 模块独立。

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

抽象就是抽出事物的本质特性(共性),而暂时不考虑它们的细节。抽象使得设计者能够说明过程和数据,同时却忽略低层细节。

逐步求精就是为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。求精则帮助设计者在设计过程中逐步揭示出低层细节。抽象与求精是一对互补的概念。

信息隐藏原理指出:设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。

局部化:是指把一些关系密切的软件元素物理地放得彼此靠近。局部化的概念和信息隐藏概念是密切相关的。

模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统。

中其他模块的接口是简单的。模块的独立程度可以由两个定性标准度量:耦合:模块之间的相对独立性的度量 、内聚:模块功能强度的度量。

12、什么是测试?它的目标是什么?

测试的是为了发现程序中的错误而执行程序的过程。

测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误,并把一个高质量的软件系统交给用户使用。

1) 测试是为了发现程序中的错误而执行程序的过程;

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

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

13、 测试方法?

以最少量的时间和人力,最大可能地发现最多的错误。

静态测试方法:人工测试方法、计算机辅助静态分析方法。

动态测试方法:白盒测试方法、黑盒测试方法。

静态测试: 基本特征是在对软件进行分析、检查和审阅,不实际运行被测试的软件。对需求规格说明书、软件设计说明书、源程序做检查和审阅。

动态测试: 通过运行软件来检验软件的动态行为和运行结果的正确性。两个基本要素:被测试程序、测试数据(测试用例)。

14、 软件测试要经过哪些步骤,这些测试与软件开发各阶段之间有什么关系?

大型软件系统的测试过程基本上由下述几个步骤组成:

1. 模块测试---单元 2. 子系统测试---局部 3. 系统测试---集成 4. 验收测试---用户参与 5. 平行运行---新旧共存

软件开发过程是一个自顶向下、逐步细化的过程,而测试则是依相反的顺序安排的,自底向上、逐步集成的过程。低一级为上一级测试准备条件。

15、白盒测试——判定覆盖和条件覆盖?

白盒测试:知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。

关心软件内部设计和程序实现,主要测试依据是设计文档。

判定覆盖(分支覆盖) :使每个判定的真假分支都至少执行一次。两组测试用例可覆盖所有判定的真假分支,判定覆盖仍是弱的逻辑覆盖,只覆盖了全部路径的一半。

条件覆盖:使每个判定的每个条件的可能取值至少执行一次。条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖。

判定/条件覆盖:选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。

16、黑盒测试 ——等价类划分法。

黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。

不关心软件内部,只关心输入输出,主要测试依据是需求文档。

等价类划分法(等价分配):把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集(称为等价类别或等价区间), 使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同。

可从每个子集中选取一组数据来测试程序。

等价类别或等价区间是指测试相同目标或者暴露相同软件缺陷的一组测试用例。

17、面向对象的测试特点 static int largest(int list);

软件工程复习

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

软件工程复习

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

软件工程 复习

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