Problems
简答题
- 软件工程的定义
- 解释导致 software crisis 本质原因、表现,述说克服软件危机的方法
- 软件生命周期
- SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)
- 简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
- 用自己语言简述 SWEBok 或 CMMI (约200字)
Answers
简答题
软件工程的定义
- 将系统化的、有严格约束的、可量化的方法应用于软件的开发、测试、运行和维护中,将工程化的思想贯穿在一个软件的生命周期中。
- 对1中叙述各部分的学习。
软件危机
- 本质原因:软件开发的方法不足以匹配软件需求的快速增长及对应的软件复杂性的快速提高和硬件计算能力的提高,导致大量软件问题的出现。
- 表现:
- 软件用户的需求得不到满足
- 软件的成本提高
- 软件的开发进度难以预计
- 软件的可维护性差
- 软件的质量差,问题出现频繁
- 软件的文档难以描述准确,包括需求、实现方法等的描述。
- 克服方法: 按工程化的原则和方法进行软件开发、运行管理和维护,使用系统化、规范化的方法对各个阶段、对应的参加人员进行约束。例如需求提出阶段,需求要求要明确,且有确切的表达使软件开发人员理解用户需求;软件定义设计阶段,文档描述准确;开发过程要有统一的、公认的方法论和规范指导,开发人员必须有统一的软件开发理论来指导等。
软件生命周期
常见的有瀑布模型、螺旋模型、敏捷模型等,一般包括以下几个过程:
- 问题定义。要求系统分析员和用户交流,明确用户需求,需要解决的问题,达到的目标以及工程规模。
- 可行性研究。确定解决问题是否存在一个可行的解决方案,无需具体确定方案,重点是探索问题解决的难度及成本,以确定投资能否获得相应效益。
- 需求分析。深入具体的了解用户的需求,明确目标系统必须做什么,确定目标系统必须具备哪些功能,与用户达成一致。
- 概要设计(总体设计)。设计出实现目标系统的可能方案,设计出程序的体系结构。此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计,核心在于把握好那些决定“服务质量”的因素,比如软件的性能,可扩展性,安全性,怎样划分模块的组成等。
- 编码和单元测试。将软件设计的结果转换成计算机可运行的程序代码,同时在小范围进行测试保证模块功能符合设计要求。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
- 综合测试。进行规范的测试,发现软件在整个设计过程中存在的问题并加以纠正。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试。
- 运行维护。通过各种必要的维护活动使系统持久的满足用户的需求。主要分为改正性维护、适应性维护、完善性维护、预防性维护。
SWEBoK的15个知识域
- 软件工程实践:
- Software Requirements:软件需求 关注软件需求的启发,协商,分析,规范和验证。软件需求表达了对软件产品的需求和限制,有助于解决一些现实问题。
- Software Design:软件设计 定义系统或组件的体系结构,组件,接口和其他特征的过程以及该过程的结果。
- Software Construction:软件构建 指通过结合详细设计,编码,单元测试,集成测试,调试和验证来详细创建工作软件。
- Software Testing:软件测试 测试是一项旨在通过识别缺陷来评估产品质量并改进产品质量的活动。
- Software Maintenance:软件维护 软件维护包括增强现有功能,调整软件以在新的和修改的操作环境中运行,以及纠正缺陷。这些类别称为完善,自适应和纠正性软件维护。
- Software Configuration Management:软件配置管理 软件配置管理(SCM)是在不同时间点识别系统配置的规训,用于系统地控制配置的改变,以及在整个软件生命周期中维持配置的完整性和可追溯性。
- Software Engineering Management:软件工程管理 软件工程管理涉及规划,协调,测量,报告和控制项目或程序,以确保软件的开发和维护是系统化的,规范化的和量化的。
- Software Engineering Process:软件工程过程 关注软件生命周期过程的定义,实施,评估,测量,管理和改进。
- Software Engineering Models and Methods:软件工程模型和方法 解决了涵盖多个生命周期阶段的方法。
- Software Quality:软件质量 是许多SWEBOK V3 KAs中普遍存在的软件生命周期关心问题。
- Software Engineering Professional Practice:软件工程专业实践 关注软件工程师要专业、负责、道德地实践软件工程所必须具备的知识,技能和态度。
- 软件工程基础教育要求:
- Software Engineering Economics :软件工程经济学 软件工程经济学KA关注的是在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。
- Computing Foundations:计算基础 计算基础KA涵盖了提供软件工程实践所需的计算背景的基础主题。
- Mathematical Foundations:数学基础 数学基础KA涵盖了提供软件工程实践所必需的数学背景的基础主题。
- Engineering Foundations:工程基础 工程基础KA涵盖了提供软件工程实践所必需的工程背景的基础主题。
CMMI五个级别
- Level 1 - Initial 无序,自发生产模式,不可预测地、不可控地、被动地。
- Level 2 - Managed 有基本的管理过程,但只针对现有项目,不够系统,常常较为被动。
- Level 3 - Defined 管理过程组织化,项目根据组织的标准进行,比较主动。
- Level 4 - Quantitatively Managed 高质量管理,标准化、量化管理,高可控。
- Level 5 - Optimizing 不断对管理过程进行优化与改善。
描述CMMI
CMMI全称能力成熟度模型集成,作用是帮助软件企业对软件工程过程进行管理和改进,提高软件开发的能力,从而能低成本(包括时间和金钱)地开发出高质量的软件。其所依据的想法是:集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进。它实质上是一个过程级别的改进训练和评估程序,包含几个成熟度级别: Initial, Managed, Defined, Quantitatively Managed和 Optimizing,企业可以根据这个框架进行评估,作为指导的方向。