系统分析与设计第一次作业
1.软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己认可的定义:
BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必须的资料。
IEEE:在软件工程师将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。
ISO 9000:软件工程是输入转化为输出的一组彼此相关的资源和活动。
比较认可的一种定义认为:软件工程师研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当时能够得到的最好的技术方法结合起来。
2.软件危机 (software crisis) 是计算科学早期使用的术语,用于描述在所需时间内编写有用且高效的计算机程序的困难性。
软件危机出现的本质原因是:
计算机能力的迅速提高和无法解决的问题的复杂性。随着软件复杂性的提高,由于现有方法不足,许多软件问题涌现了出来。
软件危机表现在:项目超出运算、项目运行超时、软件效率很低、软件质量很差、软件不符合需求、项目难以管理、软件从未交付。
克服软件危机的方法:
(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
3.在时间维度,对软件项目任务划分为不同阶段,以改善设计、产品管理和项目管理,又称为软件开发过程。常见有瀑布模型、螺旋模型、敏捷开发模型等。
4.Software Requirements:软件需求
关注软件需求的启发,协商,分析,规范和验证。软件需求表达了对软件产品的需求(needs)和限制,有助于解决一些现实问题。
Software Design:软件设计
定义系统或组件的体系结构,组件,接口和其他特征的过程以及该过程的结果。
Software Construction:软件构建
指通过结合详细设计,编码,单元测试,集成测试,调试和验证来详细创建工作软件。
Software Testing:软件测试
测试是一项旨在通过识别缺陷来评估产品质量并改进产品质量的活动。
Software Maintenance:软件维护
软件维护包括增强现有功能,调整软件以在新的和修改的操作环境中运行,以及纠正缺陷。这些类别称为完善,自适应和纠正性软件维护。
Software Configuration Management:软件配置管理
软件配置管理(SCM)是在不同时间点识别系统配置的规训(discipline),用于系统地控制配置的改变,以及在整个软件生命周期中维持配置的完整性和可追溯性。
Software Engineering Management:软件工程管理
软件工程管理涉及规划,协调,测量,报告和控制项目或程序,以确保软件的开发和维护是系统化的,规范化的和量化的。
Software Engineering Process:软件工程过程
关注软件生命周期过程的定义,实施,评估,测量,管理和改进。
Software Engineering Models and Methods:软件工程模型和方法
解决了涵盖多个生命周期阶段的方法。
Software Quality:软件质量
是许多SWEBOK V3 KAs中普遍存在的软件生命周期关心问题。
Software Engineering Professional Practice:软件工程专业实践
关注软件工程师要专业、负责、道德地实践软件工程所必须具备的知识,技能和态度。
Software Engineering Economics :软件工程经济学
软件工程经济学KA关注的是在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。
Computing Foundations:计算基础
计算基础KA涵盖了提供软件工程实践所需的计算背景的基础主题。
Mathematical Foundations:数学基础
数学基础KA涵盖了提供软件工程实践所必需的数学背景的基础主题。涵盖的主题包括集合,关系和功能;基本命题和谓词逻辑;证明技巧;图论和树;离散概率;语法和有限状态机;数论。
Engineering Foundations:工程基础
工程基础KA涵盖了提供软件工程实践所必需的工程背景的基础主题。涵盖的主题包括经验方法和实验技术;统计分析;测量和指标;工程设计;仿真与建模;根本原因分析。
5.Level1-initial: 过程不可预测、控制不良和反应性差
Level2-managed: 以项目为特征的过程,通常是反应性的
Level3-defined: 以组织和主动性为特征的过程(项目根据组织的标准定制其过程)
Level4-Quantitatively Managed: 测量和控制的过程
Level5-Optimizing: 关注过程改进
6.CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成,其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。其所依据的想法是:只要集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件开发中的困难。CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。