1. 总体设计(概要设计)的目的是什么。(P56)
概要设计的主要任务是,通过仔细分析规格说明,适当地对软件进行功能分解,从而把软件划分为模块,并且设计出完成预定功能的模块结构; 2. 时间内聚的含义。(P62)
如果一个模块包含的任务必须在同一段时间内执行(例如,模块完成各种初始化工作),叫做时间内聚。 3. 软件危机的体现(P3)
对软件开发成本和进度的估计常常很不准确;
用户对“已完成的”软件系统不满意的现象经常发生; 软件产品的质量往往靠不住; 软件常常是不可维护的; 软件通常没有适当的文档;
软件成本在计算机系统总成本中所占的比例逐年上升; 软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速
普及深入的趋势; 4. 软件详细设计的任务
详细设计阶段详细地设计每个模块,确定完成每个模块功能所需要的算法和数据结构。 详细设计阶段的任务就是把解法具体化,也就是回答“应该怎样具体地实现这个系统”这个关键问题。这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。 5. 软件结构图中,扇入和扇出分别是什么含义。(P64)
“扇入”表明了有多少个上级模块调用了它,扇入越多越好,代码量越少;
“扇出”是一个模块直接控制(调用)的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块;扇出过小也不好。经验表明,一个设计得好的典型系统的平均扇出通常是3或4; 6. 模块的内聚最好是哪一类;(P62)
功能内聚是最高程度的内聚;
7. 面向对象分析的任务是什么?(P168)
分析过程得出的最重要的文档资料是软件需求规格说明(在面向对象分析中,主要由对象模型、动态模型、和功能模型组成;)
面向对象的关键是识别出问题域内的对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。其中对象模型是最基本、最重要、最核心的。 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。 8. 程序的三种基本控制结构是什么?
顺序,选择,循环
9. 可行性研究与需求分析的关系?(P14)
需求分析是在可行性研究的基础上进一步确定“系统必须做什么”的问题;
需求分析在可行性研究的基础上进行。前一阶段产生的文档,特别是数据流图,是需求分析的出发点。
10. 软件危机产生的原因(P3)
一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关; 11. 瀑布模型中软件定义时期各个阶段的顺序
需求分析,规格说明,设计,编码,综合测试,维护,
1)模块化 (2)抽象 (3)信息隐藏 (4)弱耦合 (5)强内聚 (6)可重用 12. 软件维护活动包括哪几类(P15)
通常有四类维护活动:改正性维护,适应性维护,完善性维护,预防性维护; 13. 可行性研究包括哪几类?(P43)
从以下三个方面分析研究每种解决方法的可行性。
(一)技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。
(二)经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
(三)社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。 14. 系统逻辑模型包括那些内容( )
功能与目标、数据流程图,数据字典,处理逻辑的说明。 15. 耦合程度由强到弱依次是哪几个(P62)
内容耦合,公共环境耦合,特征耦合,控制耦合,数据耦合 16. 详细设计阶段使用的工具有哪些?(P82)
分为:图形、表格、语言三类
HIPO图、程序流程图、盒图、PAD图、判定表、判定树、过程设计语言(PDL) 17. 模块的作用域和模块的控制域之间的关系(P64)
模块的作用域应该在控制域之内(在设计的很好的系统中,所有受判定影响的模块应该都从属于做出判定的那个模块,最好局限于做出判定的那个模块本身以及它的直属下级模块)
模块的作用域定义为受该模块内一个判定影响的所有模块的集合;
模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合; 18. 面向对象的类层次结构中,聚集关系是一种什么类型的关系(P163)
整体与部分的关系;
19. 多态性是什么含义(P158)
多态是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。也就是说,在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。 20. 模块的独立程度可以由两个定性标准度量,分别是什么?
内聚和耦合
21. 总体设计的主要任务是什么?(P56)
通过仔细分析软件规格说明,适当的对软件进行功能分解,从而把软件划分为模块,并且设计出完成预定功能的模块结构。 22. 不同内聚类型的含义( P63)
偶然内聚:如果一个模块完成彝族任务,这些任务彼此间即使有关系,关系也是很松散; 逻辑内聚:如果一个模块完成的任务在逻辑上属于相同或相似的一类;
时间内聚:如果一个模块包含的任务必须在同一段时间内执行(例如,模块完成各种初
始化工作);
过程内聚:如果一个模块内的处理元素和同一个功能密切相关,而且必须以特定次序执
行;
通信内聚 :如果模块中所有元素都使用同一个输入数据和产生同一个输出数据; 23. 数据流图的分类???
数据流图有四种成分:源点或终点、处理、数据存储和数据流。
24. 白盒测试及黑盒测试的定义(P103)
黑盒测试是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程又称功能测试;也就是说,在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当的接受输入数据产生正确的输出信息,并且保持外部信息的完整性。
白盒测试可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程又称结构测试;按照程序内部的逻辑测试程序,检验程序 中的每条通路是否都能按预定要求正确工作。 25. 面向对象分析使用的模型
对象模型、动态模型、功能模型 26. 面向对象分析的5个层次(P169)
主题层、类与对象层、结构层、属性层、服务层 27. 不同逻辑覆盖的含义
语言覆盖:选择足够多的测试数据,使被侧程序中每个语句至少执行一次;
判定覆盖:又叫分支覆盖,不仅每个语句必须至少执行一次,而且每次判定的每种可能的结果都应该至少 执行一次,也就是每个判定的每个分支都至少执行一次;
条件覆盖:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果;
判定/条件覆盖:既然判定不一顶包含条件覆盖,条件覆盖也不一定包含判定覆盖,自然会提出一种能同时满足这两种覆盖标准的逻辑覆盖;
条件组合覆盖:更强的逻辑覆盖标准,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次; 28. 面向对象设计的准则
模块化、抽象、信息隐藏、弱偶合、强内聚、可重用 29. 什么是软件生命周期
由软件定义、软件开发、运行维护三个时期组成。 30. 什么是模块(P57)
模块是由边界元素限定的相邻的程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符来代表它。因此,过程、函数、子程序和宏等,都可作为模块。面向对象范型中的对象是模块,对象内的方法也是模块。模块是构成程序的基本构件。
【简答】
1.什么是软件?(P5)
软件是程序,数据和相关文档的完整集合。
2. 简述面向数据流的需求分析方法(结构化分析方法)。( 搜的)
结构化分析方法简称SA法,是需求分析中使用最多的方法之一,分析的策略是自顶向下、逐层加细,由抽象到具体的过程。
3. 简述在编码风格上需要注意的四个问题。(P100)
应该遵循下述规则
程序内部的文档 所谓程序内部的文档包括恰当的标识符,适当的注解和视觉组织等等。 数据说明 数据说明的次序应该标准化。有次序就容易查阅,也就能够加速测试,调试
和维护的过程。(当多个变量名在一个语句说明时,应该按字母顺序排列这些变量。) 语句构造 (每个语句都应该简单而直接,不能为了提高效率而使程序变得过分复杂。) 输入/输出
效率 效率主要是指处理机时间和存储器容量两个方面。效率是靠好设计来提高的。 4. 软件工程。(P6)
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它,这就是软件工程。 5 软件测试。(P102)
测试是为了发现程序中的错误而执行程序的过程。
好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。 成功的测试是发现了至今为止尚未发现的错误的测试。
软件测试的目的是为了发现程序中的错误而执行程序的过程。
6. 试述对用户要求没有完整的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因。
7. 简述软件可靠性和可用性的定义,平均无故障时间的计算公式及应用。(P130) 软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的效率。 软件可用性是程序给定的时间点,按照规格说明书的规定,成功地运行的概率。
平均无故障时间MTTF是系统按规格说明书规定成功地运行的平均时间,它主要取决于系统的潜伏的错误的数目,因此和测试的关系什么密切。(自己抄吧)
8. 说明软件测试在软件开发阶段的地位和作用。比较测试和调试的异同点。(P98) 无论怎么强调软件测试的重要性和它对软件可靠性的影响也不为过。
软件测试的工作量往往占软件总工作量的40%以上。。
仅就测试而言,他的目标是发现软件中的错误,但是,发现错误并不是我们的最终目的。软件工程的根本目的是开发出高质量的完全符合用户需要的软件,因此,通过测试发现错误之后还必须诊断并修改错误,这就是调试的目的。调试是测试阶段最困难的工作。软件测试仍然是保证软件可靠性的主要手段。测试阶段的根本任务是发现并改正软件中的错误。在测试过程中发现的软件错误必须及时改正,这就是调试的任务。为了改正错误,首先必须确定错误的准确位置,这是调试过程中最困难的任务,需要审慎周密的思考和推理。改正错误往往需要修正原来的设计,必须通盘考虑而不能“头疼医头脚疼医脚”,应该尽量避免在调试过程中引进新的错误。
测试和调试是软件测试阶段中的两个关系极端密切的过程,它们常常交替进行。根据测试和调试过程中已经发现和改正的错误数,可以估计软件的平均无故障时间;反之,根据要求达到的软件平均无故障时间,可以估计应该发现和改正的错误数,从而能够判断测试阶段何时可以结束。
9. 什么是面向对象方法?它有哪些优点?(P148)
概念:认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成;把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法;按照子类与父类的关系,把若干个对象类组成一个层次结构的系统;对象彼此之间仅能通过传递消息互相联系。
优点:与人类习惯的席位方法一致、稳定性好、可重用性好、较易开发大型软件产品、可维护性好
10.什么是需求分析? 它的具体任务包括哪些? 发现、求精、建摸、规格说明和复审的过程; 任务:沿数据流图回朔、写出文档初稿、定义逻辑系统、细化数据流图、书写正式文档、技术审查和管理复审
11.画出软件开发的瀑布模型,螺旋模型和喷泉模型。
12.为保证模块的独立性,在确定系统的模块结构时对耦合与内聚分别把握什么原则?
高内聚,低耦合 耦合:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。 内聚:设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。
实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。 13.面向对象技术中,类和类之间的关系可能有哪些不同类型? 关联----关联表示两个类的对象之间存在某种语义上的联系。(1)普通关联(2)限定关联(3)关联类
聚集----聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。(1) 共享聚集(2)组合聚集
泛化----UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。
【设计题】
1. 根据伪码程序画出程序流程图、盒图(N-S图)。 START a
IF x1 THEN
REPEAT UNTIL x2 b
END REPEAT ELSE BLOCK c d
END BLOCK END IF
STOP
2. 用Jackson图表示下图所示的二维表格:
该学生名册由表头和表体两部分组成。其中表头又顺序包括表名和字段名。表体可由任意行组成,每行包括学生的姓名、性别、年龄和学号。 答
3.对下列程序,给出其语句覆盖的测试用例,和判定覆盖的测试用例
int logicExample(int x, int y) {
int magic=0; if(x>0 && y>0) {
. magic = x+y+10; // 语句块1 . } . else . {
. magic = x+y-10; // 语句块2 . } .
. if(magic < 0) . {
. magic = 0; // 语句块3 . }
. return magic; // 语句块4 . }
一、语句覆盖 测试用例:
{x=3, y=3}可以执行到语句块1和语句块4,所走的路径:a-b-e-f
{x=-3, y=0}可以执行到语句块2、语句块3和语句块4,所走的路径:a-c-d-f 二、判断覆盖(分支覆盖)
两个判断if(x>0 && y>0)(记为P1)和if(magic < 0)(记为P2) P1 P2 数据 路径 {x=3, y=3} T F a-b-e-f {x=-3, y=0} F T a-c-d-f 4、画出与图1所示的程序流程图对应的程序图,并试计算其环形复杂度V(G)。 解: (1)程序图如(图2)所示:
(2)计算其环形复杂度:V(G)=E –N +2=13 –10 +2=5
开始abcdeij结束gfh
12aR5R4b3cR18f54R3R2gde107116i13j9h12
(图一) (图二)
因篇幅问题不能全部显示,请点此查看更多更全内容