软件工程复习及答案分析_第1页
软件工程复习及答案分析_第2页
软件工程复习及答案分析_第3页
软件工程复习及答案分析_第4页
软件工程复习及答案分析_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/复习思索题软件工程概论试说明“软件生命周期”的概念。同任何事物一样,一个软件产品或软件系统也要阅历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。论述瀑布模型软件开发方法的基本过程。瀑布模型规定了各项软件工程活动,包括:制定软件项目支配,进行需求分析和定义,软件设计,程序编码,测试及运行维护。并且规定了它们自上而下,相互连接的固定次序,如同瀑布流水,逐级下落。软件工程的基本原理有哪些?1.用分阶段的生命周期支配严格管理2.坚持进行阶段评审3.实行严格的产品限制4.接受现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应当少而精7.承认不断改进软件工程实践的必要性从供选择的答案中选出正确答案填入下列叙述中的()内。(1)软件开发时,一个错误发觉得越晚,为改正它所付出的代价就()。越大B)越小C)越不行捉摸D)越接近平均水平(2)功能模型中描述处理流程的最基本成分为()。A)数据流图和数据结构图B)数据流图和程序流程图C)程序流程图和数据结构图D)数据流图和数据词典(3)模块内聚用于衡量模块内部各成分之间彼此结合的紧密程度。若一组语句在程序的多处出现,为了节约空间把这些语句放在一个模块中,则该模块的内聚类型是()。A)功能内聚B)通信内聚C)偶然内聚D)逻辑内聚(5)结构化分析方法(SA)是在软件开发过程中常用的方法,这个方法接受的基本手段是()。A)分解和抽象B)分解和综合C)归纳和推导D)摸索和回溯(6)原型化方法是用户和设计者之间执行的一种交互过程,适用于()系统。A)需求不确定性高的B)需求确定的C)管理信息D)决策支持(7)软件测试的目的是()。A)评价软件的质量B)发觉软件的错误C)找出软件中的全部错误D)证明软件是正确的(8)在软件生存周期中,()阶段所占的工作量最大,约70%。A)分析B)设计C)编码D)测试E)维护(二)软件需求分析软件需求分析是软件过程中交换看法最常见的步骤。为什么交换看法的途径会经常堵塞?软件需求分析过程中,由于最初分析员对要解决的问题了解很少,用户对问题的描述、对目标软件的要求也很凌乱、模糊,再加上分析员和用户共同的学问领域不多,导致相互间通信的需求。首先,由于分析员和用户之间须要通信的内容相当多,业务学问上的不足,表达方式的不足,可能对某些需求存在错误说明或误会的可能性,造成需求的模糊性。其次,用户和分析员之间经常存在无意识的“我们和他们”的界限,不是按工作须要组成统一的精干的队伍,而是各自定义自己的“版图”,并通过一系列备忘录、正式的看法书、文档,以及提问和回答来相互通信。历史已经证明,这样会产生大量误会。忽视重要信息,无法建立成功的工作关系。数据流图的作用是什么?它有哪些基本成分?数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能微小环节。因此,数据流图既供应了功能建模的机制,也供应了信息流建模的机制,从而可以建立起系统或软件的功能模型。数据字典的作用是什么?它有哪些基本条目?数据字典(简称DD)是用来定义数据流图中的各个成分的详细含义的,它以一种精确的、无二义性的说明方式为系统的分析、设计及维护供应了有关元素的一样的定义和详细的描述。他和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的,因此也像一般字典一样,要把全部条目按确定的次序排列起来,以便查阅。数据字典有以下四类条目:数据流、数据项、数据存储、基本加工。数据项是组成数据流和数据存储的最小元素。源点、终点不在系统之内,故一般不在字典中说明。从供选择的答案中选出正确答案填入下列叙述中的()内。原型化方法是用户和设计者之间执行的一种交互过程,适用于(A)系统。它从用户界面设计起先,首先形成(B),用户(C)并就(D)提出看法。它是一种(E)型的设计过程。A:①需求不确定性高的②需求确定的③管理信息④决策支持B:①用户界面运用手册②界面需求分析说明书③系统界面原型④完善的用户界面C:①改进界面的设计②运用和不运用哪种编程语言③程序的结构④运行界面原型D:①同意什么和不同意什么②运用和不运用哪种编程语言③程序的结构④执行速度是否满足要求E:①自外向内②自顶向下③自内向外④自底向上(三)软件设计模块独立性和信息隐藏有何关系?模块的内聚程度和模块在分层结构中的位置有关系吗?说明你的论据。答案:模块的内聚性和该模块在分层模块结构中的位置无关。事实上,一个好的模块化的程序系统,它全部的模块可以都是功能内聚的,即每一个模块就只干了一件事。用结构化设计方法建立起来的模块结构中的每一个模块都符合这个要求。把探讨范围再拓宽点,在纯面对对象范型的软件系统中,整个系统看作是一个类,它的子类可以看作是系统的子系统或高层模块,它们还可以有子类,……,这就形成一个类的层次结构。类的构造可以看成是一个抽象数据类型,事实上是信息内聚的。所以整个系统中从上到下,全部模块(对象类)都是信息内聚的模块。耦合的概念和软件的可移植性有什么关系?请举例说明你的论述。耦合是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块之间接口的困难程度。在软件设计的时候应当追求尽可能松散耦合系统。由于模块之间联系简洁,发生在一处的错误传播到整个系统的可能性很小,因此,模块之间的耦合程度对系统的可理解性,可测试性,牢靠性和可维护性有很重要的影响。内聚是对模块内各元素彼此结合的紧密程度的度量。从供选择的答案中选出正确答案填入下列关于软件设计叙述中的()内。在众多的设计方法中,SD方法是最受人留意的,也是应用最广泛的。这种方法可以同分析阶段的(A)方法及编程阶段的(B)方法前后连接。SD方法是考虑如何建立一个结构良好的程序,提出了评价模块质量的两个详细标准——块间联系和块内联系。SD方法的最终目标是(C)。A,B:①Jackson(B)②SA(A)③SC④ParnasC:①块间联系大,块内联系小②块间联系大,块内联系大③块间联系小,块内联系小④块间联系小,块内联系大从下列关于模块化程序设计的叙述中选出5条正确的叙述。程序设计比较便利,但比较难以维护。便于由多个人分工编制大型程序。软件的功能便于扩充。程序易于理解,也便于排错。在主存储器能够容纳得下的前提下,应使模块尽可能大,以便削减模块的个数。模块之间的接口叫数据文件。只要模块之间的接口关系不变,各模块内部实现微小环节的修改将不会影响别的模块。模块间的单向调用关系叫做模块的层次结构。模块越小,模块化的优点越明显。一般来说,模块的大小都在10行以下。6.从供选择的答案中选出正确答案填入下列关于详细设计叙述中的()内。软件详细设计工具可分为三类,即图示工具、表格工具和伪码语言。图示工具中,(A)简洁且应用广泛,(B)表示法中,每个处理过程用一个盒子表示,盒子可以嵌套。(C)可以纵横延长,图形的空间效果好。(D)是一种设计语言,它是一种面对(E)的语言。 A,B,C:①NS图(B)②流程图(A)③HIPO图④PAD图(C)D:①C②PDL③Prolog④PascalE:①人②机器③数据结构④对象(四)编码结构化程序设计有时被错误地称为“无GOTO语句”的程序设计。请说明为什么会出现这样的说法,并探讨围围着这个问题的一些争论。严格限制GOTO语句,仅在用一个非结构化的程序设计语言去实现一个结构化的构造,或者在某种可以改善而不是损害程序可读性的状况下才可以运用GOTO语句。大量接受GOTO语句实现限制路径,会使程序路径变得困难而混乱,因此要限制GOTO语句的运用。但有时完全不用GOTO语句进行程序编码,比用GOTO语句编出的程序可读性差。例如,在查找结束时,文件访问结束时,出现错误状况要从循环中转出时,运用布尔变量和条件结构来实现就不如用GOTO语句来得简洁易懂。从下列关于程序编制的叙述中选出3条正确的叙述。在编制程序之前,首先必需细致阅读给定的程序说明书。然后,必需照实地依照说明书编写程序。说明书中常会有模糊不清或难以理解的地方,程序员在作业时应当对这些地方作出适当的说明。在着手编制程序时,重要的是接受既能使程序正确地按设计流程进行处理,又易于出错的编写方法。在编制程序时,首先应当对程序的结构充分考虑,不要急于起先编程,而要象写软件文档那样,很好地琢磨程序具有什么样的功能,这些功能任何支配,等等。考虑到以后的程序变更,为程序编写完整的说明书是一项很重要的工作。只要有了完整的程序说明书,即使程序的编写形式难以让他人看懂也没有什么关系。编制程序时不行缺少的条件是,程序的输入和输出数据的格式都应确定。其它各项规定都是附带的,无足轻重。作为一个好的程序,不仅处理速度要快,而且易读易修改等也都是重要的条件。为了能得到这样的程序,不仅要熟悉程序设计语言的语法,还要留意接受适当的规程和单纯的表现方法,留意使整个程序的结构简洁。从下列叙述中选出5条符合程序设计风格指导原则的叙述。嵌套的重数应加以限制。尽量多运用临时变量。不滥用语言特色。不用可以省略的括号。应尽可能把程序编得短些。运用有意义的变量名。把常见的局部优化工作留给编译程序去做。注解越少越好。程序的格式应有助于读者理解程序。应尽可能多用GOTO语句。(五)软件测试从供选择的答案中选出应填入下列()中的字句。软件测试的目的是(A)。为了提高测试的效率,应当(B)。运用白盒测试方法时,确定测试数据应依据(C)和指定的覆盖标准。和设计测试数据无关的文档是(D)。软件的集成测试工作最好由(E)担当,以提高集成测试的效果。A:①评价软件的质量②发觉软件的错误③找出软件中的全部错误④证明软件是正确的B:①随机地选取测试数据②取一切可能的输入数据作为测试数据③在完成编码以后制定软件的测试支配④选择发觉错误的可能性大的数据作为测试数据C:①程序的内部逻辑②程序的困难程度③运用说明书④程序的功能D:①该软件的设计文档②程序的困难程度③源程序④项目开发支配E:①该软件的设计人员②该软件开发组的负责人③该软件的编程人员④不属于该软件开发组的设计人员从供选择的答案中选出同下列关于软件测试的各条叙述关系最密切的字句。在意识到被测试模块的内部结构或算法的状况下进行测试。(⑨白盒测试)为了确认用户的需求,先作出系统的主要部分,提交给用户试用。⑧原型在测试具有层次结构的大型软件时,有一种方法是从上层模块起先,由上到下进行测试。此时,有必要用一些模块替代尚未测试过的下层模块。④桩(即存根模块)A,B,C,D,E:①仿真器②代码审查③模拟器④桩⑤驱动器 ⑥域测试⑦黑盒测试⑧原型⑨白盒测试⑩退化测试7.下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。

