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

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

    • 第一章 软件工程概述
    • 第二章 软件开发过程和活动

第一章 软件工程概述

1.1 软件开发有哪些特点?
难以描述性、缺乏可见性、复杂性、变化性、风险性、强合作性。

1.2 什么是软件危机?有哪些表现?怎么解决?
软件危机:指在软件开发和维护过程中存在周期长、成本高、质量低等问题。
表现在:
①缺乏计划性
②软件需求获取不充分、不准确
③缺乏团队开发的合作、协调能力
④缺乏良好的软件质量评测手段
⑤软件的可维护性差
⑥软件的可复用性差
⑦软件开发过程不规范
⑧缺乏自动化的工具来协助开发
⑨缺乏变更管理措施
⑩缺乏风险管理手段
解决手段:采用工程的方法。软件开发人员必须运用科学、系统、有组织的工程方法,才能制作出高质量、低成本的软件产品。

1.3 什么是软件工程?
软件工程是以质量为核心,为了经济地开发满足客户需求的软件而研究、建立和应用的系统化的有规则的、可度量的和可控制的工程原则、方法,涉及软件过程、项目管理、开发方法、开发工具,甚至企业文化等各个方面。

1.4 在软件工程的发展史上,有哪些重要的开发方法?
以结构化方法为代表的传统软件工程方法和以面向对象技术为核心的面向对象的软件工程方法。

1.5 项目管理涉及哪些方面?
涉及人力资源管理、项目计划、风险管理、项目跟踪、质量保证、配置管理等等方面。

1.6 软件工程工具有哪些作用?
需求分析、优化软件设计手段、加快代码实现速度、提高软件测试水平等等

第二章 软件开发过程和活动

问题定义—可行性研究—需求分析—设计活动—实施活动—测试活动—部署活动

2.1 什么是软件开发过程?在开发过程中,有哪些主要活动?哪些是基本活动,哪些是辅助性活动?
软件开发过程由开发和维护软件以及相关产品的一系列活动构成,这些活动从不同方面定义了软件开发过程中的步骤、交付物、涉众以及职责等流程要素。
在开发过程中,存在一系列活动,可分为Basic Activities(基本活动,如问题定义活动、可行性研究活动、需求分析活动、设计活动、编码活动、测试活动、部署活动和交付活动等)和Umbrella Activities(保护性活动,如风险管理活动、计划活动、项目跟踪活动、质量保证活动和软件配置管理活动等)

2.2为什么需要一个“问题定义”的活动?什么时间开展这项活动?
问题定义是软件开发过程中一个对所有要解决的问题进行定义并确定系统范围的活动。
客户与开发商达成共识,确定系统的大致范围和投资额等等,避免损失。“问题定义”像一个项目的“探路者”。
问题定义活动处于项目日程表的最前端。

2.3什么是可行性研究?为什么需要一个“可行性研究”的活动?什么时间开展这项活动?哪些涉众会参与这项活动?
可行性研究是以相对短的时间和相对低的成本来确定给定的问题在其约束内是否有解、有几种解以及哪个是最佳解。
由于任何项目都有约束条件,必须首先确立满足约束条件的方案是否存在、可行、最优,然后在最优方案的基础上进行开发;如果省略这个步骤,就会在一个本质上不可能实现的项目上造成人力物力浪费,或造成项目大量返工、功能不足、性能失真。
可行性研究活动处于项目的早期阶段。
系统分析师、出资方领导、出资方技术人员、用户代表、开发方领导、项目经理、系统架构师、领域专家等等。

2.4 什么是需求?
需求:主要是在产品构建之前确定的系统必须符合的条件或者具备的功能,它们关于系统将要完成什么工作的一段描述语句,它们必须经过所有相关人员的认可,其目的是彻底地解决客户的问题。

2.5 什么是需求文档?有哪些类型的需求文档?
一组需求的集合被称为需求文档。可分为用户需求文档、系统需求文档和软件规约文档

2.6 描述需求的标准是什么?
一个优秀的需求描述应该是完整的、正确的、必要的、无歧义的、可行的、可验证的以及被设置了优先级别的

2.7 怎样理解“贯穿于整个软件开发过程的需求活动”这句话?
在项目的设计、编码、测试和使用中,新的需求可能会浮现,旧的需求可能被变更。因此,实际上,需求活动贯穿于整个软件开发过程中,但大部分需求应在早期被确认。

2.8 什么是设计?为什么设计活动非常重要?
设计是在系统的约束条件下,为了实现系统的功能性需求与非功能性需求,而找到并描述的一种遵循高质量的通用原则的方法,其交付文档能够指导开发人员实现系统。
软件设计活动主要任务是解决“如何做”的问题,是软件开发过程的关键活动之一。

