系统分析与设计——作业一
软件工程的定义
软件工程即指应用系统的、规范的、可量化的方法来开发、操作和维护软件的过程,即把工程化应用于软件开发中以及对这些过程相关的方法的研究。
解释导致 software crisis 本质原因、表现,述说克服软件危机的方法
-
原因
- 用户需求不明确
- 缺乏正确的理论指导
- 软件开发规模越来越大
- 软件开发复杂度越来越高
- 软件维护成本越来越高
-
表现
- 软件开发进度难以预测
- 软件开发成本难以控制
- 用户对产品功能难以满足
- 软件产品质量无法保证
- 软件产品难以维护
- 软件缺少适当的文档资料
-
方法
- 找到更满足大众需求的软件进行开发
- 加大软件工程人才培养和相关学科的建设力度
- 构建软件生成的实践和相关知识的框架
- 充分吸收借鉴已有的软件开发的经验
- 寻找更科学的更合理的软件开发和管理的方法
- 尽可能把软件维护的成本降低
软件生命周期
软件生命周期(software lifecycle)是指一个软件的概念被提出并着手开始开发开始,到这个软件失去使用价值以致消亡的整个过程。在时间维度中,对软件项目任务进行划分,又称为软件开发过程。常见有瀑布模型、螺旋模型、敏捷的模型等。
SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)
- 软件需求(Software Requirements)
软件要求KA关注软件需求的启发,协商,分析,规范和验证。 在软件行业中,人们普遍认为,当这些活动表现不佳时,软件工程项目非常容易受到攻击。 软件需求表达了对软件产品的需求和限制,这些需求和约束有助于解决一些现实问题。 - 软件设计(Software Design)
软件设计过程是软件工程生命周期活动,其中分析软件需求以产生软件内部结构及其行为的描述,其将作为其构造的基础。 软件设计必须描述软件体系结构,即软件如何分解和组织成组件以及这些组件之间的接口。 它还必须描述能够构建它们的详细程度的组件。 - 软件构建(Software Construction)
软件构建是指通过结合详细设计,编码,单元测试,集成测试,调试和验证来详细创建工作软件,包括了与满足其要求和设计约束的软件程序开发相关的主题以及软件建构基础,软件管理建设,建构技术,实践考虑和软件建构工具等。 - 软件测试(Software Testing)
测试是一项旨在评估产品质量并通过识别缺陷来改进产品质量的活动。其涉及在有限的测试用例集上针对预期行为动态验证程序的行为,包括了软件测试的基础知识、测试技术、人机界面测试与评估、与测试有关的措施和实际考虑。 - 软件维护与更新(Software Maintenance)
软件维护包括增强现有功能,调整软件以在新的和修改的操作环境中运行,以及纠正缺陷。 - 软件配置管理(Software Configuration Management, SCM)
软件配置管理(SCM)是在不同时间点识别系统配置的规则,用于系统地控制配置的改变,以及在整个软件生命周期中维持配置的完整性和可追溯性。 - 软件工程管理(Software Engineering Management)
软件工程管理涉及规划,协调,测量,报告和控制项目或程序,以确保软件的开发和维护是系统化的,规范化的和量化的。 - 软件工程过程(Software Engineering Process)
软件工程关注软件生命周期过程的定义,实施,评估,测量,管理和改进。 - 软件工程建模与方法(Software Engineering Models and Methods)
软件工程模型和方法KA解决了涵盖多个生命周期阶段的方法; 其他KAs涵盖特定生命周期阶段的特定方法。 涵盖的主题包括建模(软件工程模型的原理和属性;语法与语义与不变量;前置条件,后置条件和不变量); 模型类型(信息,结构和行为模型); 分析(分析正确性,完整性,一致性,质量和相互作用;可追溯性;以及权衡分析); 和软件开发方法(启发式方法,形式方法,原型方法和敏捷方法)。 - 软件质量(Software Quality)
软件质量是普遍存在的软件生命周期问题。其还包括软件质量的基础知识(软件工程文化,软件质量特性,软件质量的价值和成本以及软件质量改进)、软件质量管理流程(软件质量保证,验证和确认,审核和审核)和实际考虑(缺陷表征,软件质量测量和软件质量工具)。 - 软件工程专业实践(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字)
SWEBokq全称Software Engineering Body of Knowledge,即软件工程知识体系。其目的是构建软件生产的最佳实践与相关知识的框架,指导软件工程人才的培养与学科建设。它是一个国际标准ISO/IEC TR,指定了普遍接受的软件工程知识体系的指南,定义了一个专业的软件工程师所应具备的软件工程领域知识,提供了软件工程课程、训练以及认证的基础,建立了软件工程职业中合适的准则和规范集。在第三版中SWEBoK将软件工程本体知识分为15个知识域,这些知识域又分为两类,分别是软件工程实践知识域和软件工程教育基础知识域。SWEBoK致力于促进全球对软件工程的一致观点,表明软件工程与其他相关学科的异同,刻画软件工程学科的内容,推动了软件工程学科的发展。
参考资料