intGetMax(intn,intdatalist[])

{

intk=0;

for(intj=1;j<n;j++)

if(datalist[j]>datalist[k])k=j;

returnk;

}

(1)画出该程序的限制流图,并计算其McCabe环路困难性。限制图McCabe环路困难性:3

(2)用基本路径覆盖法给出测试路径。Pathl:①→③Path2:①→②→④→⑥→…Path3:①→②→⑤→⑥→…

(3)为各测试路径设计测试用例。Path1:取n=1,datalist[0]=1,预期结果:k=0Path2:取:n=2,datalist[0]=1,datalist[1]=0,预期结果:k=0Path3:取n=2,datalist[0]=0,datalist[1]=1,预期结果:k=1【解析】本题考查对软件测试概念和过程的理解,结合详细实例运用各种测试技术,学会测试用例设计、软件测试和程序调试的方法。软件测试是为了发觉错误而执行程序的过程,其目的在于以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。依据2004新大纲和最近两次软件设计师考试的真题,不难发觉各类系统分析理论的实例化考核比例慢慢升温,只要读者平常对这部分学问的实例多分析、多思索,这部分分数其实不难拿到。答:1.限制流图如下,McCabe环路困难性为3。

2.测试路径:

Path1:①→③

Path2:①→②→④→⑥→…

