您的位置:首页 > 其它

软件工程第五次作业 作业范围: 第一章至第十三章(复习)

2020-06-06 07:44 309 查看

作业次数: 软件工程第五次作业
作业范围: 第一章至第十三章(复习)
第一题:名词解释
1.极限编程 (Extreme programming)。
答:把好的开发实践运用到极致,是一种典型的开发方式。

2.状态转换图。
答:状态转换图(简称为状态图)通过描绘系统状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。因此,可以用状态图建立软件系统的行为模型。

3.软件生命周期(Software Life Cycle,SLC)。
答:由软件定义,软件开发和运行和维护3个时期组成,每个时期又进一步划分成若干个阶段。

4.问题域(Problem Domain)。
答:面向对象方法学的要点面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。

5.PAD图。
答:PAD是问题分析图(problem analysis diagram)的英文缩写,它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。

6.实体-关联图(Entity Relationship Diagram)。
答:包含3种相互关联的信息:数据对象,数据对象的属性和数据对象间的联系。

7.软件危机(Software Crisis)。
答:软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。

8.软件质量保证(Software Quality)。
答:软件质量保证(software quality assurance, SQA)的措施主要有:基于非执行的测试(也称为复审或评审),基于执行的测试(即以前讲过的软件测试)和程序正确性证明。

9.IPO图。
答:IPO图是输入、处理、输出图的简称,它能够方便地描绘输入数据、对数据的处理和输出数据之间的关系,可以用来描述数据流图中处理框的功能,也可以描述程序模块的功能或实现算法。

10.面向对象的高内聚低耦合。
答:(1)耦合:一个软件结构内不同模块之间互连的紧密程度
(2)弱耦合:系统中某一部分的变化对其他部分的影响降到最低程度
(3)对象之间的耦合:交互耦合&继承耦合
(4)内聚衡量一个模块内各个元素彼此结合的紧密程度
(5)在设计时应该力求做到高内聚
(6)面向对象设计的3种内聚: 服务内聚、类内聚、一般\特殊内聚

11.数据流图 (DFD) 。
答:DFD是一种图形化技术, 它描绘信息流和数据从输入移动到输出的过程中所经受的变换。

12.功能点技术(Function Point) 。
答:依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。这种方法用功能点(FP)为单位度量软件规模。

13.功能模型。
答:功能模型表示变化的系统的“功能”性质,它指明系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。
功能模型由一组数据流图组成。建立功能模型有助于软件开发人员更深入地理解问题域,改进和完善自己的设计。

14.数据规范化。
答:软件系统经常使用各种长期保存的信息,这些信息通常以一定的方式组织并存储在数据库或文件中,为减少数据冗余,避免出现插入异常或删除异常,简化数据修改的过程, 通常需要把数据结构规范化。

15.软件工程方法学。
答:软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。软件过程是软件工程方法学的3个重要组成部分之一。

16.软件质量。
答:软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征一致的程度。

17.敏捷过程。
答:为了使软件开发团队具有高效工作和快速响应变化的能力。

18.软件生命周期。
答:由软件定义,软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。

19.工程网络图。
答:工程网络是制定进度计划时另一种常用的图形工具,它同样能描绘任务分解情况以及每项作业的开始时间和结束时间,此外,它还显式地描绘各个作业彼此间的依赖关系。因此,工程网络是系统分析和系统设计的强有力的工具。

20.动态联编。
答:虚函数机制使得程序员能在一个类等级中使用相同函数的多个不同版本,在运行时刻才根据接收消息的对象所属于的类,决定到底执行哪个特定的版本,这称为动态联编,也叫滞后联编。

21.系统流程图。
答:系统流程图是概括地描绘物理系统的传统工具,它用图形符号以黑盒子形式描绘组成系统的每个具体部件。 系统流程图表达的是,数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此,它是物理数据流图而不是程序流程图。

