系统分析与设计 第一周
1 简答题
1.1软件工程的定义
解答:
软件工程是应用系统的;规范的;可量化的方法来开发,操作和维护软件。即工程应用于软件的方法研究。
1.2 解释导致 software crisis 本质原因、表现,述说克服软件危机的方法
解答:
- 本质原因:
落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
- 表现:
项目运行超预算
项目运行时间过长
软件效率很低
软件质量很差
软件通常不符合要求
项目难以管理,代码难以维护
软件从未交付过
- 克服软件危机的方法:
计算能力按摩尔定律发展,软件处理的问题也越来越广、越来约复杂,因此软件生产不只是编程技术问题,需要有系统化、与时俱进的软件工程方法,才能规避软件危机!
1.3 软件生命周期
解答:
软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少。
- 1.可行性分析和计划阶段
确定软件开发的总体目标,给出功能,性能,可靠性,接口等方面的要求,进行可行性分析
估计可利用的资源(硬件,软件,人力等),成本,效益,开发进度,进行投资收益分析,制定开发计划
提交可行性分析报告,开发计划等文档- 2.需求分析阶段
分析用户提出的要求,给出需求详细定义,确定软件系统的各项功能,性能需求和设计约束,确定对文档的编制的要求
提交软件需求说明,软件规格说明,数据要求说明等文档和初步用户手册- 3.设计阶段
概要设计:将各项需求转换为软件的体系结构。软件的每一组成部分都是意义明确的模块,每个模块和某些需求相对应- 4.详细设计:对没一个模块要完成的工作进行具体的描述,提供源编程编写的直接依据
提交结构设计说明,详细设计说明和测试计划初稿等文稿- 5.实现阶段
实现源码编码,编译,和排错调试,得到没有语法错误的程序清单。程序结构良好,清晰易读,且与设计想一致
编写进度日报,周报,和月报
提交用户手册,操作手册等面向用户的文档的编写工作
编写测试计划- 6.测试阶段
全面测试目标软件系统,并检查审阅已编制的文档,提交测试分析报告。逐项评价所生产的程序、文档以及开发工作本身,提交项目开发总结报告
在整个开发过程中 (即前五个阶段中),开发集体需要按月编写
开发进度月报。- 7.运行与维护阶段
软件提交给用户后,在运行使用中得到持续维护,根据用户新
提出的需求进行必要而且可能的扩充、删改、更新和升级。
软件维护包括改正性维护 (发现错误)、适应性维护 (适应运行
环境变化) 和完善性维护 (增强功能)。
1.4 SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)
解答:
- 1.软件需求
软件需求知识领域涉及软件需求的引出、协商、分析、规范和验证。软件行业普遍认为,当这些活动执行得很差时,软件工程项目是非常脆弱的。软件需求表达了对软件产品的需求和约束,这些需求和约束有助于解决一些实际问题。
- 2.软件设计
设计被定义为定义系统或组件的体系结构、组件、接口和其他特性的过程,以及[该]过程的结果(IEEE 1991)。软件设计知识领域包括设计过程和最终产品。软件设计过程是软件工程生命周期的活动,在此过程中,软件需求被分析,以产生对软件内部结构及其行为的描述,并作为其构建的基础。软件设计(结果)必须描述软件体系结构——也就是说,软件如何分解和组织成组件以及这些组件之间的接口。它还必须在支持其构造的详细级别上描述组件。
- 3.软件构造
软件构造是指通过详细设计、编码、单元测试、集成测试、调试和验证相结合,对工作软件进行详细的创建。软件构建知识领域包括与软件程序开发相关的主题,这些软件程序将满足其需求和设计约束。此知识领域涵盖软件构建基础;管理软件建设;施工技术;实际问题;以及软件构建工具。
- 4.软件测试
测试是一种通过识别缺陷来评估产品质量和改进产品质量的活动。软件测试包括在有限的测试用例集中,根据预期的行为对程序的行为进行动态验证。这些测试用例是从(通常非常大的)执行域中选择的。软件测试知识包括软件测试的基础知识;测试技术;人机界面测试与评价;任何跟考试有关的措施;和实际的考虑。
- 5.软件维护
软件维护包括增强现有的功能,使软件适应新的和修改过的操作环境,以及纠正缺陷。这些类别被称为完善的、自适应的和纠正的软件维护。软件维护知识领域包括软件维护基础知识(维护的性质和需要、维护的类别、维护的成本);软件维护中的关键问题(技术问题、管理问题、维护成本估算、软件维护度量);维护过程;软件维护技术(程序理解、再工程、逆向工程、重构、软件退役);灾难恢复技术和软件维护工具。
- 6.软件配置管理
系统的配置是硬件、固件、软件或它们的组合的功能和/或物理特征。它还可以看作是根据特定的构建过程组合的特定版本的硬件、固件或软件项的集合,以满足特定的目的。因此,软件配置管理(SCM)是在不同的时间点识别系统配置的规程,目的是系统地控制配置的变更,以及在整个软件生命周期中维护配置的完整性和可跟踪性。软件配置管理知识领域包括对SCM过程的管理;软件配置识别、控制、状态核算、审计;软件发布管理和交付;以及软件配置管理工具。
- 7.软件工程管理
软件工程管理包括计划、协调、度量、报告和控制一个项目或程序,以确保软件的开发和维护是系统的、有纪律的和量化的。软件工程管理KA包括初始化和范围定义(确定和协商需求、可行性分析、需求评审和修订);软件项目规划(过程规划、工作量估算、成本和进度、资源分配、风险分析、质量规划);软件项目制定(测量、报告、控制;采购和供应商合同管理);产品验收;检讨及分析项目表现;项目关闭;以及软件管理工具。
- 8.软件工程过程
软件工程知识领域涉及软件生命周期过程的定义、实现、评估、度量、管理和改进。所涵盖的主题包括过程实现和变更(过程基础结构、过程实现和变更的模型以及软件过程管理);过程定义(软件生命周期模型和过程、过程定义符号、过程适应和过程自动化);过程评估模型和方法;测量(过程测量、产品测量、测量技术、测量结果质量);以及软件处理工具。
- 9.软件工程模型和方法
软件工程模型和方法知识领域处理包含多个生命周期阶段的方法;特定于特定生命周期阶段的方法由其他知识领域覆盖。涵盖的主题包括建模(软件工程模型的原理和属性;语法、语义和不变量;(前置条件、后置条件和不变量);模型的类型(信息、结构和行为模型);分析(正确性、完整性、一致性、质量和交互性分析;可追溯性;和权衡分析);以及软件开发方法(启发式方法、形式化方法、原型方法和敏捷方法)。
- 10.软件质量
软件质量是一个普遍存在的软件生命周期问题,许多SWEBOK V3 ka都解决了这个问题。此外,软件质量知识领域还包括软件质量的基础知识(软件工程文化、软件质量特征、软件质量的价值和成本、软件质量改进);软件质量管理过程(软件质量保证、验证和验证、评审和审核);以及实际的考虑(缺陷描述、软件质量度量和软件质量工具)。
- 11.软件工程专业实践
软件工程专业实践是指软件工程师必须具备的知识、技能和态度,以便以专业、负责任和合乎道德的方式实践软件工程。软件工程专业实践知识领域涵盖专业(专业行为、专业社团、软件工程标准、雇佣合同、法律问题);伦理准则;群体动力学(团队合作,认知问题复杂性,与利益相关者互动,处理不确定性和模糊性,处理多元文化环境);和沟通能力。
- 12.软件工程经济学
软件工程经济学知识领域关注的是在业务上下文中做出决策,使技术决策与组织的业务目标保持一致。涵盖的主题包括软件工程经济学的基本原理(建议、现金流、金钱的时间价值、规划范围、通货膨胀、折旧、替换和退休决定);非营利性决策(成本效益分析、优化分析);评估、经济风险与不确定性(评估技术、风险与不确定性下的决策);多属性决策(价值和度量尺度、补偿和非补偿技术)。
- 13.计算基础
计算基础知识领域涵盖了为软件工程实践提供必要的计算背景的基本主题。主题包括问题解决技术、抽象、算法和复杂性、编程基础、并行和分布式计算基础、计算机组织、操作系统和网络通信。
- 14.数学基础
数学基础KA涵盖了提供软件工程实践所必需的数学背景的基础主题。涵盖的主题包括集合,关系和功能;基本命题和谓词逻辑;证明技术;图形;离散概率;语法;有限状态机和数论。
- 15.工程基础
工程基础知识领域涵盖了为软件工程实践提供必要的工程背景的基本主题。主题包括经验方法和实验技术;统计分析;测量和度量;工程设计;仿真和建模;以及根本原因分析。
1.5 简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。
解答:
- CMMI一级,完成级。在完成级水平上,企业对项目的目标与要做的努力很清晰,项目的目标得以实现。但是由于任务的完成带有很大的偶然性,企业无法保证在实施同类项目的时候仍然能够完成任务。企业在一级上的项目实施对实施人员有很大的依赖性。
- CMMI二级,管理级。在管理级水平上,企业在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对相关的项目实施人员有相应的培训,对整个流程有监测与控制,并与上级单位对项目与流程进行审查。企业在二级水平上体现了对项目的一系列的管理程序。这一系列的管理手段排除了企业在一级时完成任务的随机性,保证了企业的所有项目实施都会得到成功。
- CMMI三级,定义级。在定义级水平上,企业不仅能够对项目的实施有一整套的管理措施,并保障项目的完成;而且,企业能够根据自身的特殊情况以及自己的标准流程,将这套管理体系与流程予以制度化这样,企业不仅能够在同类的项目上生到成功的实施,在不同类的项目上一样能够得到成功的实施。科学的管理成为企业的一种文化,企业的组织财富。
- CMMI四级,量化管理级。在量化管理级水平上,企业的项目管理不仅形成了一种制度,而且要实现数字化的管理。对管理流程要做到量化与数字化。通过量化技术来实现流程的稳定性,实现管理的精度,降低项目实施在质量上的波动。
- CMMI五级,优化级。在优化级水平上,企业的项目管理达到了最高的境界。企业不仅能够通过信息手段与数字化手段来实现对项目的管理,而且能够充分利用信息资料,对企业在项目实施的过程中可能出现的次品予以预防。能够主动地改善流程,运用新技术,实现流程的优化。
1.6 用自己语言简述 SWEBok 或 CMMI。
解答:
CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成。把现在所有现存实施的与即将被发展出来的各种能力成熟度模型,集成到一个框架中去。
他的目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。
它的主要思想是:只要集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件开发中的困难。
CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。
CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。