软件工程的定义
软件工程是指研究和使用系统的、规范的和可靠的方法来开发、使用和维护软件
解释导致 software crisis 本质原因、表现,述说克服软件危机的方法
本质原因
用户需求不明确
缺乏正确的理论指导
软件开发规模越来越大
软件开发复杂度越来越高
表现
-
软件开发进度难以预测
长时间拖延工期,导致软件开发组织的信誉降低。
-
软件开发成本难以控制
设计开发成本往往比预算成本高出一个数量级,而为了赶进度和节约成本采取的措施往往损害了软件产品的质量,从而不可避免地会引起用户的不满。
-
用户对产品功能难以满足
开发人员和用户之间很难沟通、矛盾很难统一。往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。在双方互不充分了解的情况下,就仓促上阵设计系统、匆忙着手编写程序,这种"闭门造车"的开发方式必然导致最终的产品不符合用户的实际需要。
-
软件产品质量无法保证
系统中的错误难以消除。软件是逻辑产品,质量问题很难以统一的标准度量,因而造成质量控制困难。
软件产品并不是没有错误,而是盲目检测很难发现错误,而隐藏下来的错误往往是造成重大事故的隐患。
-
软件产品难以维护
软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代。除非是开发者本人,否则很难及时检测、排除系统故障。为使系统适应新的硬件环境,或根据用户的需要在原系统中增加一些新的功能,又有可能增加系统中的错误。
-
软件缺少适当的文档资料
文档资料是软件必不可少的重要组成部分。实际上,软件的文档资料是开发组织和用户的之间权利和义务的合同书,是系统管理者、总体设计者向开发人员下达的任务书,是系统维护人员的技术指导手册,是用户的操作说明书。缺乏必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。
解决方法
- 使用软件生命周期模型,发展了软件开发和维护阶段适用的技术和方法
- 研制和使用软件工具,用以辅助进行软件项目管理与技术生产
- 基于程序变换、自动生成和可重用软件等软件新技术研究也已取得一定的进展,把程序设计自动化的进程向前推进一步
- 软件标准化与可重用性得到了工业界的高度重视,在避免重用劳动,缓解软件危机方面起到了重要作用。
软件生命周期
软件生命周期是指软件从需求设计到软件弃用的全过程,不同的软件生命周期模型有不同的细分规则,生命周期的细分使得软件开发有条理,逐步推进。软件说明周期模型有多种,其中常见的有瀑布模型、螺旋模型、敏捷的模型等
SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)
软件需求
软件需求表达的是软件产品的需要和约束。包括引出,调查,分析,规范和批准软件需求,缺少这些步骤的软件有比较严重的脆弱性
软件设计
软件设计包括设计过程和最终产品,其中包括设计软件结构,部件和接口。
软件构造
软件构造是开发软件的细节过程,包括细节设计、编程、单元测试、整体性测试、调试和修正;
软件测试
软件测试是通过测试来评估和提升产品质量的过程,其中包括了软件本身的测试、测试工具、人机交互测试、测试相关的测量和现实考虑
软件运维
软件运维是软件交付使用后,利用软件为用户提供服务,同时对软件运行时出现的问题及时修补和提升,确保软件的持续可用性
软件配置管理
为了系统地控制配置的变更和维护在整个系统生命周期中的完整性和可追踪性,而标志软件在时间上不同点的配置的学科。软件配置管理包括六个子域,即软件配置管理过程管理、软件配置标志、软件配置控制、软件配置状态统计、软件配置审核、软件发行管理和交付
软件工程管理
软件工程管理是利用规范化的管理方法来保证软件开发和运维的系统性、规范性和高质量。
软件工程过程
软件工程过程是关于定义、实现、评价、测量、管理和提升软件生命周期的过程。
软件模型和方法
包括软件工程工具、软件工程方法两部分
软件质量
软件过程专业实践
软件工程专业实践是指软件工程师必须具备的知识、技能和态度,以一种专业、负责和道德的方式来实践软件工程。
软件工程经济学
计算基础
计算基础知识域涵盖了为软件工程实践提供必要的计算背景的基本主题。主题包括问题解决技术、抽象、算法和复杂性、编程基础、并行和分布式计算的基础、计算机组织、操作系统和网络通信。
数学基础
数学基础知识域涵盖了为软件工程实践提供必要数学背景的基本主题。
工程基础
工程基础知识域涵盖了为软件工程实践提供必要的工程背景的基本主题。
简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
Level 1 - initial:无序,自发生产模式,管理是反应式的
Level 2 - Managed:增加了管理,开发过程规范化
Level 3 - Defined:企业可自定义标志流程用于管理
Level 4 - Quantitatively Managed:以量化的提高管理质量
Level 5 - Optimizing:最高水平,管理质量和资源的利用有很高的水平。
用自己语言简述 SWEBok 或 CMMI (约200字)
SWEBoK是指软件工程知识体系,其内容均为广泛接受的软件工程知识。整体划分为软件工程实践和基础教育两个部分,指导了软件工程人才培养与学科建设和软件生产实践,其中包括15个知识领域,描述了各个部分的内容、生产方式、生产工具和管理,SWEBok使得软件开发有人才输入和过程的规范化,提高了软件的生产力,也使得软件工程就变成了在什么时刻、工作目标、应该做什么、怎么做的 最佳实践指南