22.HIPO图。
答:HIPO 图是“层次图加输入/处理/输出图”的英文缩写 。 它用层次图描绘软件结构,和层次图中每个方框相对应,有一张 IPO 图(或表)描绘这个方框代表的模块的处理过程。

23.软件重用。
答:重用也叫再用或复用,是指同一事物不作修改或稍加改动就多次重复使用。
广义地说,软件重用可分为以下3个层次:
(1)知识重用
(2)方法和标准的重用
(3)软件成分的重用
上述前两个重用层次属于知识工程研究的范畴,本节仅讨论软件成分重用问题。

24.数字字典(Digital Dictionary)。
答:数据字典是关于数据的信息的集合,也就是对数据流图中包含的元素的定义的集合。它的作用是在软件分析和设计的过程中提供关于数据的描述信息。

25.判定树。
答:判定树是判定表的变种,它也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。

26.过程设计语言(PDL)
答:过程设计语言(PDL)也称为伪码。是用正文形式表示数据和处理过程的设计工具。

27.代码的健壮性(Robust)。
答:所谓健壮性就是在硬件故障、输入的数据无效或操作错误等意外环境下,系统能做出适当响应的程度。

第二题: 说明典型的可重用软件成分,主要有哪十种?
答:(1)项目计划
(2)成本估计
(3)体系结构
(4)需求模型和规格说明
(5)设计结果
(6)源代码
(7)用户文档和技术文档
(8)用户界面
(9)数据
(10)测试用例
第三题: 说明软件维护的定义?以及通过描述软件交付使用后可能进行的4项活动?
答:概括地说,软件维护就是在软件已经交付用户使用之后,为了改正软 件中的错误或使软件满足新的需求而修改软件的过程。更具体地说,软件维护包括下述4项活动。
(1) 改正性维护
(2) 适应性维护
(3) 完善性维护
(4) 预防性维护
第四题:功能需求是对软件系统的一项基本需求,试问通常对软件系统有哪几方面的综合要求?
答:(1)功能需求
(2)接口需求
(3)性能需求
(4)约束
(5)可靠性和可用性需求
(6)逆向需求
(7)出错处理需求
(8)将来可能提出的要求

第五题: 试问试述面向对象的封装(encapsulation)、继承(inheritance)、多态性(polymorphism)和重载(overloading)?
答:封装是指把数据和实现操作的代码集中起来放在对象内部。

继承是子类自动地共享基类中定义的数据和方法的机制。

多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。

有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。
重载进一步提高了面向对象系统的灵活性和可读性。

第六题: 试绘出自动售货机系统的用例图并说明。

图中的方框代表系统,椭圆代表用例(售货、供货和取货款是自动售货机系统的典型用例),线条人代表行为者,它们之间的连线表示关系。

第七题: 说明在面向对象分析中的3个模型与5个层次?
答:模型:主要由对象模型、动态模型和功能模型组成。
层次:主题层、类与对象层、结构层、属性层、服务层

第八题: 使用Z语言描述的、最简单的形式化规格说明含有哪4个部分?
答:(1)给定的集合、数据类型及常数。
(2)状态定义。
(3)初始状态。
(4)操作。

第九题: 请说明模块独立性得重要性?
对象内部各种元素彼此结合得很紧密,内聚性相当强。由于完成对象功能所需要的元素(数据和方法)基本上都被封装在对象内部,它与外界的联系自然就比较少,因此,对象之间的耦合通常比较松。

第十题: 验证软件需求的方法,至少必须哪4个不同角度验证软件需求的正确性?
答:
1.一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
2.完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
3.现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实的。
4. 有效性必须证明需求是正确有效的,确实能解决用户面对的问题。

第十一题: 请试描绘一家计算机公司全部产品的数据结构,用层次方框图和Warnier图表示。

第十二题: 请说明设计人机界面设计必须重视那些方面?
答:1.系统响应时间。
2.用户帮助设施。
3.出错信息处理。
4.命令交互。

第十三题: 请说明面向对象语言的优点有哪些?
答:1.一致的表示方法
2.可重用性
3.可维护性

