软件的本质与软件工程科学
1.简答题
软件工程的定义:
软件工程是应用系统的、规范的、量化的方法来开发、操作和维护软件,是将工程应用到软件开发的系统方法。
解释导致software crisis本质原因、表现,述说客服软件危机的方法:
本质原因:计算机能力的快速增长以及无法解决的问题的复杂性,由于软件复杂性的增加,很多已有方法不足以解决的软件问题逐渐增加。
计算能力的提高超过了程序员有效利用这些计算能力的能力
表现:
- 项目运行超预算
- 项目运行超时
- 软件效率低下
- 软件低质量
- 软件经常无法满足需求
- 项目无法管理、代码难以维护
- 软件从未交付过
解决方法:
使用系统化、与时俱进的软件工程方法,如过程式编程、面向对象编程方法。
软件生命周期:
在时间维度对软件项目任务进行划分,又称为软件开发过程,即为了提高设计、产品管理、项目管理而把软件开发工作分成不同的阶段。常见的有瀑布模型、螺旋模型、敏捷的模型等。
SWEBoK的15个知识域:
描述软件工程实践的11个知识域:
软件需求:
关于软件需求的启发、协商、分析、规范和验证。表达了用于解决实际问题的软件产品的需要和约束。
软件设计:
定义系统或组件的结构、组成部分、接口和其他特点的过程以及这个过程的结果。软件设计过程是一个软件工程生命周期活动,它分析软件需求来产生对软件内部结构的描述,它的表现会作为它的构建的基础。
软件构建:
通过详细的设计、编码、单元测试、继承测试、调试和验证的组合来详细地创建工作软件。这个知识域涉及软件构建基础、软件管理基础、构建技术、实际考虑以及软件构建工具。
软件测试:
评估和通过识别缺陷来提升软件质量的活动。这个知识域包含软件测试基础、测试技术、人机交互接口测试和评估、测试相关的措施以及实际考虑。
软件维护:
包含增强已有的能力,调整软件来在新的和修改过的操作环境中运行以及纠正缺陷。这个知识域包含软件维护的基础、软件维护的关键问题、维护过程、软件维护的技术、灾难恢复技术和软件维护工具。
软件配置管理:
系统的配置是硬件、固件、软件的功能和物理特性的组合。软件配置管理是为了系统地控制配置的变化,在不同时间点识别系统配置的规程,也是在整个软件生命周期中维护配置的完整性和可追溯性的规程。
软件工程管理:
包含计划、协调、测量、报告和控制项目或程序,以确保软件的开发和维护是系统的、规范的和量化的
软件工程进程:
涉及软件生命周期过程的定义、实现、评估、测量、管理和改进。
软件工程模型和方法:
涉及包含多个生命周期阶段的方法,特定生命周期阶段的方法由其他知识域涵盖。
软件质量:
普遍存在的的软件生命周期问题。
软件工程专业实践:
软件工程师必须拥有知识、技能和态度来以专业、负责和道德的方式来实践软件工程。
描述软件工程教育需求的4个知识域:
软件工程经济学:
涉及在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。
计算基础:
涵盖为软件工程实践提供必要的计算背景的基本主题。
数学基础:
涵盖为软件工程实践提供必要的数学背景的基本主题。
工程基础:
涵盖为软件工程实践提供必要的工程背景的基本主题。
简单解释CMMI的五个级别
Level 1-Initial(初始级):
软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力,管理是反应式的
Level 2-Managed(可管理级):
建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
Level 3-Defined(已定义级):
已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
Level 4-Quantitatively Managed(量化管理级):
分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
Level 5-Optimizing(优化级):
过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
用自己语言简述SWEBok或CMMI(约200字)
CMMI即能力成熟度模型集成,是一个过程级别的改进模型,集成了各种现存实施的与将被发展出来的能力成熟度模型,本质是软件管理工程的一部分。
改善软件生产过程是当前软件管理工程的核心问题,它关乎高效率、高质量和低成本地开发软件。CMMI目的旨在帮助企业管理和改进软件工程过程,增强开发和改进能力,开发出高质量的软件。它通过使用知识(能力)的不同,用不同的级别表示开发企业的成熟性,给出了企业能力评估的事实标准。
CMMI的主要关注点在成本效益、明确重点、过程集中和灵活性四个方面。