收藏 分销(赏)

软件工程复习及答案分析.doc

上传人:丰**** 文档编号:3653047 上传时间:2024-07-12 格式:DOC 页数:11 大小:345KB
下载 相关 举报
软件工程复习及答案分析.doc_第1页
第1页 / 共11页
软件工程复习及答案分析.doc_第2页
第2页 / 共11页
软件工程复习及答案分析.doc_第3页
第3页 / 共11页
软件工程复习及答案分析.doc_第4页
第4页 / 共11页
软件工程复习及答案分析.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、复习思考题(一) 软件工程概论1. 试说明“软件生命周期”的概念。同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。2. 论述瀑布模型软件开发方法的基本过程。瀑布模型规定了各项软件工程活动,包括:制定软件项目计划,进行需求分析和定义,软件设计,程序编码,测试及运行维护。并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。3. 软件工程的基本原理有哪些? 1用分阶段的生命周期计划严格管理2坚持进行阶段评审3实行严格的产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应该少而精7承认不断改进软件工

2、程实践的必要性4. 从供选择的答案中选出正确答案填入下列叙述中的( )内。(1)软件开发时,一个错误发现得越晚,为改正它所付出的代价就( )。A) 越大 B) 越小 C)越不可捉摸 D)越接近平均水平(2)功能模型中描述处理流程的最基本成分为( )。 A)数据流图和数据结构图 B) 数据流图和程序流程图C)程序流程图和数据结构图 D) 数据流图和数据词典(3)模块内聚用于衡量模块内部各成分之间彼此结合的紧密程度。若一组语句在程序的多处出现,为了节省空间把这些语句放在一个模块中,则该模块的内聚类型是( )。 A) 功能内聚 B)通信内聚 C)偶然内聚 D)逻辑内聚(5)结构化分析方法(SA)是在

3、软件开发过程中常用的方法,这个方法采用的基本手段是( )。A)分解与抽象 B)分解与综合 C)归纳与推导 D)试探与回溯(6)原型化方法是用户和设计者之间执行的一种交互过程,适用于( )系统。A)需求不确定性高的 B)需求确定的 C)管理信息 D)决策支持(7)软件测试的目的是( )。A)评价软件的质量 B)发现软件的错误C)找出软件中的所有错误 D)证明软件是正确的(8)在软件生存周期中,( )阶段所占的工作量最大,约70%。 A)分析 B)设计 C)编码 D)测试 E)维护(二)软件需求分析1. 软件需求分析是软件过程中交换意见最频繁的步骤。为什么交换意见的途径会经常阻塞? 软件需求分析过

4、程中,由于最初分析员对要解决的问题了解很少,用户对问题的描述、对目标软件的要求也很凌乱、模糊,再加上分析员和用户共同的知识领域不多,导致相互间通信的需求。首先,由于分析员和用户之间需要通信的内容相当多,业务知识上的不足,表达方式的不足,可能对某些需求存在错误解释或误解的可能性,造成需求的模糊性。其次,用户和分析员之间经常存在无意识的“我们和他们”的界限,不是按工作需要组成统一的精干的队伍,而是各自定义自己的“版图”,并通过一系列备忘录、正式的意见书、文档,以及提问和回答来相互通信。历史已经证明,这样会产生大量误解。忽略重要信息,无法建立成功的工作关系。2. 数据流图的作用是什么?它有哪些基本成

5、分? 数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。 3. 数据字典的作用是什么?它有哪些基本条目? 数据字典(简称DD)是用来定义数据流图中的各个成分的具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。他和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。数据字典是为分析人员查找数据

6、流图中有关名字的详细定义而服务的,因此也像普通字典一样,要把所有条目按一定的次序排列起来,以便查阅。数据字典有以下四类条目:数据流、数据项、数据存储、基本加工。数据项是组成数据流和数据存储的最小元素。源点、终点不在系统之内,故一般不在字典中说明。4. 从供选择的答案中选出正确答案填入下列叙述中的( )内。原型化方法是用户和设计者之间执行的一种交互过程,适用于( A )系统。它从用户界面设计开始,首先形成( B ),用户( C )并就( D )提出意见。它是一种( E )型的设计过程。A:需求不确定性高的 需求确定的 管理信息 决策支持B:用户界面使用手册界面需求分析说明书系统界面原型完善的用户

