系统分析与设计作业一

1. 软件工程的定义

  • 软件开发是一个有计划、分阶段、严格按照标准或规范进行的工程活动。
  • 软件工程将系统的、规范的、可度量的方法应用于软件的开发、运行和维护的过程。将工程化应用于软件开发过程中,对上述方法进行研究。
  • 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程化的方法来开发和维护软件,把经过实践考验而证明正确的工程管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效的维护它。这就是软件工程。

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

2.1 软件危机的本质原因

软件的大量需求与软件生产力效率之间的矛盾;软件系统的复杂性与软件开发方法之间的矛盾。即主要原因是计算能力的提高已经超过了程序员有效利用这些能力的能力。

2.2 软件危机的表现

  • 项目运行超预算
  • 项目运行时间过长
  • 软件效率很低
  • 软件质量很差
  • 软件通常不符合要求
  • 项目难以管理,代码难以维护
  • 软件从未交付过

2.3 克服方法

  • 正确认识计算机软件的内涵。
  • 采用工程项目管理方法实施软件开发的组织管理。
  • 软件开发应该是一种组织良好、管理严密、协同配合的工程活动。
  • 采用成熟的软件开发技术和方法,开发和使用适当的软件工具。
  • 用现代工程的概念,原理,技术和方法进行计算机软件的开发,管理和维护,由此诞生了软件工程。

3. 软件生命周期

  • 计算机软件有一个孕育、诞生、成长、成熟、衰亡的生存过程,这样的过程称为软件的生命周期 (也称软件开发生命周期 SDLC)。软件生命周期将软件开发过程划分为若干阶段,每个阶段有明确的任务目标和运行机制,从而使复杂的软件开发过程能够得到适当的控制和管理。
  • 软件生命周期一般包括可行性分析与计划、需求分析、设计 (概要设计和详细设计)、编码实现、测试、运行与维护等活动。这些活动应当以适当的方式分配到不同的阶段去完成。
  • 大多数现代开发过程都可以模糊地描述为敏捷。其他方法包括瀑布式,原型设计,迭代和增量开发,螺旋式开发,快速应用程序开发和极端编程。

3.1 可行性分析与计划阶段

  • 确定软件开发的总体目标,给出功能、性能、可靠性以及接口等方面的要求,进行可行性分析。
  • 估计可利用的开发资源 (硬件、软件、人力等)、成本、效益、开发进度,进行投资-收益分析,制订开发计划。
  • 提交可行性分析报告、开发计划等文档。

3.2 需求分析阶段

  • 分析用户提出的要求,给出用户需求详细定义,确定软件系统的各项功能、性能需求和设计约束,确定对文档编制的要求。
  • 提交软件需求说明、软件规格说明、数据要求说明等文档和初步的用户手册.

3.3 设计阶段

  • 概要设计/逻辑设计:把各项软件需求转换成软件的体系结构。结构中的每一个组成部分意义明确,并和某些需求相对应。
  • 详细设计/物理设计:对按照概要设计分解的每个模块所要完成的工作进行具体的描述,提供源程序代码编写的直接依据。
  • 提交概要结构设计说明书、详细设计说明书和测试计划初稿等文档。

3.4 实现阶段

  • 完成源程序的编码、编译 (或汇编) 和运行调试,得到没有语法错误的程序清单。程序结构良好、清晰易读,且与设计相一致。
  • 编写进度日报、周报和月报 (取决于项目的重要性和规模)。
  • 编制测试计划。
  • 提交用户手册、操作手册等面向用户的文档。

3.5 测试阶段

  • 全面测试目标软件系统,并检查审阅已编制的文档,提交测试分析报告。逐项评价所实现的程序、文档以及开发工作本身,提交项目开发总结报告。

3.6 运行与维护阶段

  • 软件提交给用户后,在运行使用中得到持续维护,根据用户新提出的需求进行必要而且可能的扩充、删改、更新和升级。
  • 软件维护包括改正性维护 (发现错误)、适应性维护 (适应运行环境变化) 和完善性维护 (增强功能)。

4. SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)

4.1 软件需求

  • 软件需求知识域关注软件需求的引出,协商,分析,规范和验证。在软件行业中,人们普遍认为,当这些活动表现不佳时,软件工程项目非常容易受到攻击。软件需求表达了对软件产品的需求和限制,这些需求和约束有助于解决一些现实问题。

4.2 软件设计

  • 设计被定义为两个限定的体系结构,组件,接口,以及其它的系统或部件的特性的过程中,以及该过程的结果(IEEE 1991)。软件设计知识域涵盖了设计过程和最终产品。软件设计过程是软件工程生命周期活动,其中分析软件需求以产生软件内部结构及其行为的描述,其将作为其构造的基础。软件设计(结果)必须描述软件体系结构——即软件如何分解和组织成组件以及这些组件之间的接口。它还必须描述能够构建它们的详细程度的组件。

4.3 软件构建

  • 软件构建是指通过结合详细设计,编码,单元测试,集成测试,调试和验证来详细创建工作软件。软件构建知识域包括与满足其要求和设计约束的软件程序开发相关的主题。该知识域涵盖了软件构建基础; 管理软件建设; 建筑技术; 实际考虑; 和软件构建工具。

4.4 软件测试

  • 测试是一项旨在评估产品质量并通过识别缺陷来改进产品质量的活动。软件测试涉及在有限的测试用例集上针对预期行为动态验证程序的行为。这些测试用例是从(通常非常大的)执行域中选择的。软件测试知识域包括软件测试的基础知识; 测试技术; 人机界面测试与评估; 与测试有关的措施; 和实际考虑。

