1. 软件工程的定义
软件工程是在软件的开发,操作和维护过程中,采用系统的,有纪律的,可量化的方法,即工程应用于软件。
2. 解释导致 software crisis 本质原因、表现,述说克服软件危机的方法
导致软件危机的本质原因是计算机的计算能力的提高超过了程序员有效利用这些能力的能力。
表现在:
- 软件开发进度难以预测
- 软件开发成本难以控制
- 用户对产品功能难以满足
- 软件产品质量无法保证
- 软件产品难以维护
- 软件缺少适当的文档材料
克服软件危机的方法:
- 研究软件生产的客观规律性,建立与系统化软件生产有关概念,原则,方法,技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本,改进软件产品质量,提高软件生产率水平的目标。
- 发展软件开发与维护阶段使用的技术和方法,应用于软件工程实践。
- 研制和使用软件工具,用以辅助进行软件项目管理与技术生产。
- 将软件生命周期各阶段使用的软件工具有机地集合称为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支援环境,以期从管理和技术两方面解决软件危机问题。
- 建立完备的软件工业化生产体系,发展软件标准化和可重用性,避免重用劳动,缓解软件危机。
3. 软件生命周期
软件生命周期是计算机软件孕育,诞生,成长,成熟,衰亡的生存过程。软件生命周期从时间角度,将软件开发过程划分为可行性分析与计划、需求分析、设计 (概要设计和详细设计)、编码实现、测试、运行与维护等阶段,每个阶段有明确的任务目标和运行机制,使复杂的软件开发过程能够得到适当的控制和管理。
4. SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)
- Software requirements:软件需求,软件需求是软件工程内的一个领域,它涉及建立软件解决利益相关者的问题所需的条件。
- Software design:软件设计,软件设计可以是指“概念化、构架、实现、调试和最终修改复杂系统所涉及的所有活动”,也可以是“遵循需求规范和编程之前的所有活动”。软件设计通常包括解决问题和规划软件解决方案。这既包括低级组件和算法设计,也包括高级体系结构设计。
- Software construction:软件构建,软件构建是通过编码、验证、单元测试、集成测试和调试的组合详细地创建有意义的工作软件。
- Software testing:软件测试,软件测试是为向利益相关者提供有关被测试软件产品或服务质量的信息而进行的调查。软件测试还可以提供一个客观的、独立的软件视图,使业务能够领会和理解软件实现的风险。
- Software maintenance:软件维护,软件维护是指在软件交付后对软件产品进行修改,以纠正错误,提高性能或其他属性。
- Software configuration management:软件配置管理,软件配置管理是跟踪和控制软件更改的任务,是更大的跨学科配置管理领域的一部分。
- Software engineering management:软件工程管理,软件工程管理是管理实践在软件工程实践的应用,是将软件工程的技术问题解决能力与管理的组织、管理和规划能力结合起来,以监督复杂软件工程驱动企业的经营绩效的一种职业。
- Software engineering process:软件工程过程,软件工程过程是将软件开发工作划分为不同阶段以改进设计、产品管理和项目管理的过程。它也被称为软件生命周期。
- Software engineering models and methods:软件工程模型和方法,软件工程模型和方法为高质量的软件开发提供一个框架。
- Software quality:软件质量,软件质量包括软件功能质量和软件结构质量,前者反映了软件在功能需求或规范的基础上,对给定设计的遵从程度。这个属性也可以被描述为软件的适用性,或者作为一个有价值的产品与市场上的竞争者进行比较。后者指的是软件如何满足支持功能需求交付的非功能需求,例如健壮性或可维护性。这与软件按需工作的程度有很大关系。
- Software engineering professional practice:软件工程专业实践,软件工程专业实践将软件工程的专业知识应用到软件开发的过程当中。
- Software engineering economics:软件工程经济学,软件工程经济学利用软件工程的知识开发软件并获取经济上的收益。
- Computing foundations:计算基础,计算基础包含在软件工程的知识体系中。
- Mathematical foundations:数学基础,数学基础包含在软件工程的知识体系中。
- Engineering foundations:工程基础,工程基础包含在软件工程的知识体系中。
5. 简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
- Level 1 - Initial : 无序,自发生产模式
- Level 2 - Managed :建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
- Level 3 - Defined:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
- Level 4 - Quantitatively Managed :分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
- Level 5 - Optimizing:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
6. 用自己语言简述 SWEBok 或 CMMI (约200字)
CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成。CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,帮助组织增强软件工程管理和开发能力,使组织能够按时地、不超预算地开发出高质量的软件。CMMI是世界公认的软件产品进入国际市场的通行证,是对产品质量的认证。如果一家公司最终通过CMMI的评估认证,标志着该公司在质量管理的能力已经上升到一个新的高度。而认证的等级越高,意味着公司质量管理能力成熟度越高,做的越好。