7、界面C:改进界面的设计使用和不使用哪种编程语言程序的结构运行界面原型D:同意什么和不同意什么使用和不使用哪种编程语言程序的结构执行速度是否满足要求E:自外向内自顶向下自内向外自底向上(三)软件设计1. 模块独立性与信息隐蔽有何关系?2. 模块的内聚程度与模块在分层结构中的位置有关系吗?说明你的论据。 答案:模块的内聚性与该模块在分层模块结构中的位置无关。事实上,一个好的模块化的程序系统,它所有的模块可以都是功能内聚的,即每一个模块就只干了一件事。用结构化设计方法建立起来的模块结构中的每一个模块都符合这个要求。把讨论范围再拓宽点,在纯面向对象范型的软件系统中,整个系统看作是一个类,它的子类可以看

8、作是系统的子系统或高层模块,它们还可以有子类,这就形成一个类的层次结构。类的构造可以看成是一个抽象数据类型,实际上是信息内聚的。所以整个系统中从上到下,所有模块(对象类)都是信息内聚的模块。3. 耦合的概念和软件的可移植性有什么关系?请举例说明你的论述。 耦合是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块之间接口的复杂程度。在软件设计的时候应该追求尽可能松散耦合系统。由于模块之间联系简单,发生在一处的错误传播到整个系统的可能性很小,因此,模块之间的耦合程度对系统的可理解性,可测试性,可靠性和可维护性有很重要的影响。内聚是对模块内各元素彼此结合的紧密程度的度量。4. 从供选择的

9、答案中选出正确答案填入下列关于软件设计叙述中的( )内。在众多的设计方法中,SD方法是最受人注意的,也是应用最广泛的。这种方法可以同分析阶段的( A )方法及编程阶段的( B )方法前后衔接。SD方法是考虑如何建立一个结构良好的程序,提出了评价模块质量的两个具体标准块间联系和块内联系。SD方法的最终目标是( C )。A,B:Jackson(B) SA(A) SC ParnasC:块间联系大,块内联系小 块间联系大,块内联系大块间联系小,块内联系小 块间联系小,块内联系大5. 从下列关于模块化程序设计的叙述中选出条正确的叙述。(1) 程序设计比较方便,但比较难以维护。(2) 便于由多个人分工编制

10、大型程序。(3) 软件的功能便于扩充。(4) 程序易于理解,也便于排错。(5) 在主存储器能够容纳得下的前提下,应使模块尽可能大,以便减少模块的个数。(6) 模块之间的接口叫数据文件。(7) 只要模块之间的接口关系不变,各模块内部实现细节的修改将不会影响别的模块。(8) 模块间的单向调用关系叫做模块的层次结构。(9) 模块越小,模块化的优点越明显。一般来说,模块的大小都在10行以下。6. 从供选择的答案中选出正确答案填入下列关于详细设计叙述中的( )内。软件详细设计工具可分为三类,即图示工具、表格工具和伪码语言。图示工具中,( A )简单且应用广泛,( B )表示法中,每个处理过程用一个盒子表

11、示,盒子可以嵌套。( C )可以纵横延伸,图形的空间效果好。( D )是一种设计语言,它是一种面向( E )的语言。A,B,C:NS图(B) 流程图(A) HIPO图 PAD图(C)D:C PDL Prolog PascalE:人 机器 数据结构 对象 (四)编码1. 结构化程序设计有时被错误地称为“无GOTO语句”的程序设计。请说明为什么会出现这样的说法,并讨论围绕着这个问题的一些争论。 严格控制GOTO语句,仅在用一个非结构化的程序设计语言去实现一个结构化的构造,或者在某种可以改善而不是损害程序可读性的情况下才可以使用GOTO语句。大量采用GOTO语句实现控制路径,会使程序路径变得复杂而混

12、乱,因此要控制GOTO语句的使用。但有时完全不用GOTO语句进行程序编码,比用GOTO语句编出的程序可读性差。例如,在查找结束时,文件访问结束时,出现错误情况要从循环中转出时,使用布尔变量和条件结构来实现就不如用GOTO语句来得简单易懂。2. 从下列关于程序编制的叙述中选出条正确的叙述。(1) 在编制程序之前,首先必须仔细阅读给定的程序说明书。然后,必须如实地依照说明书编写程序。说明书中常会有含糊不清或难以理解的地方,程序员在作业时应该对这些地方作出适当的解释。(2) 在着手编制程序时,重要的是采用既能使程序正确地按设计流程进行处理,又易于出错的编写方法。(3) 在编制程序时,首先应该对程序的