2.9 请解释设计中的各个粒度的部件,如系统、子系统、框架、构件、组件、模块、类和方法等。
系统:由软件、硬件或者两者共同构成的一个逻辑实体,它可以被许多构件共同实现。
子系统:是大型系统的一部分,有着明确的借口。
框架:可以被复用的子系统,实现了一般问题的通用解决方案,通过“服务”向外部提供可应用于不同应用程序的公共功能。
构件:开发流程的物理资产。包括各种类型文件。
组件:一种特殊的构件,是指有定义完备接口的、明确规定了上下文依赖关系的合成单元。
模块:具体的部件,定义在程序设计语言级别上的构件。
:面向对象程序中数据抽象的单元,一个软件模块,描述并定义了一组相似的对象。
方法:一个更小粒度的软件模块,是实现类的行为和过程抽象。

2.10 什么是总体设计?什么是详细设计?
总体设计:任务是根据软件需求规约文档,确定一个合理的软件体系结构,包括合理地划分组成系统的模块、模块间的调用关系以及模块间的接口关系。
详细设计:任务是在总体设计的基础上,进一步确定如何实现目标系统,包括系统的数据对象的设计、人机接口的设计以及模块逻辑的详细设计。

2.11 怎样理解“贯穿于整个软件开发过程的设计活动”这句话?
在开发迭代中,随着需求描述趋于完善,软件构架从一个粗略的轮廓开始,逐步完善构架,先处理高优先级的、已经被确定的重要需求,在解决次要的、趋于完善的其他需求——直到得到一个稳定的框架为止。代码工人在开发迭代中,根据设计的已有成果,逐步实现系统。

2.12 请解释实施活动中的编码、单元测试和集成。
编码:将软件设计结果转成用某种程序设计语言书写的程序。
单元测试:一个模块作为独立的程序单元进行测试,以保证它能够正确执行规定的功能。
集成:将单独的软件构件合并成一个整体的软件系统。

2.13 什么是工作版本?
工作版本是迭代生命周期不可缺少的组成部分。代表正在进行的尝试活动,目的是展示最新开发的功能。

2.14 以实施为中心的软件开发会导致什么问题?而轻视实施活动又会存在哪些问题?
以实施为中心的软件开发会导致:弱化的需求与设计、对实施人员的过度依赖
轻视的问题:①增加和替换人手时,实施人员接受需要熟悉一段时间。②所需的实施人员需要具有一定的技术含量,需要长期的培训来掌握技能。③实施人员的施工水平存在差异。④不易度量实施人员的实施质量。

2.15 为什么在展开实施活动时,建议实施地点选择在软件企业内部进行?如果在企业内部,那么应该注意哪些问题?
优点:节省成本,便于资源调配,便于交流,便于并行开发
要注意和用户保持足够的接触。每个迭代的工作版本都应该和用户交流,以便在下一轮迭代中,对错误或者不足之处作出改进。

2.16 什么是测试?请分别解释缺陷、错误和失败的概念。
测试是选择适当的测试用例执行被测程序的过程,目的在于发现程序错误。
缺陷:是系统任一方面(包括需求、设计或者代码)的缺点。
错误:指程序中的缺陷所产生的不正确结果。
失败:当一个程序不能运行或者其表现不可以被接受时,称为失败。失败源于代码缺陷。

2.17 请分别解释单元测试、集成测试、系统测试、α测试、β测试和验收测试。
单元测试:当且仅当被测试的是一个程序单位,称为单元测试。
集成测试:是为了测试和验证几个构件集成在一起时,是否能按照预期目标正常工作。
系统测试:关注于系统作为整体运行时的实际效果。
α测试:由客户和用户在软件开发团队的管理下执行的测试。
β测试:由客户和用户在他们的工作现场进行的测试。
验收测试:部署软件之前的最后一个测试操作。

2.18 什么是测试用例?它包括哪些内容?
为特定目标开发的测试输入、执行条件和预期结果的集合。
包括标识、目标、相关文档、重要级别、优先级别、指令、期望结果、清理

2.19 测试活动贯穿于整个软件开发过程,这会有什么益处?
缩短测试时间、易于定位缺陷、避免错上加错。

2.20 怎样在测试活动中选择合适的执行地点?
建议单元测试、集成测试和系统测试在程序员所在的开发现场以其附近进行,便于实施人员与测试人员交流,对系统缺陷作出快速响应;β测试和验收测试则完全在用户现场测试,这样能够从用户真实的现场环境来验证系统,并能够从用户的角度发现错误。

2.21 什么是部署?有哪几种部署模式
部署是为了确保最终用户可以正常使用软件产品而进行的活动。
部署分为三种模式:自定义安装模式现场支持模式、Internet模式

2.22 什么是部署计划?在制定部署计划时,要考虑哪些问题?
说明如何将产品从开发商转移到用户群。要考虑:兼容、转换和迁移策略,部署时间表,部署顺序,用户培训。

你可能感兴趣的:(本科)