东北大学计算机考研复试时软件工程的一些总结(二)

第三章 软件过程模型

3.1 传统“软件生命周期”理论是什么?它有什么缺点?
传统的软件工程理论常把这些过程中的活动视为“阶段”,它们被划分到软件开发的三个时期里,即软件定义时期(问题定义、可行性研究、需求分析)、软件开发时期(总体设计、详细设计、编码、单元测试、集成测试)和运行维护时期(每次维护的本质上都是一次简化的定义和开发过程)。
缺点是并未明确地包括保护性活动以及不能并发进行过程中的各项活动
3.2 什么是软件过程模型?为什么要对过程进行抽象表示?
软件过程模型是组织项目活动的一般方法,是对实际开发过程的抽象表示。
抽象表示进程可以有效地提高开发质量、加快开发进度、减少开发成本。
3.3 线性系列模型有哪些?演进系列模型有哪些?
线性系列模型有线性顺序模型、瀑布模型、RAD模型
演进系列模型有边建边改模型、增量模型、螺旋模型、RUP模型
3.4 线性顺序模型的缺点是什么?
线性顺序模型也称传统生命周期模型。缺点有:对项目作出“线性”过程的假设太过理想化,复杂过程简单化;各项活动不是并行的,所以项目中常常出现“阻塞状态”,造成巨大的人力浪费,拉长项目时间;开发方不能很好地与用户交互;需求在分析阶段无法完全获取。
3.5 瀑布模型的优点和缺点是什么?
优点:具有一定的反馈性质;严格地规定了每个阶段必须提交的交付物;每个阶段结束前,都必须有正式的审查。
缺点:开发方不能很好地与用户交互;反馈效果有限。
3.6 RAD模型中的“RAD”是什么意思?为什么说RAD模型是从线性顺序模型“泛化”出来的一个“高速”变种?RAD模型的优点和缺点是什么?它适合哪种项目?
RAD模型:快速应用开发(Rapid Application Development)
之所以称为“高速”,是因为该模型强调在很短的开发周期内,快速地完成软件开发。
优点:开发速度快;鼓励复用。
缺点:如果一个系统难以被适当地模块化,那么很难组织多个开发团队并行开发;如果项目早期不能完整地/正确地获取需求,那么很难按时完成开发任务;如果缺乏以往的类似项目经验,那么难以快速地设计系统;RAD不适合高技术风险的项目。
RAD模型适合应用在需求完整且明确、设计正确且清楚、模块化程度高、技术风险低、有过类似系统经验、有足够人力资源和需要在很短的开发周期内(如60-90天)完成的软件项目。
3.7 为什么说边建边改模型的缺点十分明显?
它否认了在项目实施之前需求分析和设计活动的重要性;无法控制项目时间和成本导致开发费用变得很高;永不结束的修改往往造成重建系统。
3.8 什么是增量模型?增量模型的优点是什么?难点是什么?
增量模型是一种演进模型。它规定软件开发过程是一次开发一个部分。增量模型采用随着开发日程时间的进展而交错的线性序列,每一个线性序列都和线性顺序模型的序列完全一样,不同之处在于每个线性序列都可以产生一个可发布的工作版本,这些工作版本都是在上一个工作版本的基础上,做了一些增量。
优点:可以在开发过程中与用户很好地交互;减少开发风险;有利于试验性产品的开发;应对“最后期限”的一种办法。
难点是必须做出一个统一的软件构架,要根据这个构架,安排合适的迭代开发计划,并且可以在较小的代价下,容易地扩展出新的功能。另外要求项目经理、设计人员和集成人员等涉众有较高的水平。
3.9 螺旋模型是谁提出的?螺旋模型的优点和难点各是什么?
美国著名的软件工程专家B.W.Boehm。
优点:不断调整的开发计划符合软件开发的实际情况;降低软件开发的风险;有利于试验性产品的开发;应对“最后期限”的一种办法。
难点:需要较高的风险评估技术;由于模型较新,它不像瀑布模型或增量模型那样广泛使用。
3.10 怎样理解RUP模型中的“迭代化生命周期”
为了保证项目质量,一种较灵活的方法是多次执行各个开发工作流程,从而更好地理解需求,设计出强壮的构架,组建好开发组织,并最终交付一系列渐趋完善的实施成果,这被称为迭代式生命周期。
3.11 RUP将软件开发过程分为哪些大的阶段?
先启、精化、构建和产品化
3.12 RUP中的开发周期和演进周期有什么不同?
开发周期中,每个迭代所产生的交付物最终目标都是为了产生这个产品。产品被交付给用户后,可能要开发它的下一代产品,可以通过重复同样的先启、精化、构建和产品化阶段的顺序,将产品演进为下一代的新产品,这些随后的周期被称为演进周期。
3.13 RUP模型中的横轴、纵轴和图形中的各种曲线代表什么意思?
横轴表示一个开发周期的时间。
纵轴表示业务建模、需求、分析设计、实施、测试和部署6个基本活动以及配置与变更管理、项目管理和环境3个保护性或者支持性活动。
各种曲线表达了各个活动在开发周期的各个迭代中的工作量

