系统分析与设计 Note1

软件工程的定义

软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己认可的定义:

  • BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
  • IEEE:在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究
  • FritzBauer:在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
  • 《计算机科学技术百科全书》:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
  • ISO 9000对软件工程过程的定义是:软件工程过程是输入转化为输出的一组彼此相关的资源和活动。

软件危机

原因

本质原因是落后的软件生产方式无法满足迅速增长的计算机软件需求。
客观原因有

  • 用户需求不明确
  • 缺乏正确的理论指导
  • 软件开发规模越来越大
  • 软件开发复杂度越来越高
表现
  • 项目运行超出预算。
  • 项目运行超过时间。
  • 软件质量低落。
  • 软件通常不匹配需求。
  • 项目无法管理,且代码难以维护。
克服方法

为了克服这一危机,在1968、1969年连续召开的两次著名的NATO会议上提出了软件工程这一术语,并在以后不断发展、完善。与此同时,软件研究人员也在不断探索新的软件开发方法。

IEEE Computer Society 构建软件生产的最佳实践与相关知识的框架,称为 Software Engineering Body of Knowledge。指导软件工程人才的培养与学科建设。

从实践的角度,Software Engineering Process 从时间维度给出了项目的过程模型(Process Models),其它则从内容角度给出了原则与方法。这样,就得到沿时间轴的二维表,这样软件工程就变成了在什么时刻、工作目标、应该做什么、怎么做的 最佳实践指南。

软件生命周期

软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期。
周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。

SWEBoK 的 15 个知识域

2014 V3 版的 SWEBoK 将知识分为软件工程实践和基础教育两个部分,共 15 个知识域(knowledge areas / KAs)。

软件工程实践
Software Requirements 软件要求

软件要求关注软件需求的启发,协商,分析,规范和验证。 在软件行业中,人们普遍认为,当这些活动表现不佳时,软件工程项目非常容易受到攻击。 软件需求表达了对软件产品的需求和限制,这些需求和约束有助于解决一些现实问题。

Software Design 软件设计

设计被定义为定义系统或组件的体系结构,组件,接口和其他特征的过程以及该过程的结果(IEEE 1991)。 软件设计涵盖了设计过程和最终产品。 软件设计过程是软件工程生命周期活动,其中分析软件需求以产生软件内部结构及其行为的描述,其将作为其构造的基础。 软件设计(结果)必须描述软件体系结构 - 即软件如何分解和组织成组件以及这些组件之间的接口。 它还必须描述能够构建它们的详细程度的组件。

Software Construction 软件构建

软件构建是指通过结合详细设计,编码,单元测试,集成测试,调试和验证来详细创建工作软件。 软件构建KA包括与满足其要求和设计约束的软件程序开发相关的主题。 该KA涵盖了软件构建基础; 管理软件建设; 建筑技术; 实际考虑; 和软件构建工具。

Software Testing 软件测试

测试是一项旨在评估产品质量并通过识别缺陷来改进产品质量的活动。 软件测试涉及在有限的测试用例集上针对预期行为动态验证程序的行为。 这些测试用例是从(通常非常大的)执行域中选择的。 软件测试KA包括软件测试的基础知识; 测试技术; 人机界面测试与评估; 与测试有关的措施; 和实际考虑。

Software Maintenance 软件维护

软件维护包括增强现有功能,调整软件以在新的和修改的操作环境中运行,以及纠正缺陷。 这些类别称为完善,自适应和纠正性软件维护。 软件维护KA包括软件维护的基础知识(维护的性质和需求,维护类别,维护成本); 软件维护中的关键问题(技术问题,管理问题,维护成本估算,软件维护测量); 维护过程; 软件维护技术(程序理解,重新设计,逆向工程,重构,软件退役); 灾难恢复技术和软件维护工具。

Software Configuration Management 软件配置管理

系统的配置是硬件,固件,软件或这些的组合的功能和/或物理特征。 它还可以被视为根据特定构建过程组合的特定版本的硬件,固件或软件项的集合,以满足特定目的。 因此,软件配置管理(SCM)是在不同时间点识别系统配置的规则,用于系统地控制配置的改变,以及在整个软件生命周期中维持配置的完整性和可追溯性。 软件配置管理KA涵盖SCM过程的管理; 软件配置识别,控制,状态核算,审计; 软件发布管理和交付; 和软件配置管理工具。

Software Engineering Management 软件工程管理

软件工程管理涉及规划,协调,测量,报告和控制项目或程序,以确保软件的开发和维护是系统化的,规范化的和量化的。 软件工程管理KA涵盖了启动和范围定义(确定和协商要求,可行性分析以及要求的审查和修订); 软件项目计划(过程计划,工作量估算,成本和进度,资源分配,风险分析,质量计划); 软件项目制定(计量,报告和控制;收购和供应商合同管理); 产品验收; 审查和分析项目绩效; 项目结束; 和软件管理工具。

Software Engineering Process 软件工程过程

软件工程KA关注软件生命周期过程的定义,实施,评估,测量,管理和改进。 涵盖的主题包括流程实施和变更(流程基础架构,流程实施和变更模型以及软件流程管理); 流程定义(软件生命周期模型和流程,流程定义,流程适应和流程自动化的符号); 过程评估模型和方法; 测量(过程测量,产品测量,测量技术和测量结果的质量); 和软件处理工具。