13、结构充分考虑,不要急于开始编程,而要象写软件文档那样,很好地琢磨程序具有什么样的功能,这些功能任何安排,等等。(4) 考虑到以后的程序变更,为程序编写完整的说明书是一项很重要的工作。只要有了完整的程序说明书,即使程序的编写形式难以让他人看懂也没有什么关系。(5) 编制程序时不可缺少的条件是,程序的输入和输出数据的格式都应确定。其它各项规定都是附带的,无足轻重。(6) 作为一个好的程序,不仅处理速度要快,而且易读易修改等也都是重要的条件。为了能得到这样的程序,不仅要熟悉程序设计语言的语法,还要注意采用适当的规程和单纯的表现方法,注意使整个程序的结构简洁。3. 从下列叙述中选出条符合程序设计风格指

14、导原则的叙述。(1) 嵌套的重数应加以限制。(2) 尽量多使用临时变量。(3) 不滥用语言特色。(4) 不用可以省略的括号。(5) 应尽可能把程序编得短些。(6) 使用有意义的变量名。(7) 把常见的局部优化工作留给编译程序去做。(8) 注解越少越好。(9) 程序的格式应有助于读者理解程序。(10) 应尽可能多用GOTO语句。(五)软件测试1. 从供选择的答案中选出应填入下列( )中的字句。软件测试的目的是(A)。为了提高测试的效率,应该(B)。使用白盒测试方法时,确定测试数据应根据(C)和指定的覆盖标准。与设计测试数据无关的文档是(D)。软件的集成测试工作最好由(E)承担,以提高集成测试的效

15、果。A:评价软件的质量 发现软件的错误 找出软件中的所有错误 证明软件是正确的B:随机地选取测试数据取一切可能的输入数据作为测试数据在完成编码以后制定软件的测试计划选择发现错误的可能性大的数据作为测试数据C:程序的内部逻辑程序的复杂程度使用说明书程序的功能D:该软件的设计文档程序的复杂程度源程序项目开发计划E:该软件的设计人员该软件开发组的负责人该软件的编程人员不属于该软件开发组的设计人员2. 从供选择的答案中选出同下列关于软件测试的各条叙述关系最密切的字句。A. 在意识到被测试模块的内部结构或算法的情况下进行测试。(白盒测试)B. 为了确认用户的需求,先作出系统的主要部分,提交给用户试用。原

16、型C. 在测试具有层次结构的大型软件时,有一种方法是从上层模块开始,由上到下进行测试。此时,有必要用一些模块替代尚未测试过的下层模块。桩(即存根模块)A,B,C,D,E:仿真器 代码审查 模拟器 桩 驱动器域测试 黑盒测试 原型 白盒测试 退化测试7下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。int GetMax(int n, int datalist ) int k=0; for ( int j=1; j datalistk ) k=j;return k; (1) 画出该程序的控制流图,并计算其McCabe环路复杂性。 控制图 McCabe环路复杂性:

17、3(2) 用基本路径覆盖法给出测试路径。 Pathl:Path2:Path3:(3) 为各测试路径设计测试用例。Path1:取n=1,datalist0=1,预期结果:k=0Path2:取:n=2,datalist0=1,datalist1=0,预期结果:k=0Path3:取n=2,datalist0=0,datalist1=1,预期结果:k=1【解析】本题考查对软件测试概念和过程的理解,结合具体实例运用各种测试技术,学会测试用例设计、软件测试与程序调试的方法。软件测试是为了发现错误而执行程序的过程,其目的在于以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。根据2004新大纲和最近两次