Path3:①→②→⑤→⑥→…

3.测试用例:

Path1:取n=1,datalist[0]=1,

预期结果:k=0

Path2:取n=2,datalist[0]=1,datalist[1]=0,

预期结果:k=0

Path3:取n=2,datalist[0]=0,datalist[1]=1,

预期结果:k=18、对程序进行基本路径的测试voidFunc(intnPosX,intnPosY){ while(nPosX>0){ intnSum=nPosX+nPosY; if(nSum>1){ nPosX--;nPosY--; } else{ if(nSum<-1)nPosX-=2; elsenPosX-=4; } } //endofwhile}步骤1:依据程序逻辑画出流程图步骤2:将流程图转换为流图(1/2)步骤3:确定基本路径的集合基本路径流图Cyclomatic困难度正好是基本路径的数目V(G)=E–N+2V(G)=11-9+2=41-111-2,3-6-7-9-10-1-111-2,3-4,5-10-1-111-2,3-6-8-9-10-1-11步骤4:针对测试路径设计测试用例1-11nPosX取-1,nPosY取随意值1-2,3-4,5-10-1-11nPosX取1,nPosY取11-2,3-6-7-9-10-1–11nPosX取1,nPosY取-11-2,3-6-8-9-10-1-11nPosX取1,nPosY取-39、某模块的源程序如下:Procedureexample(A,B:real;varx:real);BeginIf(A>1)and(B=0)Thenx:=X/A;If(A=2)or(X>1)Thenx:=x+1END对程序进行逻辑覆盖的测试逻辑覆盖法适用于白盒测试。有选择地执行程序中某些最有代表性的通路是对穷尽测试的唯一可行的替代方法。所谓逻辑覆盖是对一系列测试过程的总称,这组测试过程慢慢进行越来越完整的通路测试。测试数据执行(或叫覆盖)程序逻辑的标准大致有以下一些。条件覆盖条件覆盖的含义是,不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。上例中只须要运用下面两组测试数据就可以达到上述覆盖标准:I.A=2,B=0,X=4(满足A>1,B=0,A=2和X>1的条件,执行路径sacbed)Ⅱ.A=1,B=1,X=1(满足A≤1,B≠0,A≠2和X≤1的条件,执行路径sabd)条件覆盖通常比判定覆盖强,因为它使判定表达式中每个条件都取到了两个不同的结果,判定覆盖却只关切整个判定表达式的值。但是,也可能有相反的状况:虽然每个条件都取到了两个不同的结果,判定表达式却始终只取一个值。例如,假如运用下面两组测试数据,则只满足条件覆盖标准并不满足判定覆盖标准(其次个判定表达式的值总为真):I.A=2,B=0,X=1(满足A>1,B=0,A=2和X≤1的条件,执行路径sacbed)Ⅱ.A=1,B=1,X=2(满足:A≤1,B≠0,A≠2和X>1的条件,执行路径sabed)(六)面对对象软件工程由RumBaugh等人提出的一种面对对象方法叫做模型化技术,即三视点技术,它要求把分析时收集的信息建立在三个模型中。第一个模型是(A),其作用是描述系统的静态结构,包括构成系统的对象和类,它们的属性和操作,以及它们之间的联系。其次个模型是(B),描述系统的限制逻辑,主要涉及系统中各个对象和类的时序及变更状况。(B)包括两种图,即(C)和(D)。(C)描述每一类对象的行为,(D)描述发生于系统执行过程中的某一特定脚本。第三个模型是(E),着重于描述系统内部数据的传送和处理,它由多个数据流图组成。

A,B,E:①数据模型②功能模型(E)③行为模型④信息模型⑤原型 ⑥动态模型(B)⑦对象模型(A)⑧逻辑模型⑨限制模型⑩仿真模型C,D:①对象图②概念模型图③状态迁移图(C)④数据流图⑤时序图 ⑥事务追踪图(D)⑦限制流程图⑧逻辑模拟图⑨仿真图⑩行为图从供选择的答案中选出正确答案填入下列叙述的()内。面对对象型的程序设计语言具有数据抽象、信息隐藏、(A)等特征。作为运算单位的对象应具有下列特性:(B)、(C)、(D)。(E)是面对对象型的语言。 A:①对象调用②对象变换③非过程性④信息继承⑤并发性 B,C,D:①对象把数据和处理数据的操作结合为一体②在程序运行时对象都处于活动状态③对象在计算中可向其它对象发送消息④接受消息的对象必需给消息发送者以回答⑤对象的内部服务只依据外部送来的消息才操作 E:①C++,Smalltalk,ObjectC②C,Ada,Modula2③Pascal,C++,APL④Ada,ObjectC,C(七)软件管理什么是软件项目管理?软件项目管理是为了使软件项目能够依据预定的成本、进度、质量顺当完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动.什么是配置管理?它的四项基本功能是什么?配置管理(ConfigurationManagement,CM)是通过技术或行政手段对软件产品及其开发过程和生命周期进行限制、规范的一系列措施并行开发支持修订版管理版本限制产品发布管理建立管理过程限制变更请求管理代码共享什么是基线?它在配置管理中有什么作用?简述配置管理的五项主要任务。从供选择的答案中选出正确答案填入下列叙述的()内。任何软件项目都必需作好项目管理工作,最常运用的支配管理工具是(A)。当某一软件项目的进度有可能拖延时,应当(B)。对于一个典型的开发项目,各开发阶段需投入的工作量的百分比大致是(C)。各阶段所需不同层次的技术人员大致是(D),而管理人员在各阶段所需数量也不同,相对而言大致是(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:①多/中/少/中②中/中/中/中③多/少/多/多④少/多/少/多从下列关于文档编制的叙述中选出正确的叙述。可行性探讨报告应评述为了合理地达到开发目标而困难选择的各种方案,以便用户选择。因此,编写者不必提出结论。操作手册的编写工作应当在软件测试阶段之前完成。软件的开发单位应当建立本单位文档的标识方法,使文档的每一页都具有明确的标识。为了使得文档便于修改,保持一样性,各文档的内容不应有相互重复的地方。用户手册要运用特地的术语,并充分地描述该软件系统的结构及运用方法。详细设计说明书中可以运用判定表及必要的说明来表示程序的逻辑。概要设计说明书中可以IPO图来说明接口设计。测试分析报告应把每个模块实际测试的结果,和软件需求规格说明书和概要设计说明书中规定的要求进行比照并作出结论。软件需求规格说明书中可以对软件的操作人员和维护人员的教化水平和技术专长提出要求。项目开发支配除去规定项目开发所需的资源、开发的进度等以外,还可以包括用户培训支配。软件过程实力成熟度的5个等级是:初始级、可重复级、_____、_____和_____。CMM(软件过程实力成熟度模型)是英文_____的缩写。在软件测试中,假如一个软件是给许多客户运用的,那么让每一个用户都进行正式的接收测试是不切实际的。因此软件厂商经常进行这样的测试:一种测试是由软件的最终用户在一个或多个用户场所进行,开发者通常不会在场,用户记录错误和问题并报告给开发者,这种测试叫_____;另一种测试由一个用户在开发场所,用户在开发者的“指导”下进行,开发者负责记录错误和问题,这种测试叫____。(13)是指计算机软件的开发和维护过程中所遇到的一系列严峻问题。(14)从理论上说,只用依次结构、、三种基本限制结构就可以实现任何单入口单出口的程序。(15)通常,把一个软件从定义、开发、、直到最终被废弃所阅历的漫长时期称为。(16)造成软件危机的主要缘由是。A.用户运用不当B.软件本身特点C.硬件不行靠D.对软件的错误相识E.缺乏好的开发方法和手段三、阅读下面说明,画出系统的第0层和第1层的数据流图。1、某公司工资和考勤管理系统的功能描述:系统依据考勤管理员和人力资源部提交的考勤统计表和员工业绩表更新员工基本信息文件;系统每月底向公司总经理办公室提交部门消耗表和员工消耗表,并接收公司总经理办公室下发的部门嘉奖/惩处清单;系统要随时接收人力资源部提交的员工流淌登记表,随时向其输出公司考勤登记表,并更新员工基本信息文件。考勤子系统首先处理员工的考勤状况,然后输出员工考勤通知单给工资处理子系统处理。2、某校准备开发一个学生成果管理系统。在该系统中,教务人员录入学生信息、课程信息和成果信息,学生可以随时查询自己所选课程的成果。由于学生成果属于敏感信息,系统必需供应必要的平安措施以防非法存取。请画出该系统的三层数据流图。3、一个考务处理系统的要求如下,试画出该系统的数据流图。

(1)对考生送来的报名表进行检查;

(2)对合格的报名表编好准考证号码后将准考证送给考生,并将汇总后的考生名单送给阅卷站;

(3)对阅卷站送来的成果表进行检查,并依据考试中心指定的合格标准审定合格者;

(4)填写考生通知单(内容包含考试成果及合格∕不合格标记),送给考生;

(5)按地区、年龄、文化程度、职业、考试级别等进行成果分类统计及试题难度分析,产生统计分析表。四、面对对象1、依据下面描述,画出相应的用例图。在医生的办公室里,接待员、护士和医生运用病人记录和支配支配系统。当病人第一次来这里看病时,接待员运用该系统来输入病人信息,并且支配全部的预约。护士运用系统来跟踪病人每次看病的结果并输入护理病人的信息,如医疗和诊断。护士也可以访问这些信息以打印病人诊断结果或病人看病历史。医生主要用这个系统来查看病人的病史,间或也输入病人医疗信息,但通常让护士输入这些信息。2、填空题

(1)在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间

关联关系。

(2)类A的一个操作调用类B的一个操作,且这两个类之间不存在其他关系,那么类A和类B之间是依靠关系。3)接口及其实现类或构件之间是

实现关系。

4)一个汽车有四个轮子,那么类"汽车"和"轮子"之间的关系是聚合关系。

