系统分析与设计(1)

1、软件工程的定义

软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件以及对上述方法的研究。

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

  • 原因:由于计算机能力的迅速增长和无法解决的问题的复杂性造成的,即计算能力的提高已经超过了程序员有效利用这些能力的能力。
  • 表现:项目运行超过预算,项目运行时间过长,软件效率很低、软件质量很差、软件不能满足需求、项目难以管理,代码难以维护、软件从未交付等。
  • 克服方法:要克服软件危机,就要认真分析软件危机的原因,探索用工程的方法进行软件生产的可能性,即用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理、维护和更新。

3、软件生命周期

在时间维度,对软件项目任务进行划分,又成为软件开发过程。常见有瀑布模型、螺旋模型、敏捷的模型等;其几个过程如下:

  • 问题定义:确定好要解决的问题是什么(what),通过对客户的访问调查,系统分析员扼要的写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。
  • 可行性研究:确定该问题是否存在一个可以解决的方案。这个阶段的任务不是具体解决问题,而是研究问题的范围,套索这个问题是否值得去解决,是否有可行的解决办法。可行性研究的结果是客户做出是否继续进行这项工程的决定的重要依据,一般来说,只有投资可能取得较大的效益的那些工程项目才值得继续进行下去。
  • 需求分析:深入具体的了解用户的需求,在所开发的系统要做什么这个问题上和用户想法完全一致。明确目标系统必须做什么,确定目标系统必须具备哪些功能。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。用《规格说明书》记录对目标系统的需求。
  • 概要设计(总体设计):概括的说,应该怎样实现目标系统,设计出实现目标系统的几种可能方案,设计程序的体系结构,也就是确定程序由哪些模块组成以及模块之间的关系。
  • 详细设计:实现系统的具体工作,编写详细规格说明,程序员可以根据它们写出实际的程序代码。详细设计也称模块设计,在这个阶段将详细的设计每个模块,确定实现模块功能所需的算法和数据结构。
  • 编码和单元测试。
  • 综合测试:分为集成测试和验收测试。
  • 软件维护:通过各种必要的维护活动使系统持久的满足用户的需求。主要分为 改正性维护、适应性维护、完善性维护、预防性维护。