第十四题: 预防性维护实质上是软件再工程。请簡述典型的软件再工程过程模型定义了哪六类活动?
答:1.库存目录分析
2.文档重构
3.逆向工程
4.代码重构
5.数据重构
6.正向工程

第十五题: 请简述面向对象方法具有哪4个要点? 以及面向对象的方法学可以用概括的方程式?
答:(1)面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。
(2)把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。
(3)按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。
(4)对象彼此之间仅能通过传递消息互相联系。
方程式OO=objects+classes+Inheritance+communication with messages

第十六题: 源程序代码的逻辑简明清晰、易读易懂是好程序的一个重要标准,为了做到这一点,请简述应该遵循那些编码风格规则?
答:1.程序内部的文档
2.数据说明
3.语句构造
4.输入输出
5.效率

第十七题: 请简易说明何谓单元测试、集成测试、确认测试、白盒测试技术和黑盒测试技术?
答:单元测试:集中检测软件设计的最小单元——模块。单元测试和编码属于软件过程的同一个阶段。在源程序代码通过编译程序的语法检查后,可以用详细设计描述作指南,对重要的执行通路进行测试,以便发现模块内部的错误。可以应用人工测试和计算机测试这样两种不同类型的测试方法,完成单元测试工作。

集成测试是测试和组装软件的系统化技术。

确认测试也称为验收测试,它的目标是验证软件的有效性。通常,验证指的是保证软件正确地实现了某个特定要求的一系列活动;确认指的是为了保证软件确实满足了用户需求而进行的一系列活动。

白盒测试(又称结构测试)是把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。

黑盒测试(又称功能测试)把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。

第十八题: 请问类与类之间通常有哪四种关系?分别简述之。
答: 1.关联
关联表示两个类的对象之间存在某种语义上的联系。
2.聚集
聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。使用的“包含”、“组成”、“分为……部分”等字句,意味着存在聚集关系。有共享聚集和组合聚集两种特殊的聚集关系。
3.泛化
UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息。
4.依赖和细化
依赖关系描述两个模型元素(类、用例等)之间的语义连接关系: 其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。

第十九题: 请说明设计黑盒测试方案的技术主要有等价划分、边界值分析和错误推测是什么?
答: 等价划分把程序的输入域划分成若干个数据类,据此导出测试用例。等价划分法力图设计出能发现若干类程序错误的测试用例,从而减少必须设计的测试用例的数目。使用等价划分法设计测试方案首先需要划分输入数据的等价类,为此需要研究程序的功能说明,从而确定输入数据的有效等价类和无效等价类。

处理边界情况时程序最容易发生错误。例如,许多程序错误出现在下标、纯量、数据结构和循环等等的边界附近。因此,设计使程序运行在边界情况附近的测试方案,暴露出程序错误的可能性更大一些。

使用边界值分析方法设计测试方案首先应该确定边界情况,通常输入等价类和输出等价类的边界。选取的测试数据应该刚好等于、刚刚小于和刚刚大于边界值

错误推测法在很大程度上靠直觉和经验进行。它的基本想法是列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。

应该仔细分析程序规格说明书,注意找出其中遗漏或省略的部分,以便设计相应的测试方案,检测程序员对这些部分的处理是否正确。

第二十题: 请简述怎样满足用户对老程序的维护要求?
答:(1)反复多次地做修改程序的尝试,与不可见的设计及源代码“顽强战斗”,以实现所要求的修改。
(2)通过仔细分析程序尽可能多地掌握程序的内部工作细节,以便更有效地修改它。
(3)在深入理解原有设计的基础上,用软件工程方法重新设计、重新编码和测试那些需要变更的软件部分。
(4)以软件工程方法学为指导,对程序全部重新设计、重新编码和测试,为此可以使用CASE工具(逆向工程和再工程工具)来帮助理解原有的设计。