5)学生和探讨生之间是

泛化关系。3、在系统开发过程中为什么须要建立模型?在系统开发过程中,建立模型的一个重要缘由在于描述系统的困难性。信息系统特殊困难,而且系统的某些部分难以明白。系统各个部分的模型有助于问题的简化,并能够使分析人员的精力一次只集中在系统的几个方面上。同时,分析人员须要收集和处理大量的信息,模型供应了以一种简洁理解的形式为后期运用存储信息的方法。

建立模型的另一个主要缘由是便于沟通。开发人员可以运用模型探讨和沟通系统的设计方案,用户可以从模型中更好地理解新系统所能供应的各种可能的功能,因此,模型在支持小组人员之间和和用户的沟通过程中起着重要的作用。

最终,模型为以后的软件维护和升级供应了文档。

由于系统的困难性,须要建立多个模型来涵盖微小环节信息,还须要运用许多不同类型的模型在不同的微小环节由于系统的困难性,须要建立多个模型来涵盖微小环节信息,还须要运用许多不同类型的模型在不同的微小环节层次(或不同抽象层次)上表现系统,既包括在高层次上对系统的概括,也包括针对系统某一方面的微小环节描述。

4、和传统的结构化方法相比,面对对象开发方法具有什么优点?面对对象方法和传统的软件开发方法相比,具有许多显著的优点,其主要优点如下:

