系统分析与设计第一次作业

1. 软件工程的定义

软件工程是指应用系统的、规范的和可量化的方法去开发、操作与维护软件,即是将工程应用在软件上,以及对这些方法的研究。

2.解释导致 software crisis 本质原因、表现,述说克服软件危机的方法

本质原因

由于软件的大量需求与软件生产力效率之间的矛盾以及软件系统的复杂性与软件开发方法之间的矛盾

表现

项目运行超出预算

项目运行超过时间

软件质量低落

软件通常不匹配需求

项目无法管理,且代码难以维护

克服软件危机的方法

借鉴其他工程项目中行之有效的原理、概念、技术与方法,特别是吸取人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中做到良好的组织,严格的管理,相互友好的协作。

推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和做法。

根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具合成一个整体,形成一个良好的软件开发环境。

3.软件生命周期

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

4.SWEBoK 的 15 个知识域

1.软件需求(Software Requirements)
软件需求KA关注软件需求的启发,协商,分析,规范和验证。在软件行业中,人们普遍认为,当需求相关的活动表现不佳时,软件项目是非常脆弱的。软件需求表达了对软件产品的需求和限制,这些需求和限制有助于解决一些现实问题。
2.软件设计(Software Design)
设计被定义为定义系统或组件的体系结构,组件,接口和其他特征的过程以及该过程的结果(IEEE 1991)。软件设计KA涵盖了设计过程和最终产品。软件设计过程是一个软件工程生命周期活动,其分析软件需求以产生软件内部结构及其行为的描述,后者将作为软件构造的基础。软件设计(其结果)必须要描述软件体系结构——即软件如何分解和组织成组件以及这些组件之间的接口。它还必须详细描述组件使得它们能够建立。
3.软件建构(Software Construction)
软件建构是指通过结合详细设计、编码、单元测试、集成测试、调试和验证来详细创建工作软件。软件建构KA包括与满足需求和设计约束的软件程序开发相关的主题。该KA涵盖了软件建构基础,软件管理建设,建构技术,实践考虑和软件建构工具。
4.软件测试(Software Testing)
测试是一项旨在评估产品质量并通过识别缺陷来改进产品质量的活动。 软件测试涉及在有限的测试用例集上针对预期行为动态验证程序的行为。 这些测试用例是从(通常非常大的)执行域中选择的。 软件测试KA包括软件测试的基础知识,测试技术,人机界面测试与评估,与测试有关的措施和实际考虑。
5.软件维护与更新(Software Maintenance)
软件维护包括增强现有功能,调整软件以在新的和修改的操作环境中运行,以及纠正缺陷。这些类别称为完善,自适应和纠正性软件维护。 软件维护KA包括软件维护的基础知识(维护的性质和需求,维护类别,维护成本),软件维护中的关键问题(技术问题,管理问题,维护成本估算,软件维护测量),维护过程,软件维护技术(程序理解,重新设计,逆向工程,重构,软件退役),灾难恢复技术和软件维护工具。
6.软件配置管理(Software Configuration Management, SCM)
系统的配置是硬件、固件、软件和这些的组合的功能和/或物理特征。它还可以被视为根据特定构建过程组合的特定版本的硬件、固件或软件项的集合,以满足特定目的。因此,软件配置管理(SCM)是在不同时间点识别系统配置的规则,用于系统地控制配置的改变,以及在整个软件生命周期中维持配置的完整性和可追溯性。软件配置管理KA涵盖SCM过程的管理,软件配置识别,控制,状态核算,审计,软件发布管理和交付和软件配置管理工具。
7.软件工程管理(Software Engineering Management)
软件工程管理涉及规划,协调,测量,报告和控制项目或程序,以确保软件的开发和维护是系统化的,规范化的和量化的。软件工程管理KA涵盖了启动和范围定义(确定和协商需求,可行性分析以及要求的审查和修订),软件项目计划(过程计划,工作量估算,成本和进度,资源分配,风险分析,质量计划),软件项目制定(计量,报告和控制,收购和供应商合同管理),产品验收,审查和分析项目绩效,项目结束和软件管理工具。
8.软件工程过程(Software Engineering Process)
软件工程KA关注软件生命周期过程的定义,实施,评估,测量,管理和改进。涵盖的主题包括流程实施和变更(流程基础架构,流程实施和变更模型以及软件流程管理),流程定义(软件生命周期模型和流程,流程定义,流程适应和流程自动化的符号),过程评估模型和方法,测量(过程测量,产品测量,测量技术和测量结果的质量)和软件处理工具。
9.软件工程建模与方法(Software Engineering Models and Methods)
软件工程建模和方法KA解决了涵盖多个生命周期阶段的方法,而其他KA则涵盖特定生命周期阶段的特定方法。SEMM涵盖的主题包括建模(软件工程模型的原理和属性,语法 vs 语义 vs 不变量,前置条件,后置条件和不变量),模型类型(信息,结构和行为模型),分析(分析正确性,完整性,一致性,质量和相互作用,可追溯性以及权衡分析),和软件开发方法(启发式方法,形式方法,原型方法和敏捷方法)。
10.软件质量(Software Quality)
软件质量是许多SWEBOK V3 KA中普遍关注的软件生命周期问题。此外,软件质量KA还包括软件质量的基础知识(软件工程文化,软件质量特性,软件质量的价值和成本以及软件质量改进),软件质量管理流程(软件质量保证,验证和确认,审核和审计)和实际考虑(缺陷表征,软件质量测量和软件质量工具)。
11.软件工程专业实践(Software Engineering Professional Practice)
软件工程专业实践关注软件工程师必须具备的专业的、负责的和道德的软件工程知识,技能和态度。软件工程专业实践KA涵盖专业性(专业行为,专业协会,软件工程标准,雇佣合同和法律问题),道德准则,小组动态(团队合作,认知问题复杂性,与利益相关者互动,处理不确定性和模糊性,处理多元文化环境)和沟通技巧。
12.软件工程经济学(Software Engineering Economics)
软件工程经济学KA关注的是在业务环境中做出决策,以使技术决策与组织的业务目标保持一致的问题。涵盖的主题包括软件工程经济学的基本原理(提案,现金流量,货币时间价值,计划视野,通货膨胀,折旧,替代和退休决策),非营利性决策(成本效益分析,优化分析),评估,经济风险和不确定性(估算技术,风险决策和不确定性)以及多属性决策(价值和衡量尺度,补偿和非补偿技术)。
13.计算基础(Computing Foundations)
计算基础KA涵盖了提供软件工程实践所需的计算背景的基础主题。涵盖的主题包括问题解决技术,抽象,算法和复杂性,编程基础,并行和分布式计算的基础知识,计算机组成,操作系统和网络通信。
14.数学基础(Mathematical Foundations)
数学基础KA涵盖了提供软件工程实践所必需的数学背景的基础主题。 涵盖的主题包括集合,关系和功能,基本命题和谓词逻辑,证明方法,图和树,离散概率,语法和有限状态机,以及数论。
15.工程基础(Engineering Foundations)
工程基础KA涵盖了提供软件工程实践所必需的工程背景的基础主题。 其涵盖的主题包括经验方法和实验技术,统计分析,测量和指标,工程设计,仿真与建模,以及根本原因分析。

5.简单解释 CMMI 的五个级别

CMMI 的全称为:Capability Maturity Model Integration,即能力成熟度模型集成。CMMI是CMM模型的最新版本。

1.初始级:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。

2.可管理级:建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。

3.已定义级:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。

4.量化管理级:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。

5.优化管理级:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

6.用自己语言简述 SWEBok 或 CMMI

CMMI是能力成熟度模型,其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。其想法是集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件开发中的困难。CMMI 有两种表述方式:连续式与阶段式。连续式更加能反应过程改进的本质,并且能更好地引导企业把过程改进做到实处,但连续式比较难以理解。阶段式是直接继承 CMM 的,大家都比较容易理解,而且阶段式有级别之分,便于企业在商业上进行宣传,但很容易导致企业为了过级而过级。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值