第二十一题: 请简述说明面向对象方法学的优点有哪些?
答:1.与人类习惯的思维方法一致
2.稳定性好
3.可重用性好
4.较易开发大型软件产品
5.可维护性好

第二十二题: 说明软件可靠性和软件可用性之间的主要差别?
答:可靠性和可用性之间的主要差别是,可靠性意味着在0到t这段时间间隔内系统没有失效,而可用性只意味着在时刻t,系统是正常运行的。

第二十三题: 请说明在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?
答:可行性研究的目的是,用最小的代价在尽可能短的时间内研究并确定客户提出的问题是否有行得通的解决办法。
必须分析几种主要的候选解法的利弊,从而判断原定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。
对每种可能的解决方案都应该仔细研究它的可行性,通常,至少从下述三方面研究每种解决方案的可行性。
(1)技术可行性:使用现有的技术能实现这个系统吗?
(2)经济可行性:这个系统的经济效益能超过它的开发成本吗?
(3)操作可行性:这个系统的操作方式在该客户组织内行得通吗?

第二十四题: 请简述说明面向对象分析的基本过程中,在概念上可以认为面向对象分析大体上按照的顺序进行是那些?
答:1.面向对象分析过程从分析陈述用户需求的文件开始。
2.接下来,系统分析员应该深入理解用户需求,抽象出目标系统的本质属性,并用模型准确地表示出来。
3.在面向对象建模的过程中,系统分析员必须认真向领域专家学习。
4.在面向对象建模的过程中,还应该仔细研究以前针对相同的或类似的问题域进行面向对象分析所得到的结果(可重用)。

第二十五题: 试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范围。
答:瀑布模型:
被广泛采用的生命周期模型,现在它仍然是软件工程中应用得最广泛的过程模型。
优点:
可强迫开发人员采用规范的方法(例如,结构化技术);
严格地规定了每个阶段必须提交的文档;
要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

快速原型模型
它所能完成的功能往往是最终产品能完成的功能的一个子集。
优点:
1.在开发过程的后续阶段不会因为发现了规格说明文档的错误而进行较大的返工。
2. 在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。

增量模型
使用原型及其他方法来尽量降低风险。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。
优点:
1.能在较短时间内向用户提交可完成部分工作的产品。
2.逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。

第二十六题: 说明什么是软件质量?试叙述它与软件可靠性的关系。
答:软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。更具体地说,软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。

第二十七题: 请问何谓Petri网和有穷状态机的概念?并个别举例和评价。
答:1、有穷状态机:包括下述5个部分:状态集J、输入集K、由当前状态和当前输入确定下一个状态(次态)的转换函数T、初始态S和终态集F。
例子:
一个保险箱上装了一个复合锁,锁有3个位置,分别标记为1、2、3,转盘可向左(L)或向右®转动。这样,在任意时刻转盘都有6种可能的运动,即1L、1R、2L、2R、3L和3R。保险箱的组合密码是1L、3R、2L,转盘的任何其他运动都将引起报警。

2、用于确定系统中隐含的定时问题的一种有效技术是Petri网
例子:
现在把Petri网应用于上一节讨论过的电梯问题。当用Petri网表示电梯系统的规格说明时,每个楼层用一个位置Ff代表(1≤f≤m),在Petri网中电梯是用一个权标代表的。在位置Ff上有权标,表示在楼层f上有电梯。

第二十八题: 请问典型的总体设计步骤有哪些?
1.设想供选择的方案
在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求从中选出最佳方案。
需求分析阶段得出的数据流图是总体设计的极好的出发点。
设想供选择的方案的一种常用的方法是,设想把数据流图中的处理分组的各种可能的方法,抛弃在技术上行不通的分组方法(例如,组内不同处理的执行时间不相容),余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统。