4.5 软件维护

  • 软件维护包括增强现有功能,调整软件以在新的和修改的操作环境中运行,以及纠正缺陷。这些类别称为完善,自适应和纠正性软件维护。软件维护KA包括软件维护的基础知识(维护的性质和需求,维护类别,维护成本); 软件维护中的关键问题(技术问题,管理问题,维护成本估算,软件维护测量); 维护过程; 软件维护技术(程序理解,重新设计,逆向工程,重构,软件退役); 灾难恢复技术和软件维护工具。

4.6 软件配置管理

  • 系统的配置是硬件,固件,软件或这些的组合的功能和/或物理特征。它还可以被视为根据特定构建过程组合的特定版本的硬件,固件或软件项的集合,以满足特定目的。因此,软件配置管理(SCM)是在不同时间点识别系统配置的规则,用于系统地控制配置的改变,以及在整个软件生命周期中维持配置的完整性和可追溯性。软件配置管理知识域涵盖SCM过程的管理; 软件配置识别,控制,状态核算,审计; 软件发布管理和交付。

4.7 软件工程管理

  • 软件工程管理涉及规划,协调,测量,报告和控制项目或程序,以确保软件的开发和维护是系统化的,规范化的和量化的。软件工程管理知识域涵盖了启动和范围定义(确定和协商要求,可行性分析以及要求的审查和修订); 软件项目计划(过程计划,工作量估算,成本和进度,资源分配,风险分析,质量计划); 软件项目制定(计量,报告和控制;收购和供应商合同管理); 产品验收; 审查和分析项目绩效; 项目结束; 和软件管理工具。

4.8 软件工程过程

  • 软件工程KA关注软件生命周期过程的定义,实施,评估,测量,管理和改进。涵盖的主题包括流程实施和变更(流程基础架构,流程实施和变更模型以及软件流程管理); 流程定义(软件生命周期模型和流程,流程定义,流程适应和流程自动化的符号); 过程评估模型和方法; 测量(过程测量,产品测量,测量技术和测量结果的质量); 和软件处理工具。

4.9 软件工程模型和方法

  • 软件工程模型和方法KA解决了涵盖多个生命周期阶段的方法; 其他KAs涵盖特定生命周期阶段的特定方法。涵盖的主题包括建模(软件工程模型的原理和属性;语法与语义与不变量;前置条件,后置条件和不变量); 模型类型(信息,结构和行为模型); 分析(分析正确性,完整性,一致性,质量和相互作用;可追溯性;以及权衡分析); 和软件开发方法(启发式方法,形式方法,原型方法和敏捷方法)。

4.10 软件质量

  • 软件质量是许多SWEBOK V3 KAs中普遍存在的软件生命周期问题。此外,软件质量KA还包括软件质量的基础知识(软件工程文化,软件质量特性,软件质量的价值和成本以及软件质量改进); 软件质量管理流程(软件质量保证,验证和确认,审核和审核); 和实际考虑(缺陷表征,软件质量测量和软件质量工具)。

4.11 软件工程专业实践

  • 软件工程专业实践关注软件工程师必须具备的专业,负责和道德的软件工程知识,技能和态度。软件工程专业实践KA涵盖专业性(专业行为,专业协会,软件工程标准,雇佣合同和法律问题); 道德准则; 小组动态(团队合作,认知问题复杂性,与利益相关者互动,处理不确定性和模糊性,处理多元文化环境); 和沟通技巧。

4.12 软件工程经济学

  • 软件工程经济学KA关注的是在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。涵盖的主题包括软件工程经济学的基本原理(提案,现金流量,货币时间价值,计划视野,通货膨胀,折旧,替代和退休决策); 非营利性决策(成本效益分析,优化分析); 估计,经济风险和不确定性(估算技术,风险决策和不确定性); 和多属性决策(价值和衡量尺度,补偿和非补偿技术)。

4.13 计算基础

  • 计算基础KA涵盖了提供软件工程实践所需的计算背景的基础主题。涵盖的主题包括问题解决技术,抽象,算法和复杂性,编程基础,并行和分布式计算的基础知识,计算机组织,操作系统和网络通信。

4.14 数学基础

  • 数学基础KA涵盖了提供软件工程实践所必需的数学背景的基础主题。涵盖的主题包括集合,关系和功能; 基本命题和谓词逻辑; 证明技术; 图形和树木; 离散概率; 语法和有限状态机; 和数论。

4.15 工程基础

  • 工程基础KA涵盖了提供软件工程实践所必需的工程背景的基础主题。涵盖的主题包括经验方法和实验技术; 统计分析; 测量和指标; 工程设计; 仿真与建模; 和根本原因分析。

5. 简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。

  • Level 1:Initial过程不可预测,控制不良和反应性差。
  • Level 2:Managed 过程以项目为特征,通常是反应性的。
  • Level 3:Defined 过程以组织为特征,是积极主动的。
  • Level 4:Quantitactively Managed 过程可度量,可控制的。
  • Level 5:Optimizing 关注过程的优化。

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

CMMI全称是Capability Maturity Model Integration,即软件能力成熟度集成模型,用来帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,它仅仅是一个模型而已。SWEBoK不适合度量一个企业的软件工程能力,而CMMI正好迎合企业发展的需求。通过不同级别来表示开发企业的成熟性,对企业能力进行评估。它的本质是软件管理工程的一个部分。CMMI主要关注点是成本效益,明确重点,过程集中和灵活性四个方面。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值