系统分析与设计作业1

1. 软件工程的定义

Software engineering is “(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software,” and “(2) the study of approaches as in (1).” –– IEEE Standard 610.12

软件工程是“(1)应用系统化的、学科化的和定量化的方法来开发、运行和维护软件,即,将工程应用到软件,”以及“(2)对(1)中各种方法的研究。” –– IEEE 标准 610.12

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

  • 软件危机原因
    (1) 本质原因
    The software crisis was due to the rapid increases in computer power and the complexity of the problems that could not be tackled. The main cause is that improvements in computing power had outpaced the ability of programmers to effectively utilize those capabilities.
    (2) 具体原因
    ① 用户需求不明确
    ② 缺乏正确的理论指导
    ③ 软件开发规模越来越大
    ④ 软件开发复杂度越来越高
  • 软件危机表现
    ① 软件开发进度难以预测
    ② 软件开发成本难以控制
    ③ 软件常常不能满足需求
    ④ 软件产品质量无法保证
    ⑤ 软件产品难以维护
    ⑥ 软件缺少适当的文档资料
  • 软件危机解决方法
    用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理和维护,由此诞生了软件工程。

3. 软件生命周期

在时间维度,对软件项目任务进行划分,又称为软件开发过程。常见有瀑布模型、螺旋模型、敏捷模型等。

4. SWEBoK 的 15 个知识领域(An Overview of the SWEBOK Guide)

描述软件工程实践的知识领域:

  • 软件需求
    软件需求知识领域涉及软件需求的引出、协商、分析、规范和验证。在软件行业中,人们普遍承认当这些活动执行得很糟糕时,软件工程项目是非常脆弱的。软件需求表达了对软件产品的需要和约束,这些需要和约束有助于解决一些实际问题。
  • 软件设计
    设计是指定义结构、组件、接口和其它系统或组件特征的过程以及该过程的结果。软件设计知识领域包括设计过程和最终产品。软件设计过程是软件工程生命周期活动,在该过程中,软件需求得到分析,以产生对软件内部结构及其行为的描述,这些描述将作为软件构建的基础。软件设计(结果)必须描述软件结构——即如何将软件分解和组织进组件以及这些组件之间的接口。
  • 软件构造
    软件构造是指通过将详细的设计、编码、单元测试、集成测试、调试和验证相结合,对能够工作的软件进行详细的创造。软件构造知识领域包括与能够满足需求和设计约束的软件程序开发相关的主题。软件构造知识领域包括软件构造的基础:管理软件构造,构造技术,实际考虑和软件构造工具。
  • 软件测试
    测试是一项为了评估产品质量以及通过识别缺陷提高产品质量而进行的活动。软件设计包括在测试用例的一个有限集合上对程序行为和预期行为进行动态验证。这些测试用例是从(通常非常大)的执行域中选择的。软件测试知识领域包括软件测试的基础:用户接口测试和评估,与测试相关的措施和实际考虑。
  • 软件维护
    软件维护包括增强现有功能,使软件适应新的操作环境,以及修正缺陷。这些类别被称为完美的、自适应的和正确的软件维护。软件维护知识领域包括软件维护(维护的性质和需要,维护的类别,维护的成本)的基础;软件维护的关键问题(技术问题,管理问题,维护成本估计,软件维护度量);维护过程;软件维护技术(程序理解,再工程,逆向工程,重构,软件退休);灾难恢复技术和软件维护工具。
  • 软件配置管理
    系统配置是硬件、固件、软件的功能和/或物理特征,或者是这些特征的组合。它也可以被看作是硬件、固件或软件项目为了服务一个特定目标根据特定构建过程而组合起来的特定版本的集合。因此,软件配置管理(SCM)是在不同的时间点识别系统配置的学科,以便系统地控制配置的更改,并在整个软件生命周期维护配置的完整性和可追溯性。软件配置管理知识领域包括软件配置管理过程的管理;软件配置识别、控制、状态核算、审计;软件发布管理和交付;以及软件配置管理工具。
  • 软件工程管理
    软件工程管理包括计划、协调、度量、报告和控制一个项目或程序,以确保软件的开发和维护是系统的、有纪律的和量化的。软件工程管理知识领域包括初始化和范围定义(确定和协商需求,可行性分析,以及需求的评审和修订);软件项目计划(过程计划,工作量、成本和进度的估计,资源分配,风险分析,质量规划);软件项目制定(度量,报告,以及控制;采购和供应商合同管理);产品验收;项目性能的审核与分析;项目终止;以及软件管理工具。
  • 软件工程过程
    软件工程知识领域涉及软件生命周期过程的定义、实现、评估、度量、管理和改进。所涵盖的主题包括过程实现和变更(过程基础设施,过程实现和变更模型,以及软件过程管理);过程定义(软件生命周期模型和过程,过程定义、过程适应和过程自动化的符号);过程评估模型和方法;度量(过程度量,产品度量,度量技术,以及度量结果质量);以及软件过程工具。
  • 软件工程模型和方法
    软件工程模型和方法知识领域提出了包含多个生命周期阶段的方法;针对特定生命周期阶段的方法包含在其它知识领域。所涵盖的主题包括建模(软件工程模型的原理和性质;语法、语义、不变量的对比;前置条件;以及不变量);模型类型(信息,结构和行为模型);分析(对正确性、完整性、一致性、质量和交互进行分析;可追溯性;以及权衡分析);以及软件开发方法(启发式方法,原型设计方法和敏捷方法)。
  • 软件质量
    软件质量是一个普遍的软件生命周期问题,它在SWEBOK V3的很多知识领域中均被提及。另外,软件质量知识领域包括软件质量基础(软件工程文化,软件质量特征,软件质量价值和成本,以及软件质量改进);软件质量管理过程(软件质量保证,核实和批准,评价和审计);以及实际考虑(缺陷特征,软件质量度量,以及软件质量工具)。
  • 软件工程专业实践
    软件工程专业实践涉及软件工程师必须具备的知识、技能和态度,以一种专业、负责和道德的方式来实践软件工程。软件工程专业实践知识领域包括专业性(专业行为,专业社会,软件工程标准,雇佣合同,以及法律问题);伦理准则;团队动态(在团队中工作,认知问题复杂性,与利益相关者互动,处理不确定性和模糊性,处理多文化环境);以及沟通技能。

描述软件工程教育需求的知识领域:

  • 软件工程经济学
    软件工程经济学知识领域涉及在商业背景下做出决策,以使技术决策和组织的商业目标保持一致。所涵盖的主题包括软件工程经济学基础(提议,现金流动,金钱的时间价值,计划期限,通货膨胀,贬值,替换和退休决定);非营利性决策(成本-利益分析,优化分析);评估经济风险和不确定性(技术估计,风险和不确定性下的决策);以及多属性决策(价值和度量制度,补偿和非补偿技术)。
  • 计算基础
    计算基础知识领域包括为软件工程实践提供必要的计算背景的基本主题。所涵盖的主题包括解决问题技术,抽象,算法和复杂度,编程基础,并行和分布式计算基础,计算机组织,操作系统,以及网络通信。
  • 数学基础
    数学基础知识领域包括为软件工程实践提供必要的数学背景的基本主题。所涵盖的主题包括集合,关系,以及函数;基本命题和谓词逻辑;证明技术;图和树;离散型概率;语法和有限状态机;以及数论。
  • 工程基础
    工程基础知识知识领域包括为软件工程实践提供必要的工程背景的基本主题。所涵盖的主题包括经验方法和实验技术;统计分析;测量和度量;工程设计;仿真和建模;以及根本原因分析。

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

  • Level 1 - Initial:
    无序,自发生产模式。
  • Level 2 - Managed:
    建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
  • Level 3 - Defined:
    已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。
  • Level 4 – Quantitatively Managed:
    分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。
  • Level 5 - Optimizing:
    过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

6. 用自己语言简述 SWEBok 或 CMMI (约200字)

软件工程知识体系(Software Engineering Body of Knowledge, SWEBok)是IEEE Computer Society为了克服软件危机而构建的软件生产的最佳实践与相关知识的框架,用于指导软件工程人才的培养与学科建设。2014 V3版的SWEBoK将知识分为软件工程实践和基础教育两个部分,共15个知识领域,其中软件需求和软件设计是最重要的两个领域。
建立SWEBok指南有5个目的:(1)促进世界范围内对软件工程的一致观点;(2)阐明软件工程相对其它学科的位置并确立它们的分界;(3)刻画软件工程学科的内容;(4)提供使用知识体系的主题;(5)为开发课程表和个人认证与许可材料提供一个基础。
知识体系已经存在于发表的文献中,而指南描述知识体系的哪些部分已经被普遍接受,并将这些部分组织起来,为其提供一个使用的主题。软件工程要成为合理的工程学科和一个被认可的职业,在核心知识体系上达成一致至关重要,而软件工程知识体系指南为实现这一目标提供了桥梁。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值