(1)依据人类的自然思维方式,面对客观世界建立软件系统模型,有利于对问题域和系统责任的理解,有利于人员沟通。

(2)在整个开发过程中接受统一的概念和模型表示,填平了语言之间的鸿沟,使得开发活动之间平滑过渡。

(3)对象所具有的封装性和信息隐藏等特性,使其简洁实现软件复用。对象类可以派生出新类,类可以产生实例对象,从而实现了对象类的数据结构和操作代码的软构件的复用。另外,面对对象程序设计语言的开发环境一般预定义了系统动态连接库,供应大量公用程序代码,避开重复编写,提高了开发效率和质量。

(4)在面对对象的方法中,系统由对象构成,对象是一个包含属性和操作两方面的独立单元,对象之间通过消息联系。这样的系统一旦出错,简洁定位和修改,系统的可维护性好。五、软件维护为什么软件须要维护?简述软件维护的过程。为什么说软件维护是一项困难的工作?改正性维护和排错(调试)是否是一回事?为什么?什么是软件再工程?软件再工程的意义是什么?1、在软件开发完成交付用户运用后,为了保证软件在一个相当长的时期能够正常运行,就须要对软件进行维护。

软件维护的类型有4种:改正性维护、适应性维护、完善性维护和预防性维护。

(1)改正性维护是要改正在特定的运用条件下暴露出来的一些潜在程序错误或设计缺陷;

