SWSAD - Homework 1
Software System Analysis and Design
软件系统分析与设计指南
-
软件工程的定义
根据IEEE Standard 610.12给出的定义,软件工程是
(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;(2)在(1)中所述方法的研究。
-
解释导致 software crisis 本质原因、表现,述说克服软件危机的方法
本质原因:
软件危机的出现是由于计算机能力的迅速增加以及无法解决的问题的复杂性。由于计算机的计算能力快速增长,需要解决的问题更加复杂。随着软件复杂性的增加,因为现在的解决方法不足,许多软件问题出现。
- 软件危机的根源
- 软件的大量需求与软件生产力效率之间的矛盾
- 软件系统的复杂性与软件开发方法之间的矛盾
- 软件本身的特点
- 软件是一种抽象逻辑
- 软件是开发人员的智力劳动成果
- 软件具备强烈的个性化特征
- 软件规模日趋庞大,实现的业务逻辑与流程复杂
- 软件开发的客观因素
- 系统需求分析不足
- 开发周期管理不善
- 开发过程缺乏规范(软件开发不等于程序编写)
- 质量控制标准规程滞后
- 软件维护计划被忽视
- 软件开发的产业因素
- 软件企业的作坊式管理
- 软件企业规模的急剧膨胀
表现:
- 项目运行超预算
- 项目运行时间过长
- 软件效率很低
- 软件质量很差
- 软件通常不符合要求
- 项目难以管理,代码难以维护
- 软件从未交付过
克服软件危机的方法:
用现代工程的概念,原理,技术和方法进行计算机软件的开发,管理和维护,由此诞生了软件工程。软件工程主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本 、改进软件产品质量、提高软件生产率水平的目标。
- 正确认识计算机软件的内涵。
- 采用工程项目管理方法实施软件开发的组织管理。软件开发应该是一种组织良好、管理严密、协同配合的工程活动。
- 采用成熟的软件开发技术和方法,开发和使用适当的软件工具。
- 软件危机的根源
-
软件生命周期
软件生命周期 (Software Life Cycle, SLC) 是软件的产生直到报废或停止使用的生命周期。周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。常见有瀑布模型、螺旋模型、敏捷的模型等。
-
SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)
描述软件工程实践的知识域:
-
软件需求 (Software Requirements)
软件需求知识域涉及软件需求的引出、协商、分析、规范和确认。软件行业普遍承认,当这些活动执行得不好时,软件工程项目极易受到攻击。软件需求表示对软件产品的需求和约束,这些需求和约束有助于解决一些实际问题。
-
软件设计 (Software Design)
软件设计被定义为定义系统或组件的架构、组件、接口和其他特性的过程,以及(该)过程的结果(IEEE 1991)。
-
软件构造 (Software Construction)
软件构造是指通过详细设计、编码、单元测试、集成测试、调试和验证的组合来详细创建工作软件。
-
软件测试 (Software Testing)
测试是一项评估产品质量并通过识别缺陷来改进产品质量的活动。软件测试涉及根据有限的测试用例集上的预期行为对程序行为进行动态验证。这些测试用例是从(通常非常大)执行域中选择的。
-
软件维护 (Software Maintenance)
软件维护包括增强现有的能力,使软件适应新的和修改过的操作环境,以及纠正缺陷。这些类别被称为完善的、适应性的和纠正性的软件维护。
-
软件配置管理 (Software Configuration Management)
系统的配置是硬件、固件、软件的功能和/或物理特性,或这些特性的组合。它还可以被视为硬件、固件或软件项的特定版本的集合,根据特定的构建过程进行组合以满足特定的目的。
-
软件工程管理 (Software Engineering Management)
软件工程管理包括计划、协调、测量、报告和控制项目或程序,以确保软件的开发和维护是系统的、有纪律的和量化的。
-
软件工程过程 (Software Engineering Process)
软件工程过程知识域涉及软件生命周期过程的定义、实现、评估、测量、管理和改进。
-
软件工程模型和方法 (Software Engineering Models and Methods)
软件工程模型和方法知识域描述了包含多个生命周期阶段的方法;特定于特定生命周期阶段的方法由其他知识域涵盖。
-
软件质量 (Software Quality)
软件质量是一个普遍存在的软件生命周期问题,在许多Swebok v3 KAS中都有解决。
-
软件工程职业实践 (Software Engineering Professional Practice)
软件工程职业实践涉及软件工程师以专业、负责和道德的方式实践软件工程所必须具备的知识、技能和态度。
描述软件工程教育要求的知识域:
-
软件工程经济学 (Software Engineering Economics)
软件工程经济学知识域关注于在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。
-
计算基础 (Computing Foundations)
计算基础知识域涵盖了为软件工程实践提供必要计算背景的基本主题。
-
数学基础 (Mathematical Foundations)
数学基础知识域涵盖了为软件工程实践提供必要数学背景的基本主题。
-
工程基础 (Engineering Foundations)
工程基础知识域涵盖了为软件工程实践提供必要工程背景的基本主题。
-
-
简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
- Level 1 - Initial:初始级。软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
- Level 2 - Managed:可管理级。建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
- Level 3 - Defined:已定义级。已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
- Level 4 - Quantitatively Managed:量化管理级。分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
- Level 5 - Optimizing:优化管理级。过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
-
用自己语言简述 SWEBok 或 CMMI (约200字)
- **SWEBok:**软件工程知识体系指南。为了克服软件危机,IEEE 总结了软件工程核心知识体系的指南,描述了构建软件生产的最佳实践与公认的软件工程知识的框架。它的目的有:描述软件工程学科的内容;促进对全球软件工程的一致看法;明确软件工程相对于其他专业的位置和界限;为培训材料和课程开发提供基础;为软件工程师的认证和许可提供依据。SWEBokV3包含15个知识域,并包括一个引用列表,指向更详细的信息。SWEBok很好地总结了与软件工程相关的知识域。
- **CMMI:**能力成熟度模型集成。CMMI是一个过程级改进培训和评估计划。它的目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。CMMI根据企业的知识能力的不同,用5个级别(初始级、可管理级、已定义级、量化管理级、优化管理级)表示了企业的成熟程度,给出了企业的能力提升路径和企业能力评估的标准。CMMI能为企业带来价值,如帮助企业保证软件开发的质量与进度、控制成本、提高软件开发者的职业素养和提高管理水平等。