2.选取合理的方案
应该从前一步得到的一系列供选择的方案中选取若干个合理的方案,通常至少选取低成本、中等成本和高成本的3种方案。在判断哪些方案合理时应该考虑在问题定义和可行性研究阶段确定的工程规模和目标,有时可能还需要进一步征求用户的意见。
对每个合理的方案,分析员都应该准备下列4份资料。
(1) 系统流程图。
(2) 组成系统的物理元素清单。
(3) 成本/效益分析。
(4) 实现这个系统的进度计划。

3.推荐最佳方案
用户和有关的技术专家应该认真审查分析员所推荐的最佳系统,如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人进一步审批。在使用部门的负责人也接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶段——结构设计。

4.功能分解
为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件(或数据库)。对程序(特别是复杂的大型程序)的设计,通常分为两个阶段完成:首先进行结构设计,然后进行过程设计。
为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。

5.设计软件结构
通常程序中的一个模块完成一个适当的子功能。应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,完成程序的一个子功能,最下层的模块完成最具体的功能。

6.设计数据库
对于需要使用数据库的那些应用系统,软件工程师应该在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据库。

7.制定测试计划
在软件开发的早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。第7章具体讨论

8.书写文档
应该用正式的文档记录总体设计的结果,在这个阶段应该完成的文档通常有下述几种。
(1)系统说明
(2)用户手册
(3)测试计划包括测试策略,测试方案,预期的测试结果,测试进度计划等
(4)详细的实现计划
(5)数据库设计结果

9.审查和复审
最后应该对总体设计的结果进行严格的技术审查,在技术审查通过之后再由客户从管理角度进行复审。

第二十九题: 用面向对象方法开发软件,通常需要建立3种形式的模型,分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。试问以上模型需要产生出那些图?
答:1.功能模型中的处理(或用例)对应于对象模型中的类所提供的服务。通常,复杂的处理(或用例)对应于复杂对象提供的服务,简单的处理(或用例)对应于更基本的对象提供的服务。有时一个处理(或用例)对应多个服务,也有一个服务对应多个处理(或用例)的时候。

2.数据流图中的数据存储,以及数据的源点/终点,通常是对象模型中的对象。

3.数据流图中的数据流,往往是对象模型中对象的属性值,也可能是整个对象。

4.用例图中的行为者,可能是对象模型中的对象。

5.功能模型中的处理(或用例)可能产生动态模型中的事件。

6.对象模型描述了数据流图中的数据流、数据存储以及数据源点/终点的结构。

第三十题: 请说明在什么情况下应该使用形式化说明技术?说明使用形式化说明技术应遵守哪些规则?
答:为了克服非形式化方法的缺点,人们把数学引入软件开发过程,创造了基于数学的形式化方法。
准则:
(1)应该选用适当的表示方法。
(2)应该形式化,但不要过分形式化。
(3)应该估算成本。
(4)应该有形式化方法顾问随时提供咨询。
(5)不应该放弃传统的开发方法。
(6)应该建立详尽的文档。
(7)不应该放弃质量标准。
(8)不应该盲目依赖形式化方法。
(9)应该测试、测试再测试。
(10)应该重用。

第三十一题: 请简述决定软件可维护性的因素主要有哪五个?
答:1.可理解性
2.可测试性
3.可修改性
4.可移植性
5.可重用性

第三十二题: 请简述说明面向对象设计(OOD)的启发原则有哪些?
答:(1) 以数据为中心。操作围绕对其数据所需要做的处理来设置,不设置与这些数据无关的操作,而且操作的结果往往与当时所处的状态(数据的值)有关。
(2) 对象是主动的。它是进行处理的主体。不能从外部直接加工它的私有数据,必须通过它的公有接口向对象发消息,请求它执行它的某个操作,处理它的私有数据。
(3) 实现了数据封装。对象好像是一只黑盒子,它的私有数据完全被封装在盒子内部,对外是隐藏的、不可见的,对私有数据的访问或处理只能通过公有的操作进行。
(4) 本质上具有并行性。对象是描述其内部状态的数据及可以对这些数据施加的全部操作的集合。不同对象各自独立地处理自身的数据,彼此通过发消息传递信息完成通信。
(5) 模块独立性好。对象内部各种元素彼此结合得很紧密,内聚性相当强。由于完成对象功能所需要的元素(数据和方法)基本上都被封装在对象内部,它与外界的联系自然就比较少,因此,对象之间的耦合通常比较松。

