-
软件工程定义:是对软件的开发,操作维护应用系统化,规范化,可量化的方法,将工程方法应用于软件,并且软件工程是对这方法的研究。
-
software crisis
- 本质原因:
I.需求不明确,软件开发之前,用户不清楚自己的需求;用户对软件开发需求描述不精确;软件开发过程用户提出修改要求;软件开发人员对用户需求理解有差异。
II.缺乏正确理论指导,复杂开发逻辑不能只依赖开发人员的智力投入
III.软件开发规模越来越大,需要开发人员越来越多,而管理人员缺乏管理大型项目的经验,导致开发人员之间信息不能及时的进行交流。
IV. 软件开发复杂度越来越高,一旦人们采用先进的组织形式、开发方法和工具提高了软件开发效率和能力,新的、更大的、更复杂的问题又摆在人们的面前。 - 软件危机的表现
I. 项目超出预算
II. 项目超出计划时间
III. 软件效率十分低下
IV. 软件质量低下
V. 软件经常不满足用户需求
VI. 项目难以维护
VII. 软件没有交付使用 - 克服软件危机的方法
I.正确认识计算机软件的内涵
II. 采用工程项目管理方法实施软件的开发管理
III.采用成熟的软件开发技术和方法,使用适当的软件工具
- 本质原因:
-
软件生命周期:从时间维度可以计划,需求分析,设计,开发,测试,运营维护六个过程。
-
SWEBoK 的 15 个知识域
I. 软件需求涉及软件需求的引出,协商,分析,规范和确认。软件行业普遍承认,当这些活动执行的不好,软件工程项目很脆弱,容易受到攻击。软件需求表示了对软件产品的需求和约束,这些需求和约束有助于解决实际问题。
II. 软件设计被定义系统或组件的架构,组件,接口和其它特性的过程,以及该过程的结果。软件设计涵盖了设计过程和最终产品,软件设计过程是软件工程生命周期活动,在该活动中分析软件需求,以便对软件的内部结构及其行为进行描述,作为其构建的基础。软件设计(结果)必须描述软件架构——也就是说,软件是如何分解和组织成组件的,以及这些组件之间的接口。它还必须在细节层次上描述组件,以实现其构造。
III. 软件开发是指通过详细设计、编码、单元测试、集成测试、调试和验证的组合来详细创建工作软件。软件构建KA包括与满足其需求和设计约束的软件程序开发相关的主题。涵盖软件构建基础知识、管理软件构建、构建技术、实践考虑和软件构建工具
IV. 软件测试是一项评估产品质量并通过识别缺陷来改进产品质量的活动。软件测试涉及根据有限的测试用例集上的预期行为对程序行为进行动态验证。这些测试用例是从(通常非常大)执行域中选择的。软件测试包括软件测试的基础知识、测试技术、人机界面测试和评估、测试相关措施和实际考虑。
V. 软件维护包括增强现有的能力,使软件适应新的和修改过的操作环境,以及纠正缺陷。这些类别被称为完善的、适应性的和纠正性的软件维护。软件维护包括软件维护的基础知识(维护的性质和需要、维护的类别、维护成本);软件维护中的关键问题(技术问题、管理问题、维护成本估算、软件维护的测量);维护过程;软件维护技术。iques(程序理解、重新设计、逆向工程、重构、软件退役);灾难恢复技术和软件维护工具。
VI. 软件配置管理系统的配置是硬件、固件、软件的功能和/或物理特性,或这些特性的组合。它还可以被视为硬件、固件或软件项的特定版本的集合,根据特定的构建过程进行组合以满足特定的目的。因此,软件配置管理(SCM)是一门在不同的时间点识别系统配置的学科,目的是系统地控制配置的更改,并在整个软件生命周期中保持配置的完整性和可追溯性。软件配置管理包括对SCM过程的管理;软件配置识别、控制、状态核算、审核;软件发布管理和交付;以及软件配置管理工具。
VII. 软件工程管理包括计划、协调、测量、报告和控制项目或程序,以确保软件的开发和维护是系统的、有纪律的和量化的。软件工程管理包括启动和范围定义(确定和协商需求、可行性分析以及需求的评审和修订);软件项目规划(过程规划、工作量、成本和进度估计、资源分配、风险分析、质量规划);软件项目E投资(测量、报告和控制;采购和供应商合同管理);产品验收;项目绩效的审查和分析;项目结束;以及软件管理工具。
VIII. 软件工程涉及软件生命周期过程的定义、实现、评估、测量、管理和改进。所涵盖的主题包括过程实施和变更(过程基础设施、过程实施和变更模型以及软件过程管理);过程定义(软件生命周期模型和过程、过程定义注释、过程适应和过程自动化);过程评估模型和方法;度量(过程测量、产品测量、测量技术和测量结果质量)和软件过程工具。
IX. 软件工程模型和方法KA描述了包含多个生命周期阶段的方法;特定于特定生命周期阶段的方法由其他KA涵盖。所涵盖的主题包括建模(软件工程模型的原理和属性;语法与语义与不变量;前提条件、后条件和不变量);模型类型(信息、结构和行为模型);分析(分析正确性、完整性、一致性、质量和交互;可追溯性;和d权衡分析);和软件开发方法(启发式方法、形式方法、原型方法和敏捷方法)。
X. 软件质量是一个普遍存在的软件生命周期问题,在许多Swebok v3 KAS中都有解决。此外,软件质量KA包括软件质量基础(软件工程文化、软件质量特征、软件质量的价值和成本以及软件质量改进);软件质量管理过程(软件质量保证、验证和确认、评审和审计);以及实用性。l注意事项(缺陷描述、软件质量度量和软件质量工具)。
XI. 软件工程专业实践涉及软件工程师以专业、负责和道德的方式实践软件工程所必须具备的知识、技能和态度。软件工程专业实践KA涵盖专业性(专业行为、专业协会、软件工程标准、雇佣合同和法律问题);道德规范;群体动力学(团队合作、认知问题复杂性、与利益相关者互动、处理不确定性和模糊性、处理具有多元文化环境);以及沟通技巧。
XII. 软件工程经济学KA关注于在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。所涵盖的主题包括软件工程经济学基础(提案、现金流、货币时间价值、规划范围、通货膨胀、折旧、重置和退休决策);非营利决策(成本效益分析、优化分析);估算、经济风险和不确定性(估算技术,DEC)风险和不确定性下的ISION);以及多属性决策(价值和测量尺度、补偿和非补偿技术)。
XIII. 计算基础涵盖了为软件工程实践提供必要计算背景的基本主题。所涵盖的主题包括问题解决技术、抽象、算法和复杂性、编程基础、并行和分布式计算基础、计算机组织、操作系统和网络通信。
XV. 数学基础涵盖了为软件工程实践提供必要数学背景的基本主题。所涉及的主题包括集合、关系和函数;基本命题和谓词逻辑;证明技术;图和树;离散概率;语法和有限状态机;以及数论。
XVI. 工程基础涵盖了为软件工程实践提供必要工程背景的基本主题。涵盖的主题包括经验方法和实验技术;统计分析;测量和度量;工程设计;模拟和建模;以及根本原因分析。 -
简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
I.Level 1 - Initial:无序,自发生产模式, 没有管理等,全靠自由发挥, 成功取决于个人努力。
II. 可管理级: 项目管理、软件配置管理、分析设计、产品质量管理自然提上意识日程。你需要所有客户负责。(项目成功需要管理和规范)
III. 已定义级:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
IV. 量化管理级: 分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
V. 优化管理级: 过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。 -
CMMI: 成熟度集成模型,它通过对软件企业的管理等能力的不同,用不同的级别来评价一个企业的成熟性,分成了5个级别,从毫无管理到大企业的规范化,量化开发过程管理和人才管理,不仅可以让企业可以有根据,有路径的提升自己的等级,也可以让外界在选择不同的软件公司合作的时候,可以有根据的进行选择,这样的话可以促进软件企业对软件工程过程进行管理和改进,增加开发与改进能力,从而能按时的不超预算地开发出高质量的软件。CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。
系统分析(1)
最新推荐文章于 2022-08-04 19:13:45 发布