(2)适应性维护是要在软件运用过程中数据环境发生变更或处理环境发生变更时修改软件以适应这种变更;

(3)完善性维护是在用户和数据处理人员运用软件过程中提出改进现有功能,增加新的功能,以及改善总体性能的要求后,修改软件以把这些要求纳入到软件之中;

(4)预防性维护是为了提高软件的可维护性、牢靠性等,事先接受先进的软件工程方法对须要维护的软件或软件中的某一部分(重新)进行设计、编制和测试,为以后进一步改进软件打下良好基础。

软件维护的过程如图所示。首先是确认维护要求,这须要维护人员和用户反复协商,弄清错误概况以及对业务的影响大小,以及用户希望做什么样的修改,并把这些状况存入故障数据库。然后由维护组织管理员确认维护类型,依据不同的维护类型实施不同的维护过程。

(1)对于改正性维护申请,从评价错误的严峻性起先。假如存在严峻的错误,则必需支配人员,在系统监督员的指导下,进行问题分析,找寻错误发生的缘由,进行"救火"性的紧急维护;对于不严峻的错误,可依据任务、机时状况、视轻重缓急,进行排队,统一支配时间。

(2)对于适应性维护和完善性维护申请,须要先确定每项申请的优先次序。若某项申请的优先级特殊高,就可立刻起先维护工作,否则,维护申请和其它的开发工作一样,进行排队,统一支配时间。