Software Engineering Models and Methods 软件工程模型和方法

软件工程模型和方法KA解决了涵盖多个生命周期阶段的方法; 其他KAs涵盖特定生命周期阶段的特定方法。 涵盖的主题包括建模(软件工程模型的原理和属性;语法与语义与不变量;前置条件,后置条件和不变量); 模型类型(信息,结构和行为模型); 分析(分析正确性,完整性,一致性,质量和相互作用;可追溯性;以及权衡分析); 和软件开发方法(启发式方法,形式方法,原型方法和敏捷方法)。

Software Quality 软件质量

软件质量是普遍存在的软件生命周期问题。 此外,软件质量KA还包括软件质量的基础知识(软件工程文化,软件质量特性,软件质量的价值和成本以及软件质量改进); 软件质量管理流程(软件质量保证,验证和确认,审核和审核); 和实际考虑(缺陷表征,软件质量测量和软件质量工具)。

Software Engineering Professional Practice 软件工程专业实践

软件工程专业实践关注软件工程师必须具备的专业,负责和道德的软件工程知识,技能和态度。 软件工程专业实践KA涵盖专业性(专业行为,专业协会,软件工程标准,雇佣合同和法律问题); 道德准则; 小组动态(团队合作,认知问题复杂性,与利益相关者互动,处理不确定性和模糊性,处理多元文化环境); 和沟通技巧。

基础教育
Software Engineering Economics 软件工程经济学

软件工程经济学KA关注的是在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。 涵盖的主题包括软件工程经济学的基本原理(提案,现金流量,货币时间价值,计划视野,通货膨胀,折旧,替代和退休决策); 非营利性决策(成本效益分析,优化分析); 估计,经济风险和不确定性(估算技术,风险决策和不确定性); 和多属性决策(价值和衡量尺度,补偿和非补偿技术)。

Computing Foundations 计算基础

计算基础KA涵盖了提供软件工程实践所需的计算背景的基础主题。 涵盖的主题包括问题解决技术,抽象,算法和复杂性,编程基础,并行和分布式计算的基础知识,计算机组织,操作系统和网络通信。

Mathematical Foundations 数学基础

数学基础KA涵盖了提供软件工程实践所必需的数学背景的基础主题。 涵盖的主题包括集合,关系和功能; 基本命题和谓词逻辑; 证明技术; 图形和树木; 离散概率; 语法和有限状态机; 数论。

Engineering Foundations 工程基础

工程基础KA涵盖了提供软件工程实践所必需的工程背景的基础主题。 涵盖的主题包括经验方法和实验技术; 统计分析; 测量和指标; 工程设计; 仿真与建模; 根本原因分析。

简单解释 CMMI 的五个级别

Level 1 - Initial:完成级

在完成级水平上,企业对项目的目标与要做的努力很清晰,项目的目标得以实现。但是由于任务的完成带有很大的偶然性,企业无法保证在实施同类项目的时候仍然能够完成任务。企业在一级上的项目实施对实施人员有很大的依赖性。

Level 2 - Repeatable:管理级

在管理级水平上,企业在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对相关的项目实施人员有相应的培训,对整个流程有监测与控制,并与上级单位对项目与流程进行审查。企业在二级水平上体现了对项目的一系列的管理程序。这一系列的管理手段排除了企业在一级时完成任务的随机性,保证了企业的所有项目实施都会得到成功。

Level 3 - Defined:定义级

在定义级水平上,企业不仅能够对项目的实施有一整套的管理措施,并保障项目的完成;而且,企业能够根据自身的特殊情况以及自己的标准流程,将这套管理体系与流程予以制度化这样,企业不仅能够在同类的项目上生到成功的实施,在不同类的项目上一样能够得到成功的实施。科学的管理成为企业的一种文化,企业的组织财富。

Level 4 - Managed:量化管理级

在量化管理级水平上,企业的项目管理不仅形成了一种制度,而且要实现数字化的管理。对管理流程要做到量化与数字化。通过量化技术来实现流程的稳定性,实现管理的精度,降低项目实施在质量上的波动。

Level 5 - Optimizing:优化级

在优化级水平上,企业的项目管理达到了最高的境界。企业不仅能够通过信息手段与数字化手段来实现对项目的管理,而且能够充分利用信息资料,对企业在项目实施的过程中可能出现的次品予以预防。能够主动地改善流程,运用新技术,实现流程的优化。

用自己语言简述 CMMI

CMMI 的全称为:Capability Maturity Model Integration,即能力成熟度模型集成。早期的能力成熟度模型是一种单一的模型其英文缩写为CMM,较多地用于软件工程。 随着应用的推广与模型本身的发展,改方法演绎成为一种被广泛应用的综合性模型,因此改名为CMMI模型。实际上,CMMI在软件与系统集成外的领域,如科研,工程,甚至于日常的管理都得到了广泛的应用,并取得了相当好的效果。

CMMI实际上是一种管理流程的标准化。遵循该模型的标准,就能够在管理上迈出一大步。相对于ISO9000的标准, CMMI有五个不同的标准。而每一个标准对企业的管理力度都有着不同的要求。企业可以改进管理模式,不断地提高自己的CMMI等级,从而达到提升管理水平的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值