3.14 RUP的优点是什么?
体系完整;理论成熟;实践性强;可裁剪;可扩充。

第四章 问题定义和可行性研究方法

4.1 问题定义的目的是什么?
弄清楚用户需要软件系统解决的根本问题,以及项目所需的资源和经费。
4.2 问题定义报告有哪些内容?
项目目前问题、项目目标、项目范围、初步设想、预计投资金额和开发周期等内容。
4.3 列举5方面的可行性考虑
技术可行性(技术是否成熟)、操作可行性(用户能够接受操作方式么)、经济可行性(是否盈利)、调度可行性(规定期限是否能够完成)、其他可行性(社会可行性、市场可行性、竞争可行性等等)。
4.4 项目方案是否经济可行的依据是什么?
获得的效益必须等于或者大于建议系统的启动与运营成本。
4.6 什么是项目的启动成本和运营成本?什么是项目的运营效益
项目的启动成本是指为了建立新系统所支付的一次性开支。
项目的运营成本是指为了维持这个系统运行所发生的费用。
项目的运营效益是指正式运行系统后能够产生的收益。
4.7 什么是投资回收分析?该方法的缺点是什么?
投资回收分析是一个决定新系统所生成的经济效益超过它的开发费用所用时间长度的技术。
缺点是完全忽略了资金的时间因素。
4.8 什么是净资金现值法?该方法的优点是什么?
一个投资方案的净资金现值定义为所得经济效益的现值之和减去该项目的投资的现值。
优点:资金现值的使用承认了货币的时间价值,可以将不同成本和经济效益的投资进行比较。
4.9 假定在开发在线宠物商店系统时,提出两种方案,即方案A和方案B,这两种方案都可行。方案A的开发成本为20万元,在5年期限内每年可得收益为6万元;方案B的开发成本为80万元,在5年期限内每年可得收益为20万元。假定最小可接受的折扣率为10%,哪种方案是可以接受的呢?
100/110=0.909
先看方案A
NPV
=60.909+60.9090.909+…(一共加五年的)-20=5.454+4.958+4.507+4.096+3.724-20
=2.739
净资金现值系数=2.739/20=0.137
再看方案B
NPV=20
0.909+…-80=18.18+16.526+15.022+13.655+12.412-80=-4.205
净资金现值系数=-4.205/80=-0.052
所以方案A是可以接受的。
4.10 可行性研究报告包括哪些内容?
说明各种版本的修改日期、版本编号、修改说明和修改作者;在报告前部对本文档进行说明;描述本产品的定位;分别描述各类用户的情况;产品概述;方案说明;多套方案的可行性比较;推荐方案的风险评估;整理出客户方和开发方对本报告的意见;产品的市场营销计划和软件开发计划。
4.11 在可行性研究报告中,系统方案应包括哪些方面的内容?
方案的硬件环境;方案的技术策略;方案的软件模型及其模型描述;采用该方案后,客户的投资成本、运营成本和运营效益;开发方的资源配置计划;方案存在的风险和不足。
4.12 提交一张在线宠物商店的词汇表,其中至少包括5个词汇。
登录验证、购物车、收藏夹、宠物种类、商品价格

第五章 需求分析方法