(3)并不是全部的完善性维护申请都必需担当,因为进行完善性维护等于是做二次开发,工作量很大,所以须要依据商业须要、可利用资源的状况、目前和将来软件的发展方向、以及其它的考虑,确定是否担当。

尽管维护申请的类型不同,但都要进行同样的技术工作。这些工作包括:修改软件需求说明、修改软件设计、设计评审、对源程序做必要的修改、单元测试、集成测试(回来测试)、确认测试、软件配置评审等。在每次软件维护任务完成后,最好进行一次状况评审,对以下问题进行总结:

§在目前状况下,设计、编码、测试中的哪一方面可以改进?

§哪些维护资源应当有但没有?

§工作中主要的或次要的障碍是什么?

§从维护申请的类型来看是否应当有预防性维护?

状况评审对将来的维护工作如何进行会产生重要的影响,并可为软件机构的有效管理供应重要的反馈信息。

2、软件维护是一件特殊困难的工作,由于软件需求分析和开发方法产生软件的缺陷,加上软件开发过程中没有严格而又科学的管理和规划,便会引起软件运行时的维护困难。

软件维护不是一件吸引人的工作,由于维护工作的困难性,维护经常遭受挫折,而且很难出成果,所以高水平的程序员自然不愿主动去做,而公司也舍不得让高水平的程序员去做。

软件维护工作的困难主要表现在以下几个方面:

(1)读懂别人的程序是很困难的,而文档的不足更增加了这种难度。一般开发人员都有这样的体会,修改别人的程序还不如自己重新编写程序。

(2)文档的不一样性是软件维护困难的又一个因素,主要表现在各种文档之间的不一样以及文档和程序之间的不一样性,从而导致维护人员不知所措,不知怎样进行修改。这种不一样性是由于开发过程中文档管理不严造成的,开发中经常会出现修改程序而忘了修改相关的文档,或者某一个文档修改了,却没有修改和之相关的其他文档等现象,解决文档不一样性的方法就是要加强开发工作中文档的版本管理。

(3)软件开发和软件维护在人员和时间上存在差异。假如软件维护工作是由该软件的开发人员完成,则维护工作相对比较简洁,因为这些人员熟悉软件的功能和结构等。但是,通常开发人员和维护人员是不同的,况且维护阶段持续时间很长,可能是10~20年的时间,原来的开发工具、方法和技术和当前有很大的差异,这也造成了维护的困难。

(4)软件维护不是一件吸引人的工作。由于维护工作的困难性,维护经常遭受挫折,而且很难出成果,所以高水平的程序员自然不愿主动去做,而公司也舍不得让高水平的程序员去做。

3、改错性维护和"排错(调试)"不是一个概念。

(1)调试是作为测试的后续工作而出现的,在测试发觉软件中的错误之后,开发人员通过调试进一步诊断和改正程序中潜在的错误;在软件交付运用后,由于开发时测试的不彻底、不完全,必定会有一部分隐藏的错误被带到运行阶段来,这些隐藏下来的错误在某些特定的运用环境下就会暴露出来。改正性维护是为了识别和订正软件错误、改正软件性能上的缺陷、解除实施中的误运用所进行的诊断和改正错误的过程。

(2)调试在程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论