第三十三题: 根据历史数据可以做出如下的假设 :
对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=4080e0.28(Y-1960)
存储器的价格按下面公式描述的趋势逐年下降:P1=0.3×0.72Y-1974(美分/位)
如果计算机字长为16位,则存储器价格下降的趋势为:P2=0.048×0.72Y-1974(美元/字)
在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。
基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算:

(1)在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少?
4080e0.28*25;0.76032美元

(2)假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。
3801.16美元

(3)假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。

第三十四题: 请简述说明软件的可维护性与哪些因素有关?在软件开发过程中应该采取哪些措施来提高软件产品的可维护?
答:因素:
1.可理解性
2.可测试性
3.可修改性
4.可移植性
5.可重用性

  • 可维护性是所有软件都应该具备的基本特点,必须在开发阶段保证软件具有8.4.1节中提到的那些可维护因素。

  • 在完成了每项维护工作之后,都应该对软件维护本身进行仔细认真的复审。 不能准确反映软件当前状态的设计文档可能比完全没有文档更坏。

  • 如果对软件的可执行部分的修改没有及时反映在用户文档中,则必然会使用户因为受挫折而产生不满。

  • 在软件再次交付使用之前,对软件配置进行严格的复审,则可大大减少文档的问题。

  • 在需求分析阶段的复审过程中,应该对将来要改进的部分和可能会修改的部分加以注意并指明;应该讨论软件的可移植性问题,并且考虑可能影响软件维护的系统界面。

  • 在正式的和非正式的设计复审期间,应该从容易修改、模块化和功能独立的目标出发,评价软件的结构和过程;设计中应该对将来可能修改的部分预作准备。

  • 代码复审应该强调编码风格和内部说明文档这两个影响可维护性的因素。

  • 在设计和编码过程中应该尽量使用可重用的软件构件,如果需要开发新的构件,也应该注意提高构件的可重用性。

  • 在测试结束时进行最正式的可维护性复审,这个复审称为配置复审。配置复审的目的是保证软件配置的所有成分是完整的、一致的和可理解的,而且为了便于修改和管理已经编目归档了。

    第三十五题: 请说明在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?
    答:因为并非任何问题都有简单明显的解决办法,事实上,许多问题不可能在预定的系统规模或时间期限之内解决;如果问题没有可行的解,那么花费在这项工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费;可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
    应该从以下方面研究:
    (1)技术可行性使用现有的技术能实现这个系统吗?
    (2)经济可行性这个系统的经济效益能超过它的开发成本吗?
    (3)操作可行性系统的操作方式在这个用户组织内行得通吗?

第三十六题: 请简述说明模块耦合和模块内聚的类型和关系。
答:模块耦合分为数据耦合、控制耦合、特征耦合、公共环境耦合和内容耦合
模块内聚分为三大类低内聚、中内聚和高内聚
关系:重要的是设计时高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度并且降低模块间的耦合程度,从而获得较高的模块独立性。

第三十七题: 请说明未来毕业设计论文的内容若依照面向对向(OO)范式开发软件需要呈现哪些具体内容以及对应的图有哪些种类?
答:内容:
1.类
2.实例
3.消息
4.方法
5.属性
6.封装
7.继承
8.多态性
9.重载
图:数据流程图,结构图,类图,UML图

第三十八题: 请说明未来毕业设计论文的内容若依照结构化范式开发软件需要呈现哪些具体内容以及对应的图有哪些种类?
答:1. 问题定义 2. 可行性研究 3.需求分析 4.总体设计5. 详细设计6. 编码和单元测试 7.人机界面 8.数据库设计

E-R图、数据流图、盒图、用例图、系统架构图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: