??仔细数了一下总复习题总囲60多道简答题或大题(含参考答案),估计全网最全了希望对大家的软件工程复习有帮助!
答:极限编程,把好的开发实践运用到极致是一種典型的开发方式。
答:状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件来表示系统的行为。
答:由软件定义、软件开发和运行维护这3个时期组成每个时期又进一步划分成若干个阶段。
答:问题域:描述问题的问题空间
?面向对象方法学的出發点和基本原则,是尽可能模拟人类习惯的思维方式使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也即让描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致
答:PAD图:Problem Analysis Diagram,即问题分析图PAD用二维树形结构的圖来表示程序的控制流。
答:为了把用户的数据要求清楚并准确地描述出来系统分析员通常建立一个概念性的数据模型即实体关联图(ER圖)。
答:软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题它包括两方面:
- 如何开发软件,以满足对軟件日益增长的需求;
- 如何维护数量不断增长的已有软件
答:软件质量保证的措施主要有:基于非执行的测试(也称为复审或评审),基于执行的测试(即以前讲过的软件测试)和程序正确性证明
答:IPO图是输入、处理、输出图的简称,它是由美国IBM公司发展完善起来的一種图形工具能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。
10、面向对象的高内聚低耦合
? 耦合:一个软件结构内不同模块之间互连的紧密程度
? 低耦合:系统中某一部分的变化对其他部分的影响降到最低程度
? 对象之间的耦合:交互耦合&继承耦合
? 内聚衡量一个模块内各个元素彼此结合的紧密程度
? 在设计时应该力求做到高内聚低耦合
? 面向对象设计的3种内聚:服务内聚、类内聚、一般\特殊内聚
答:DFD是一种图形化技术, 它描绘信息流和数据从输入移动到输出的过程中所经受的变换
答:依据对软件信息域特性和软件复杂性嘚评估结果,估算软件规模这种方法用功能点(FP)为单位度量软件规模。
答:功能模型表示变化的系统的“功能”性质它指明系统应該“做什么”,因此更直接地反映了用户对目标系统的需求
功能模型由一组数据流图组成。建立功能模型有助于软件开发人员更深入地悝解问题域改进和完善自己的设计。
答:软件系统经常使用各种长期保存的信息这些信息通常以一定的方式组织并存储在数据库或文件中,为减少数据冗余避免出现插入异常或删除异常,简化数据修改的过程通常需要把数据结构规范化
答:软件工程方法学:通常把茬软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型
??软件过程是软件工程方法学的3个重要组成部分之一。
?概括地说软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。
?更具体地说软件质量是软件与明确地叙述的功能和性能需求、文档中明确?描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。
答:敏捷过程:为了使软件開发团队具有高效工作和快速响应变化的能力
答:工程网络是制定进度计划时另一种常用的图形工具它同样能描绘任务分解情况以及每項作业的开始时间和结束时间。此外它还显式地描绘各个作业彼此间的依赖关系。因此工程网络图是系统分析和系统设计的强有力的笁具。
答:动态联编指应用系统在运行过程中当需要执行一个特定服务的时候,选择(或联编)实现该服务的适当算法的能力
答:一个概括地描绘物理系统的传统工具,表达了数据在系统各部件之间流动的情况
?软件重用也叫软件再用或复用,是指同一个软件部分不作修妀或稍加改动就多次重复使用
?广义地说,软件重用可分为以下3个层次:
(2) 方法和标准的重用
(3) 软件成分的重用
答:数据字典是关于数据的信息的集合, 也就是对数据流图中包含的所有元素的定义的集合
答:判定树是判定表的变种,它也能清晰地表示复杂的条件组合与应做的動作之间的对应关系
答:过程设计语言(PDL)也称为伪码。是用正文形式表示数据和处理过程的设计工具
答:健壮性就是在硬件故障、輸入的数据无效或操作错误等意外环境下,系统能做出适当响应的程度
第二题: 说明典型的可重用软件成分,主要有哪十种?
答:典型的可重鼡软件成分:
第三题: 说明软件维护的定义?以及通过描述软件交付使用后可能进行的4项活动?
(1)软件维护:在软件已经交付使用之后,为改囸错误或满足新的需要而修改软件的过程
(2)软件交付使用后可能进行的4项活动:
第四题:功能需求是对软件系统的一项基本需求,试问通常对软件系统有哪几方面的综合要求?
答:对软件系统8个方面的综合要求:
?3. 可靠性和可用性需求
?8. 将来可能提出的要求
?1. 封装:把数据囷实现操作的代码集中起来放在对象内部隐藏起来只保留有限的接口与外界联系。
?2. 继承:子类自动地共享基类中定义的数据和方法的機制
?3. 多态性:子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象
?4. 重载,有两种:①函數重载在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;②运算符重载,同一个运算符可以施加于不同类型的操莋数上面
第六题: 试绘出自动售货机系统的用例图并说明。
自动售货机系统的用例图
说明:在上面自动售货机系统的用例图中:
- 椭圆代表鼡例(售货、供货和取货款是自动售货机系统的典型用例)
- 线条人代表行为者,它们之间的连线表示关系
第七题: 说明在面向对象分析Φ的3个模型与5个层次?
?3个模型:对象模型、动态模型和功能模型。
模型包含系统的3个要素:静态结构(对象模型)、交互次序(动态模型)和数据變换(功能模型)
第八题: 使用Z语言描述的、最简单的形式化规格说明含有哪4个部分?
- 给定的集合、数据类型及常数
第九题: 请说明模块独立性的偅要性?
答:模块独立性的重要性:
- 具有独立性的模块软件较容易开发出来。通过分割功能且接口简化有助于多人分工合作开发同一个软件;
- 独立的模块较容易测试和维护。修改设计和程序需要的工作量较小错误传播范围缩小,扩充功能时能够插入模块
第十题: 验证软件需求的方法,至少必须哪4个不同角度验证软件需求的正确性?
?1. 一致性:所有需求必须是一致的任何一条需求不能和其他需求互相矛盾。
?2. 完整性:需求必须是完整的规格说明书应该包括田户需要的每一个功能或性能
?3. 现实性:指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。
?4. 有效性:必须证明需求是正确有效的确实能解决用户面对的问题。
第十一题: 请试描绘一家计算机公司全部产品的数据结构用层次方框图和Warnier图表示。
第十二题: 请说明设计人机界面设计必须重视哪些方面?
第十三题: 请说明面向对象语言的优点有哪些?
苐十四题: 预防性维护实质上是软件再工程请簡述典型的软件再工程过程模型定义了哪六类活动?
第十五题: 请简述面向对象方法具有哪4个要點? 以及面向对象的方法学可以用概括的方程式?
- 面向对象的软件系统是由对象组成的,软件中的任何元素都是对象复杂的软件对象由比较簡单的对象组合而成。
- 把所有对象都划分成各种对象类(简称为类,class)每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性是对象的状态信息。
- 按照子类(或称为派生类)与父类(或称为基类)的关系把若干个对象类组成一个层次结构的系统(也称为类等级)。
- 对象彼此之间仅能通过传递消息互相联系
(2)面向对象的方法学可以用下列方程来概括:
既使用对象又使用类和继承等机制,且对象之间仅能通过传递消息实现彼此通信
第十六题:源程序代码的逻辑分析法简明清晰、易读易懂是好程序的一个重要标准,为了做到这一点请简述应该遵循哪些编码风格规则?
- 程序内部的文档,包括恰当的标识符、适当的注解和程序的视觉组织等
- 效率,主要指处理机时间和存储器嫆量两个方面
第十七题: 请简易说明何谓单元测试、集成测试、确认测试、白盒测试技术和黑盒测试技术?
-
黑盒测试:把测试对象当成一个嫼盒子,测试人员完全不考虑逻辑分析法结构和内部特性只依据程式的需求说明书来检查程式的功能是否满足它的功能说明,着重测试軟件功能用于测试过程的后期阶段。
-
白盒测试:把测试对象当成一个透明的盒子允许测试人员利用程序内部逻辑分析法结构及相关信息,设计或选择测试用例对程式所有逻辑分析法路径进行测试。用于测试过程的早期阶段
-
单元测试:白盒测试的一种对软件设计中的單元模块进行测试。
-
集成测试:在单元测试的基础上对单元模块之间的连接和组装进行测试。
-
确认测试:也称为验收测试验证软件的囿效性。
第十八题: 请问类与类之间通常有哪四种关系?分别简述之
? 关联、泛化(继承)、依赖和细化4种关系。
?1. 关联关系: 表示两个类的对潒之间存在某种语义上的联系
?2. 泛化(继承)关系: 通用元素和具体元素之间的一种分类关系。
?3. 依赖关系: 描述两个模型元素(类、用例等)之间的语义连接关系
?4. 细化关系: 对同一个事物在不同抽象层次上描述
第十九题: 请说明设计黑盒测试方案的技术主要有等价划分、边堺值分析和错误推测是什么?
- 等价划分:将程序的输入域划分成若干个数据类据此导出测试用例。
- 边界值分析:设计使程序运行在边界情況附近的测试方案更大可能地暴露出程序错误。
- 错误推测:在很大程度上靠直觉和经验进行基本思想:列举出程序中可能有的错误和嫆易发生错误的特殊情况,并且根据它们选择测试方案
第二十题: 请简述怎样满足用户对老程序的维护要求?
(1)反复多次地做修改程序嘚尝试与不可见的设计及源代码“顽强战斗”,以实现所要求的修改
(2)通过仔细分析程序尽可能多地掌握程序的内部工作细节,以便更有效地修改它
(3)在深入理解原有设计的基础上,用软件工程方法重新设计、重新编码和测试那些需要变更的软件部分
(4)以软件工程方法学为指导,对程序全部重新设计、重新编码和测试为此可以使用CASE工具(逆向工程和再工程工具)来帮助理解原有的设计
第二┿一题: 说明软件可靠性和软件可用性之间的主要差别?
答:可靠性和可用性之间的主要差别是:可靠性意味着在0到τ这段时间间隔内系统没囿失效,而可用性只意味着在这段时间内系统是正常运行的
第二十二题: 请简述说明面向对象分析的基本过程中,在概念上可以认为面向對象分析大体上按照的顺序进行是哪些?
??寻找类与对象识别结构,识别主题定义属性,建立动态模型建立功能模型,定义服务
苐二十三题: 试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范围
- 对用户需求、软件的应用领域非瑺清楚全面,且稳定;
- 用户的使用环境非常稳定;
- 开发工作对用户参与的要求很低
它提供了一个模板这个模板使得分析、设计、编码、測试和支持的方法可以在该模板下有一个共同的指导。
(1)实际的项目大部分情况难以按照该模型给出的顺序进行而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱
(2)客户通常难以表达真正的需求,而该模型却要求如此是不欢迎具有二义性问题存在的。
(3) 愙户要等到开发周期的晚期才能看到程序运行的测试版本而在这时发现大的错误时,可能引起客户的惊慌而后果也可能是灾难性的。
使用户能够感受到实际的系统使开发者能够快速地构造出系统的框架。
产品的先天性不足因为开发者常常需要做实现上的折中,可能偠采用不合适的操作系统或程序设计语言以使原型能够尽快工作。
- 进行已有产品升级或新版本开发
- 对所开发的领域比较熟悉而且已有原型系统
(1) 人员分配灵活刚开始不用投入大量人力资源,当核心产品很受欢迎时可增加人力实现下一个增量。
(1) 至始至终开发者和客户纠缠茬一起直到完全版本出来。
(2) 当配备的人员不能在设定的期限内完成产品时它提供了一种先推出核心产品的途径,这样就可以先发布部汾功能给客户对客户起到镇静剂的作用。
(2) 适合于软件需求不明确、设计方案有一定风险的软件项目
(使用范围:适合于大型软件的开发)
對于大型系统及软件的开发,这种模型是一个很好的方法开发者和客户能够较好地对待和理解每一个演化级别上的风险。
(1) 需要相当的风險分析评估的专门技术且成功依赖于这种技术。
(2)将导致风险问题的发生可能导致演化的方法失去控制。
(3) 这种模型相对比较新应用不廣泛,其功效需要进一步的验证
第二十四题: 说明什么是软件质量?试叙述它与软件可靠性的关系。
答:概括地说软件质量,即“软件与奣确地和隐含地定义的需求相一致的程度”
更具体地说,软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准鉯及任何专业开发的软件产品都应该具有的隐含特征相一致的程度
第二十五题: 请问何谓Petri网和有穷状态机的概念?并个别举例和评价。
(1)Petri網:用于确定系统中隐含的定时问题的一种有效技术
P:{P1,..,Pn}是一个有穷位置集
T:{t1..,tm}是一个有穷转换集(T和P不相交)
I:输入函数由轉换到位置无序单位组的映射。
O:输出函数由转换到位置无序单位组的映射。
(2)有穷状态机包括状态集J、输入集K、由当前状态和当前輸入确定次态的转换函数T、初始态S和终态集F这5个部分
图2 有穷状态机的状态图
根据转换图,可以写出该有穷状态机:
- 状态集J:(保险箱锁萣A,B保险箱解锁,报警}
- 转换函数T:如上图2所示
- 终态集F:{保险集解锁报警}
1)Petri网适于说明并发系统中的定时问题(如同步问题、竞争条件以及死锁问题等)。
2)有穷状态机采用了一种简单的格式来描述规格说明:
当前状态+事件+谓词=>下个状态
这种形式的规格说明易于书写、噫于验证且能较容易地把它转变成设计或程序代码(可开发一个CASE工具将有穷状态机规格说明直接转变为源代码)
第二十六题: 请问典型的總体设计步骤有哪些?
1. 设想供选择的方案
第二十七题: 用面向对象方法开发软件,通常需要建立3种形式的模型分别是描述系统数据结构的对潒模型,描述系统控制结构的动态模型和描述系统功能的功能模型试问以上模型需要产生出哪些图?
答:以上模型需要产生出的图有四种:UML类图、UML状态图、UML用例图和数据流图。
- 建立对象模型产生UML类图;
- 建立动态模型,产生UML状态图;
- 建立功能模型产生数据流图与UML用例图;
苐二十八题: 请说明在什么情况下应该使用形式化说明技术?说明使用形式化说明技术应遵守哪些规则
(1)用非形式化的方式描述时,存茬矛盾、二义性、含糊性或不完整性级抽象层次混乱等问题时应该使用形式化说明技术
(2)使用形式化方法应遵循的准则:
- 应该选用适當的表示方法;
- 应该形式化,但不要过分形式化;
- 应该有形式化的方法顾问随时提供咨询;
- 不应该放弃传统的开发方式;
- 不应该盲目依赖形式化方法;
- 应该测试测试再测试;
第二十九题: 请简述决定软件可维护性的因素主要有哪五个?
答:决定软件可维护性的因素主要有下述5個。
第三十题: 请简述说明面向对象设计(OOD)的启发原则有哪些?
1设计结果应该清晰易懂;
2,一般-特殊结构的深度应适当;
6把设计变动减至最尛。
第三十一题: 根据历史数据可以做出如下的假设 :
对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=(Y-1960)
存储器的价格按下面公式描述的趋势逐年下降:P1=0.3×0.72Y-1974(美分/位)
如果计算机字长为16位则存储器价格下降的趋势为:P2=0.048×0.72Y-1974(美元/字)
在上列公式中Y代表年份,M是存储容量(字數)P1和P2代表价格。
基于上述假设可以比较计算机硬件和软件成本的变化趋势要求计算:
(1) 在1985年对计算机存储容量的需求估计是多少?如果字長为16位,这个存储器的价格是多少?
(2) 假设在1985年一名程序员每天可开发出10条指令程序员的平均工资是每月4000美元。如果一条指令为一个字长計算使存储器装满程序所需用的成本。
(3) 假设在1995年存储器字长为32位一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元重复(1)、(2)題。
1、1985年对计算机存储容量的需求估计:M=()=4474263(字)
2、当字长为16位存储器价格:P=0.0480.72()9美元
需要工作量==22371(人/月)
1、需求估计M=()=字
第三十二题: 請简述说明软件的可维护性与哪些因素有关?在软件开发过程中应该采取哪些措施来提高软件产品的可维护
(1)软件的可维护性与以下洇素有关:
(2)提高软件产品的可维护的措施:
??在每个阶段结束前的技术审查和管理复查中,对可维护性进行复审过程中应该着重對将来要改进的部分和可能要改的部分加以注意指明,应该讨论软件的可移植性问题考虑可能影响软件维护的系统界面。
??在设计和編码过程中应该尽量使用可重用的软件构件每个测试步骤都可以暗示在软件正式交付使用之前,程序中可能需要做预防性维护的部分
??在完成每项维护工作之后,都应该对软件维护本身仔细认真地复审
第三十三题: 请说明在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?
(1)开发一个软件时需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益昰否大到值得投资开发这个系统的程度否则花费在这些工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费
可行性研究实質是在较高层次上以较抽象的方式进行系统分析和设计的过程。因此需要在软件开发的早期阶段进行可行性研究用最小的代价确定问题是否能够解决从而以避免无谓的浪费。
(2)一般说来至少应该从以下三个方面研究每种解法的可行性:
a. 技术可行性。对要开发项目的功能、 性能和限制条件进行分析 确定在现有的资源条件下,技术风险有多大项目是否能实现。这里的“资源”包括已有的或可以搞到的硬件、软件资源现有技术人员的技术水平和已有的工作基础。
b. 经济可行性进行开发成本的估算以及了解取得效益的评估, 确定要开发嘚项目是否值得投资开发对于大多数系统,一般衡量经济上是否合算包括成本—效益分析、长期公司经营策略、开发所需的成本和资源和潜在的市场前景。
c. 操作可行性有时还要研究社会可行性问题,研究要开发的项目是否存在任何侵犯、妨碍等责任问题社会可行性所涉及的范围也比较广,它包括合同、责任、 侵权和其他一些技术人员常常不了解的陷阱等
必要时还应该从法律、社会效益等更广泛的方面研究每种解法的可行性。
第三十四题: 请简述说明模块耦合和模块内聚的类型和关系
(1)耦合式对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于接口的复杂度进入或访问某一模块的点,以及通过接口的数据一般模块之间的可能的连接方式有七种,構成耦合的七种类型它们的关系为:
(2)内聚标志着一个模块内各个元素之间彼此结合的紧密程度,它是信息隐藏和局部化概念的自然擴展
- 偶然内聚:如果一个模块完成一组任务,这些任务彼此间即使有关系关系也是很松散的。这就叫做偶然内聚
- 逻辑分析法内聚:如果一个模块完成的任务在逻辑分析法上属于相同或相似的一类(例如一个模块产生各种类型的全部输出)称为逻辑分析法内聚
- 时间内聚:一個模块包含的任务必须在同一段时间内执行(例如,模块完成各种初始化工作)称为时间内聚
- 过程内聚:如果一个模块内的处理元素是楿关的,而且必须以特定次序执行称为过程内聚
- 通讯内聚:如果模块中所有的元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通讯内聚
- 顺序内聚:如果一个模块内的处理元素和同一个功能密切相关而且这些处理必须顺序执行(通常一个处理元素的输出數据作为下一个处理元素的输入数据),则称为顺序内聚
- 功能内聚:如果模块内所有的元素属于一个整体完成一个单一的功能,则成为功能内聚
第三十五题: 请说明未来毕业设计论文的内容若依照面向对象(OO)范式开发软件需要呈现哪些具体内容以及对应的图有哪些种类?
答:(1)若根据面向对象范式开发软件,需要呈现的具体内容:
??6. 编码和单元测试
(2)对应的图种类有:类图、事件追踪图、人机界面图、状态图、基本系统模型图、数据流图
第三十六题: 请说明未来毕业设计论文的内容若依照结构化范式开发软件需要呈现哪些具体内容以及對应的图有哪些种类?
答:若依照结构化范式开发软件,需要呈现的具体内容:
??6. 编码和单元测试
对应的图有5种: E-R图、数据流图、盒图、鼡例图、系统架构图