18、软件设计师考试的真题,不难发现各类系统分析理论的实例化考核比例逐渐升温,只要读者平时对这部分知识的实例多分析、多思考,这部分分数其实不难拿到。答:1.控制流图如下,McCabe环路复杂性为3。2. 测试路径:Path1: Path2: Path3: 3. 测试用例: Path1: 取n=1,datalist0 = 1, 预期结果:k=0 Path2: 取n=2,datalist0 = 1,datalist1 = 0, 预期结果:k=0 Path3: 取n=2,datalist0 = 0,datalist1 = 1, 预期结果:k=1 8、对程序进行基本路径的测试void Func(int nP

19、osX, int nPosY) while (nPosX 0) int nSum = nPosX + nPosY;if (nSum 1) nPosX-; nPosY-;else if (nSum 1)and (B=0)Then x:=X/A;If (A=2)or(X1)Then x:=x+1END对程序进行逻辑覆盖的测试逻辑覆盖法适用于白盒测试。 有选择地执行程序中某些最有代表性的通路是对穷尽测试的唯一可行的替代办法。所谓逻辑覆盖是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。测试数据执行(或叫覆盖)程序逻辑的标准大致有以下一些。条件覆盖 条件覆盖的含义是,不仅每个语句至少

20、执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。 上例中只需要使用下面两组测试数据就可以达到上述覆盖标准:IA=2,B=0,X=4(满足A1,B=0,A=2和X1的条件,执行路径sacbed)A=1,B=1,X=1(满足A1,B0,A2和X1的条件,执行路径sabd) 条件覆盖通常比判定覆盖强,因为它使判定表达式中每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。但是,也可能有相反的情况:虽然每个条件都取到了两个不同的结果,判定表达式却始终只取一个值。例如,如果使用下面两组测试数据,则只满足条件覆盖标准并不满足判定覆盖标准(第二个判定表达式的值总为真):IA=2,

21、B=0,X=1(满足A1,B=0,A=2和X1的条件,执行路径sacbed)A=1,B=1,X=2(满足:A1,B0,A2和X 1的条件,执行路径sabed)(六)面向对象软件工程由RumBaugh等人提出的一种面向对象方法叫做模型化技术,即三视点技术,它要求把分析时收集的信息建立在三个模型中。第一个模型是(A),其作用是描述系统的静态结构,包括构成系统的对象和类,它们的属性和操作,以及它们之间的联系。第二个模型是(B),描述系统的控制逻辑,主要涉及系统中各个对象和类的时序及变化状况。(B)包括两种图,即(C)和(D)。(C)描述每一类对象的行为,(D)描述发生于系统执行过程中的某一特定脚本。

22、第三个模型是(E),着重于描述系统内部数据的传送与处理,它由多个数据流图组成。A,B,E:数据模型 功能模型(E) 行为模型 信息模型 原型 动态模型 (B) 对象模型(A) 逻辑模型 控制模型 仿真模型C,D:对象图 概念模型图 状态迁移图 (C) 数据流图 时序图 事件追踪图(D) 控制流程图 逻辑模拟图 仿真图 行为图2. 从供选择的答案中选出正确答案填入下列叙述的( )内。面向对象型的程序设计语言具有数据抽象、信息隐蔽、(A)等特征。作为运算单位的对象应具有下列特性:(B)、(C)、(D)。(E)是面向对象型的语言。A:对象调用 对象变换 非过程性 信息继承 并发性B,C,D:对象把数

23、据和处理数据的操作结合为一体在程序运行时对象都处于活动状态对象在计算中可向其它对象发送消息接受消息的对象必须给消息发送者以回答对象的内部服务只根据外部送来的消息才操作E: C+, Smalltalk, Object C C, Ada, Modula2 Pascal, C+, APL Ada, Object C, C(七)软件管理1. 什么是软件项目管理? 软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动.2. 什么是配置管理?它的四项基本功能是什么?配置管理(

24、Configuration Management,CM)是通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施并行开发支持 修订版管理 版本控制 产品发布管理 建立管理过程控制变更请求管理代码共享3. 什么是基线?它在配置管理中有什么作用? 4. 简述配置管理的五项主要任务。5. 从供选择的答案中选出正确答案填入下列叙述的( )内。任何软件项目都必须作好项目管理工作,最常使用的计划管理工具是(A)。当某一软件项目的进度有可能拖延时,应该(B)。对于一个典型的开发项目,各开发阶段需投入的工作量的百分比大致是(C)。各阶段所需不同层次的技术人员大致是(D),而管理人员在各阶