5.1 需求收集和需求分析在项目开发的不同时期的工作量有何变化?
在早期,需求收集的工作量较大、需求分析的工作量较小。随着项目的开发,需求收集的工作量逐渐减少,需求分析的工作量逐渐增多。
5.2 在需求分析活动中,为什么要采用自顶向下、逐层分解的原则
通常,一个庞大的、复杂的系统很难一下子被完全理解。如果过早陷入细节,就会得到一个不完整的需求,甚至忽略系统更重要的部分。
5.3 为什么需要通过模型来表达需求?
易于理解、便与组织。(我自己理解的。。)
5.4 为什么在需求分析活动中,不宜过多考虑系统的实现方式
避免记录一些因为当前的技术才存在的需求,或者使用一些可能不适合新产品的技术;避免对实现的方式作出束缚。
5.5 为什么需求必须是可验证的
需求通过了“验证”,才能表明所开发的系统符合客户和用户的要求;
不可验证的需求,仅仅是对需求的一种主观愿望,对于设计和测试等活动而言,都是缺乏意义的;
通过需求的验证标准,可以度量出系统实现的质量。
5.6某高等学校学籍管理系统的易用性需求是“系统应该用户友好”。请为该需求设计一个验收标准。
例:
验收标准①:用户第一次使用该产品时,他们能在一个小时内掌握下载数据,上传数据等权限内的操作。
验收标准②:经过开发方提供培训服务,管理员能够在三个培训工作日内掌握系统的所有功能,并能独立工作。
5.7 为什么需求应该是可追溯的
在转换过程中,可能会出现很多问题,或由于各种原因而变更需求。当需求在课追踪性链接的任意一端发生问题时,所有与该需求关联的链接都将被标记为可疑。有助于分析潜在变更的影响,或者核实通过实施系统所有的需求都已经被实现。
5.8 状态变迁图的两种主要符号是什么?
状态和变迁
5.9 在需求分析活动中,使用数据字典有何意义?在数据字典中定义了哪四种元素?请分别解释。
数据字典可以统一项目中数据的定义与格式,便于开发人员之间的交流,保证组织内部的数据共享,避免因数据不统一而造成的理解差异,以及由此导致的人力浪费和工期延误。
数据元素:是软件系统中的最小数据单元,是构成数据库以及系统模块间交换数据的最小单元。
数据流:是外部实体和系统之间以及系统内部的处理之间进行数据交换的基本数据单元,是由有关的数据元素组成的数据结构。
数据存储:也是定义数据结构,是数据流程图中数据结构的载体。相对于数据流而言,它是一个静态的数据结构。
处理:处理的过程定义应该包括处理的名称、说明、所有需要的输入输出、要存取的数据库以及该处理对应的结构图内的模块号。
5.10判定表和判定树是为了解决什么问题?
对于复杂的条件组合问题(在处理过程定义中,有时存在多重嵌套的情况),直观、清楚地表述处理的过程。
5.11 UML从建模的角度将类分为哪几种?
用例模型、对象—行为模型、对象—关系模型。
5.12 请分别解释泛化、关联、聚集、合成和依赖的概念。
泛化:由一个超类和几个直接子类构成的两层结构。
关联:模型元素间的一种语义联系。
聚集:聚集是一种特殊的关联,用来表示类与类之间整体与部分的关系。
合成:一种更特殊的聚集,也表示类与类之间的整体和部分关系。但特殊之处在于他是一种强聚集,组合关系中的类具有相同的生存期,即主体对象不存在时,其包含的对象也不存在。
依赖:类与类之间较弱的关系,若修改类A的定义可能导致对类B的定义的修改,则称类B依赖于类A。

5.13 识别泛化关系时,应考虑哪些问题?
根据领域知识识别泛化;自上而下识别泛化;自下而上识别泛化;考虑领域内的复用;判断泛化是否在系统的责任范围内;判断是否在结构上真正构成泛化关系;判断子类之间的差别是否由超类的属性值改变来实现;判断子类是否有自己特有的属性和操作;判断父类下面是否只有一个子类。
5.14 单向关联和双向关联有何不同?
单向关联有箭头、双向关联用一条无箭头的直线表示。
单向关联A→B表示A可以用B的属性和方法,而B不可以用A的。
5.15 聚集与合成关系有何不同?
合成是一种更特殊的聚集,也表示类与类之间的整体和部分关系。但特殊之处在于他是一种强聚集,组合关系中的类具有相同的生存期,即主体对象不存在时,其包含的对象也不存在。
5.16 依赖关系常常出现在哪些情况下?
一个类向领一个类发送消息;一个类是另一个类的某个或者某些操作的数据成员类型;一个类是另一个类的操作的参数模型。
5.17 什么是交互图?
交互图用来对软件系统的动态行为建模,显示了Actor和对象之间是如何进行通信来完成用例的各个步骤或者其他功能的。

猜你喜欢

转载自blog.csdn.net/Jayson13/article/details/88578284