4、SWEBoK 的 15 个知识域

  • 软件需求:软件需求表达了对软件产品的需求和约束,这些需求和约束有助于解决一些实际问题。
  • 软件设计:设计被定义为定义系统或组件的体系结构、组件、接口和其他特性的过程,以及[该]过程的结果(IEEE 1991)。软件设计KA包括设计过程和最终产品。软件设计过程是软件工程生命周期的活动,在此过程中,软件需求被分析,以产生对软件内部结构及其行为的描述,并作为其构建的基础。软件设计(结果)必须描述软件体系结构——也就是说,软件如何分解和组织成组件以及这些组件之间的接口。它还必须在支持其构造的详细级别上描述组件。
  • 软件构建:软件构建是指通过详细设计、编码、单元测试、集成测试、调试和验证相结合,对工作软件进行详细的创建。软件构建KA包括与软件程序开发相关的主题,这些软件程序将满足需求和设计约束。本KA涵盖了软件构建的基础;管理软件建设;施工技术;实际问题;以及软件构建工具。
  • 软件测试:测试是一种通过识别缺陷来评估产品质量和改进产品质量的活动。软件测试包括在有限的测试用例集中,根据预期的行为对程序的行为进行动态验证。这些测试用例是从(通常非常大的)执行域中选择的。软件测试KA包括软件测试的基础知识;测试技术;人机界面测试与评价;任何跟考试有关的措施;和实际的考虑。
  • 软件维护:软件维护包括增强现有的功能,使软件适应新的和修改过的操作环境,以及纠正缺陷。这些类别被称为完善的、自适应的和纠正的软件维护。软件维修KA包括软件维修的基本知识(维修的性质和需要、维修类别、维修费用);软件维护中的关键问题(技术问题、管理问题、维护成本估算、软件维护度量);维护过程;软件维护技术(程序理解、再工程、逆向工程、重构、软件退役);灾难恢复技术和软件维护工具。
  • 软件配置管理:系统的配置是硬件、固件、软件或这些的组合的功能和/或物理特性。它还可以看作是根据特定的构建过程组合的特定版本的硬件、固件或软件项的集合,以满足特定的目的。因此,软件配置管理(SCM)是在不同的时间点识别系统配置的规程,目的是系统地控制配置的变更,以及在整个软件生命周期中维护配置的完整性和可跟踪性。软件配置管理KA包括对SCM过程的管理;软件配置识别、控制、状态核算、审计;软件发布管理与交付;和软件配置管理工具。
  • 软件工程管理 软件工程管理包括计划、协调、度量、报告和控制一个项目或程序,以确保软件的开发和维护是系统的、有纪律的和量化的。软件工程管理KA包括初始化和范围定义(确定和协商需求、可行性分析、需求评审和修订);软件项目规划(过程规划、工作量估算、成本和进度、资源分配、风险分析、质量规划);软件项目制定(测量、报告、控制;采购和供应商合同管理);产品验收;检讨及分析项目表现;项目关闭;以及软件管理工具。
  • 软件工程过程:软件工程KA涉及软件生命周期过程的定义、实现、评估、度量、管理和改进。涵盖的主题包括过程实现和变更(过程基础结构、过程实现和变更的模型以及软件过程管理);过程定义(软件生命周期模型和过程、过程定义符号、过程适应和过程自动化);过程评估模型和方法;测量(过程测量、产品测量、测量技术、测量结果质量);以及软件处理工具。
  • 软件工程模型和方法:软件工程模型和方法KA解决了包含多个生命周期阶段的方法;特定于特定生命周期阶段的方法由其他ka覆盖。涵盖的主题包括建模(软件工程模型的原理和属性;语法、语义和不变量;前置条件、后置条件和不变量);模型的类型(信息、结构和行为模型);分析(正确性、完整性、一致性、质量和交互性分析;可追溯性;和权衡分析);以及软件开发方法(启发式方法、形式化方法、原型方法和敏捷方法)。
  • 软件质量:软件质量是一个普遍存在的软件生命周期问题,许多SWEBOK V3 ka都解决了这个问题。此外,软件质量KA包括软件质量的基础(软件工程文化、软件质量特征、软件质量的价值和成本、软件质量改进);软件质量管理过程(软件质量保证、验证和验证、评审和审核);以及实际的考虑(缺陷描述、软件质量度量和软件质量工具)。
  • 软件工程专业实践:软件工程专业实践是指软件工程师必须具备的知识、技能和态度,以便以专业、负责任和合乎道德的方式实践软件工程。软件工程专业实践KA涵盖专业(专业行为、专业社团、软件工程标准、雇佣合同、法律问题);伦理准则;群体动力学(团队合作,认知问题复杂性,与利益相关者互动,处理不确定性和模糊性,处理多元文化环境);和沟通能力。
  • 软件工程经济学:软件工程经济学KA关注的是在业务上下文中做出决策,使技术决策与组织的业务目标保持一致。涵盖的主题包括软件工程经济学的基本原理(建议、现金流、金钱的时间价值、规划范围、通货膨胀、折旧、替换和退休决定);非营利性决策(成本效益分析、优化分析);评估、经济风险与不确定性(评估技术、风险与不确定性下的决策);多属性决策(价值和度量尺度、补偿和非补偿技术)。
  • 计算基础:计算基础KA涵盖了为软件工程实践提供必要的计算背景的基本主题。主题包括问题解决技术、抽象、算法和复杂性、编程基础、并行和分布式计算基础、计算机组织、操作系统和网络通信。
  • 数学基础:数学基础KA涵盖了为软件工程实践提供必要的数学背景的基本主题。主题包括集合、关系和函数;基本命题与谓词逻辑;证明技术;图表和树木;离散型概率;语法和有限状态机;和数论。
  • 工程基础:工程基础KA涵盖了为软件工程实践提供必要的工程背景的基本主题。主题包括经验方法和实验技术;统计分析;测量和度量;工程设计;仿真和建模;以及根本原因分析。

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

  • 初始级:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
  • 可管理级:建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
  • 已定义级:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
  • 量化管理级:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
  • 优化管理级:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

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

CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成(也有称为:软件能力成熟度集成模型),其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。CMMI有两种表示方法,一种是大家很熟悉的,和软件CMM 一样的阶段式表现方法,另一种是连续式的表现方法。阶段式表现方法仍然把CMMI中的若干个过程区域分成了5 个成熟度级别,帮助实施CMMI的组织建议一条比较容易实现的过程改进发展道路。而连续式表现方法则通过将CMMI中过程区域分为四大类:过程管理、项目管理、工程以及支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值