25、段所需数量也不同,相对而言大致是(E)。A: 数据流图 程序结构图 因果图 PERT图B: 增加新的开发人员 分析拖期原因加以补救 从别的小组抽调人员临时帮忙 推迟预定完成时间 (A/D/P/T)C: 25/25/25/25 10/20/30/40 15/30/15/40 5/10/65/30D: 初/高/高/高 中/中/高/中 高/中高/初/中高 中/中高/中/初E: 多/中/少/中 中/中/中/中 多/少/多/多 少/多/少/多6. 从下列关于文档编制的叙述中选出正确的叙述。(1) 可行性研究报告应评述为了合理地达到开发目标而困难选择的各种方案,以便用户抉择。因此,编写者不必提出结论。(2

26、) 操作手册的编写工作应该在软件测试阶段之前完成。(3) 软件的开发单位应该建立本单位文档的标识方法,使文档的每一页都具有明确的标识。(4) 为了使得文档便于修改,保持一致性,各文档的内容不应有相互重复的地方。(5) 用户手册要使用专门的术语,并充分地描述该软件系统的结构及使用方法。(6) 详细设计说明书中可以使用判定表及必要的说明来表示程序的逻辑。(7) 概要设计说明书中可以IPO图来说明接口设计。(8) 测试分析报告应把每个模块实际测试的结果,与软件需求规格说明书和概要设计说明书中规定的要求进行对照并作出结论。(9) 软件需求规格说明书中可以对软件的操作人员和维护人员的教育水平和技术专长提

27、出要求。(10) 项目开发计划除去规定项目开发所需的资源、开发的进度等以外,还可以包括用户培训计划。(11) 软件过程能力成熟度的5个等级是:初始级、可重复级、_ _、_ _和_ _。CMM ( 软件过程能力成熟度模型 )是英文 _ _的缩写。(12) 在软件测试中,如果一个软件是给许多客户使用的,那么让每一个用户都进行正式的接收测试是不切实际的。因此软件厂商常常进行这样的测试:一种测试是由软件的最终用户在一个或多个用户场所进行,开发者通常不会在场,用户记录错误和问题并报告给开发者,这种测试叫_ _;另一种测试由一个用户在开发场所,用户在开发者的“指导”下进行,开发者负责记录错误和问题,这种测

28、试叫 _。(13) 是指计算机软件的开发和维护过程中所遇到的一系列严重问题。(14)从理论上说,只用顺序结构、 、 三种基本控制结构就可以实现任何单入口单出口的程序。(15)通常,把一个软件从定义、开发、 、直到最终被废弃所经历的漫长时期称为 。(16)造成软件危机的主要原因是 。A用户使用不当 B.软件本身特点 C.硬件不可靠D.对软件的错误认识 E.缺乏好的开发方法和手段三、阅读下面说明,画出系统的第0层和第1层的数据流图。1、某公司工资与考勤管理系统的功能描述:(1) 系统根据考勤管理员和人力资源部提交的考勤统计表和员工业绩表更新员工基本信息文件;(2) 系统每月底向公司总经理办公室提交

29、部门消耗表和员工消耗表,并接收公司总经理办公室下发的部门嘉奖/处罚清单;(3) 系统要随时接收人力资源部提交的员工流动登记表,随时向其输出公司考勤登记表,并更新员工基本信息文件。(4) 考勤子系统首先处理员工的考勤情况,然后输出员工考勤通知单给工资处理子系统处理。2、某校准备开发一个学生成绩管理系统。在该系统中,教务人员录入学生信息、课程信息和成绩信息,学生可以随时查询自己所选课程的成绩。由于学生成绩属于敏感信息,系统必须提供必要的安全措施以防非法存取。请画出该系统的三层数据流图。3、一个考务处理系统的要求如下,试画出该系统的数据流图。 (1) 对考生送来的报名表进行检查; (2) 对合格的报

30、名表编好准考证号码后将准考证送给考生,并将汇总后的考生名单送给阅卷站; (3) 对阅卷站送来的成绩表进行检查,并根据考试中心指定的合格标准审定合格者; (4) 填写考生通知单(内容包含考试成绩及合格不合格标志),送给考生; (5) 按地区、年龄、文化程度、职业、考试级别等进行成绩分类统计及试题难度分析,产生统计分析表。四、面向对象1、根据下面描述,画出相应的用例图。 在医生的办公室里,接待员、护士和医生使用病人记录和计划安排系统。当病人第一次来这里看病时,接待员使用该系统来输入病人信息,并且安排所有的预约。护士使用系统来跟踪病人每次看病的结果并输入护理病人的信息,如医疗和诊断。护士也可以访问这

31、些信息以打印病人诊断结果或病人看病历史。医生主要用这个系统来查看病人的病史,偶尔也输入病人医疗信息,但通常让护士输入这些信息。2、 填空题(1)在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间关联 关系。(2)类A的一个操作调用类B的一个操作,且这两个类之间不存在其他关系,那么类A和类B之间是依赖关系。3)接口及其实现类或构件之间是实现 关系。4)一个汽车有四个轮子,那么类汽车和轮子之间的关系是聚合关系。5)学生与研究生之间是泛化关系。3、在系统开发过程中为什么需要建立模型?在系统开发过程中,建立模型的一个重要原因在于描述系统的复杂性。信息系统十分复杂,而且系

32、统的某些部分难以明了。系统各个部分的模型有助于问题的简化,并能够使分析人员的精力一次只集中在系统的几个方面上。同时,分析人员需要收集和处理大量的信息,模型提供了以一种容易理解的形式为后期使用存储信息的方法。建立模型的另一个主要原因是便于交流。开发人员可以使用模型讨论和交流系统的设计方案,用户可以从模型中更好地理解新系统所能提供的各种可能的功能,因此,模型在支持小组人员之间和与用户的交流过程中起着重要的作用。 最后,模型为以后的软件维护和升级提供了文档。 由于系统的复杂性,需要建立多个模型来涵盖细节信息,还需要使用许多不同类型的模型在不同的细节由于系统的复杂性,需要建立多个模型来涵盖细节信息,还

33、需要使用许多不同类型的模型在不同的细节层次(或不同抽象层次)上表现系统,既包括在高层次上对系统的概括,也包括针对系统某一方面的细节描述。4、与传统的结构化方法相比,面向对象开发方法具有什么优点?面向对象方法与传统的软件开发方法相比,具有许多显著的优点,其主要优点如下: (1) 按照人类的自然思维方式,面对客观世界建立软件系统模型,有利于对问题域和系统责任的理解,有利于人员交流。 (2) 在整个开发过程中采用统一的概念和模型表示,填平了语言之间的鸿沟,使得开发活动之间平滑过渡。 (3) 对象所具有的封装性和信息隐蔽等特性,使其容易实现软件复用。对象类可以派生出新类,类可以产生实例对象,从而实现了

34、对象类的数据结构和操作代码的软构件的复用。另外,面向对象程序设计语言的开发环境一般预定义了系统动态连接库,提供大量公用程序代码,避免重复编写,提高了开发效率和质量。 (4) 在面向对象的方法中,系统由对象构成,对象是一个包含属性和操作两方面的独立单元,对象之间通过消息联系。这样的系统一旦出错,容易定位和修改,系统的可维护性好。五、软件维护1、 为什么软件需要维护?简述软件维护的过程。2、 为什么说软件维护是一项困难的工作?3、 改正性维护与排错(调试)是否是一回事?为什么?4、 什么是软件再工程?软件再工程的意义是什么?1、在软件开发完成交付用户使用后,为了保证软件在一个相当长的时期能够正常运

35、行,就需要对软件进行维护。 软件维护的类型有4种:改正性维护、适应性维护、完善性维护和预防性维护。 (1) 改正性维护是要改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷; (2) 适应性维护是要在软件使用过程中数据环境发生变化或处理环境发生变化时修改软件以适应这种变化; (3) 完善性维护是在用户和数据处理人员使用软件过程中提出改进现有功能,增加新的功能,以及改善总体性能的要求后,修改软件以把这些要求纳入到软件之中; (4) 预防性维护是为了提高软件的可维护性、可靠性等,事先采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试,为以后进一步改进软件打

36、下良好基础。 软件维护的过程如图所示。首先是确认维护要求,这需要维护人员与用户反复协商,弄清错误概况以及对业务的影响大小,以及用户希望做什么样的修改,并把这些情况存入故障数据库。然后由维护组织管理员确认维护类型,根据不同的维护类型实施不同的维护过程。 (1) 对于改正性维护申请,从评价错误的严重性开始。如果存在严重的错误,则必须安排人员,在系统监督员的指导下,进行问题分析,寻找错误发生的原因,进行救火性的紧急维护;对于不严重的错误,可根据任务、机时情况、视轻重缓急,进行排队,统一安排时间。 (2) 对于适应性维护和完善性维护申请,需要先确定每项申请的优先次序。若某项申请的优先级非常高,就可立即

37、开始维护工作,否则,维护申请和其它的开发工作一样,进行排队,统一安排时间。 (3) 并不是所有的完善性维护申请都必须承担,因为进行完善性维护等于是做二次开发,工作量很大,所以需要根据商业需要、可利用资源的情况、目前和将来软件的发展方向、以及其它的考虑,决定是否承担。 尽管维护申请的类型不同,但都要进行同样的技术工作。这些工作包括:修改软件需求说明、修改软件设计、设计评审、对源程序做必要的修改、单元测试、集成测试(回归测试)、确认测试、软件配置评审等。在每次软件维护任务完成后,最好进行一次情况评审,对以下问题进行总结: 在目前情况下,设计、编码、测试中的哪一方面可以改进? 哪些维护资源应该有但没

38、有? 工作中主要的或次要的障碍是什么? 从维护申请的类型来看是否应当有预防性维护? 情况评审对将来的维护工作如何进行会产生重要的影响,并可为软件机构的有效管理提供重要的反馈信息。 2、软件维护是一件十分困难的工作,由于软件需求分析和开发方法产生软件的缺陷,加上软件开发过程中没有严格而又科学的管理和规划,便会引起软件运行时的维护困难。 软件维护不是一件吸引人的工作,由于维护工作的困难性,维护经常遭受挫折,而且很难出成果,所以高水平的程序员自然不愿主动去做,而公司也舍不得让高水平的程序员去做。 软件维护工作的困难主要表现在以下几个方面: (1) 读懂别人的程序是很困难的,而文档的不足更增加了这种难

39、度。一般开发人员都有这样的体会,修改别人的程序还不如自己重新编写程序。 (2) 文档的不一致性是软件维护困难的又一个因素,主要表现在各种文档之间的不一致以及文档与程序之间的不一致性,从而导致维护人员不知所措,不知怎样进行修改。这种不一致性是由于开发过程中文档管理不严造成的,开发中经常会出现修改程序而忘了修改相关的文档,或者某一个文档修改了,却没有修改与之相关的其他文档等现象,解决文档不一致性的方法就是要加强开发工作中文档的版本管理。 (3) 软件开发和软件维护在人员和时间上存在差异。如果软件维护工作是由该软件的开发人员完成,则维护工作相对比较容易,因为这些人员熟悉软件的功能和结构等。但是,通常

40、开发人员和维护人员是不同的,况且维护阶段持续时间很长,可能是1020年的时间,原来的开发工具、方法和技术与当前有很大的差异,这也造成了维护的困难。 (4) 软件维护不是一件吸引人的工作。由于维护工作的困难性,维护经常遭受挫折,而且很难出成果,所以高水平的程序员自然不愿主动去做,而公司也舍不得让高水平的程序员去做。 3、 改错性维护与排错(调试)不是一个概念。 (1) 调试是作为测试的后续工作而出现的,在测试发现软件中的错误之后,开发人员通过调试进一步诊断和改正程序中潜在的错误;在软件交付使用后,由于开发时测试的不彻底、不完全,必然会有一部分隐藏的错误被带到运行阶段来,这些隐藏下来的错误在某些特

41、定的使用环境下就会暴露出来。改正性维护是为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用所进行的诊断和改正错误的过程。 (2) 调试在程序编码阶段、测试阶段、运行和维护阶段都可以发挥作用,它实际上是一种工具或手段;在软件交付运行之后,用户实际充当了测试员的角色,一旦发现软件运行中的错误或缺陷,就会将问题报告通报软件提供商,申请软件维护。软件维护人员可以利用调试手段来诊断和改正软件中存在的错误,这时可能涉及的范围不只包括程序,还有文档和数据,不仅可能修改程序代码,而且可能需要修改设计甚至需求,所以改正性维护是在更大范围中做工作。 4、软件再工程是一种软件工程,它从已有的程序中重新获得设计信息,并能够使用这些信息改建或重构现有的系统,以改进其综合质量。 软件再工程的意义在于: (1) 帮助软件组织降低软件演化的风险

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服