六、系统运行与维护
软件文档
(注:下图来自前言中up主视频)
软件维护:
正确性维护(改正性维护):改正错误(改正在系统开发阶段已发生而测试阶段尚未发现的错误)。
适应性维护:适应变化,进行修改(使应用软件适应信息技术变化和管理需求变化而进行的修改)。
完善性维护(改善性维护):扩充功能,改善性能(对已有的软件系统增加一些系统分析和设计阶段中没有规定的功能与性能特征)。
预防性维护:主动预防,增新功能(主动增加预防性的新功能,以使应用系统适应各类变化而不被淘汰)。
可靠性、可用性、可维护性
(注:下图来自前言中up主视频)
(可靠性:无失效运作概率。可用性:正确运行。可维护性:规定的过程和资源完成维护活动。)
真题链接
逆向工程从源代码或目标代码中提取设计信息,通常在原软件生命周期的
软件维护 阶段进行。
在采用面向对象技术构建软件系统时,很多敏捷方法都建议的一种重要的设计活动是 重构,它是一种重新组织的技术,可以简化构件的设计而无须改变其功能或行为。
软件工程每一个阶段结束前,应该着重对可维护性进行复审。在系统设计阶段的复审期间,应该从 容易修改、模块化和功能独立的目的 出发,评价软件的结构和过程。
(注:下图来自前言中up主视频)
(注:下图来自前言中up主视频)
(注:下图来自前言中up主视频)
基于构件的软件开发,强调使用可复用的软件“构件”来设计和构建软件系统,对所需的构件进行合格性检验、适应性修改,并将它们集成到新系统中。
系统可维护性的评价指标:可理解性、可测试性、可修改性。
文档是软件可维护性的决定因素。可维护性是所有软件都应具有的基本特点,必须在开发阶段保证软件具有可维护性的特点。在软件工程的每一个阶段都应考虑并提高软件的可维护性,在每个阶段结束前的技术审查和管理复查中应该着重对可维护性进复审。
软件 可靠性 是指一个系统在给定时间间隔内和给定条件下无失效运行的概率。
七、软件过程改进
1、能力成熟度模型(CMM)(重点,主要记忆各阶段关键词,可以区分各阶段)
CMM将软件过程改进分为以下5个成熟度级别:
初始级(第一级):软件过程的特点是杂乱无章,有时甚至很混乱,几乎没有明确定义的步骤,项目的成功完全依赖个人的努力和英雄式核心人物的作用。
可重复级(第二级):建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性,有必要的过程准则来重复以前在同类项目中的成功。
已定义级(第三级):管理和工程两方面的软件过程已经文档化、标准化,并综合成整个软件开发组织的标准软件过程。所有项目都采用根据实际情况修改后得到的标准软件过程来开发和维护软件。
已管理级(第四级):制定了软件过程和产品质量的详细度量标准。软件过程的产品质量都被开发组织的成员所理解和控制。
优化级(第五级):加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能不断持续地改进。
真题链接
CMM第三级(已定义级)的核心是 使用标准开发过程(或方法论)构建(或集成)系统。
CMM第四级(已管理级)的核心是 对软件过程和产品都有定量的理解和控制。重点关注 产品和过程质量。
2、能力成熟度模型集成(CMMI)(重点,主要记忆各阶段关键词,可以区分各阶段)
阶段式模型(了解)
初始的:过程不可预测且缺乏控制
已管理的:过程为项目服务
已定义的:过程为组织服务
定量管理的:过程已度量和控制
优化的:集中于过程改进
连续式模型(一般考这个)
CL0(未完成的):过程域未执行或未得到CL1中定义的所有目标
CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品
CL2(已管理的):其共性目标集中于已管理的过程的制度化
CL3(已定义级的):其共性目标集中于已定义的过程的制度化,关注过程的组织标准化和部署。
CL4(定量管理的):其共性目标集中于可定量管理的过程的制度化
CL5(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户要求的改变和持续改进计划中的过程域的功效。
真题链接
CMMI能力等级3主要关注过程的 组织标准化和部署。
CMMI中 CL1(已执行的) 的共性目标是 过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标。
CMMI中 CL5(优化的) 的共性目标是 使用量化(统计学)手段改变和优化过程域,以应对客户要求的改变和持续改进计划中的过程域的功效。
八、项目管理
Gantt图(甘特图)
(注:下图来自前言中up主视频)
PERT图、项目活动图(必考题!!!)
(注:下图来自前言中up主视频)
最早时刻:任务与任务之间单指向单指出,直接用前面的任务的最早时刻+任务持续时间=后面任务的最早时刻。若一个任务被多个任务指向,则最早时刻取多个任务完成时间的最大值。(最早时刻从前往后推(加上任务持续时间))
最迟时刻:任务与任务之间单指向单指出,直接用后面的任务的最迟时刻-任务持续时间=前面任务的最迟时刻。若一个任务指向多个任务,则最迟时刻取多个任务最迟时刻的最小值。(最迟时刻最后往前推(减去任务持续时间))
松弛时间:任务与任务之间单指向单指出,直接用某个任务的最迟时刻-其最早时刻即为松弛时间。若一个任务多指向(指出)需要分别来用不同任务的最迟时刻来分别计算其松弛时间(各路径上的最迟时刻-该任务的最早时刻)。
关键路径:松弛时间为0的完成整个工程的所有任务(从后往前推,按最早时刻来推,如果后一个时刻减去路径上任务的持续时间等于前一个任务的最早时刻,则该任务在关键路径上)。
关键路径上的任务其最早时刻=最迟时刻,即其松弛时间为0。
项目活动图:
(注:下图来自前言中up主视频)
[也可以直接求出所有从起点到终点的路径权值之和的最大者,该路径即为关键路径]。
缩短关键路径上的活动的持续时间才能缩短整个项目的工期。
真题链接
进度安排的常用图形描述方法有Gantt图和PERT图。Gantt图不能清晰地描述 各任务之间的依赖关系。
使用PERT图进行进度安排,不能清晰地描述 各任务之间的并行情况。
正确答案:D、C
线上的数字:表示耗时。
先正推最早开始时间,再逆推回来事件6是时间:15-4-1。
如图
沟通路径:
无主程序员(题目未提主程序员即为该情况):n个人沟通路径最多与n(n-1)/2条(枚举每个人都要和剩下的人有路径,第一个人需要有n-1条路径,最后一个人不需要任何路径)。
主程序员,普通程序员(总共n个人,1个主程序员,n-1个普通程序员):只需要n-1条沟通路径(只需要每个普通程序员和主程序员之间有沟通路径即可)。
(注:下图来自前言中up主视频)
风险管理
一般认为软件风险包含两个特性:不确定性 和 损失。不确定性是指风险可能发生也可能不发生;损失是指如果风险发生,就会产生恶性后果。
项目风险:指预算、进度、人员(聘用职员及组织)、资源、利益相关者、需求等方面的潜在问题以及它们对软件项目的影响。项目复杂度、规模及结构不确定性也属于项目风险因素。(项目风险威胁到项目计划)
技术风险:指设计、实现、接口、验证和维护等方面的潜在问题(技术风险威胁到要开发软件的质量及交付时间)
商业风险:(威胁到要开发软件的生存能力)
市场风险。(开发了一个没有人真正需要的优良产品或系统)
策略风险。(开发的产品不再符合公司的整体商业策略)
销售风险。(开发了一个销售部门不知道如何去销售的产品)
管理风险。(由于重点的转移或人员的变动而失去了高级管理层的支持)
预算风险。(没有得到预算或人员的保证)
风险曝光度(风险显露度)
整体的风险显露度(曝光度)(Risk Exposure, RE)可由下面的关系确定:
RE=P×C(其中,P是风险发生的概率,C是风险发生时带来的项目成本。)
风险是针对自身项目而言的。
真题链接
对风险排优先级是根据 风险的曝光度 来进行的,曝光度等于风险的产生后果乘以风险发生的概率。
软件风险一般包含 不确定性和损失。(不确定性是指风险可能发生也可能不发生;损失是指如果风险发生,就会产生恶性后果)。
风险预测从两个方面评估风险,即 风险发生的可能性 以及 风险发生所产生的后果。
在软件开发过程中进行风险分析时,风险控制 活动的目的是辅助项目组建立处理风险的策略,有效的策略应考虑风险避免、风险监控、风险管理及意外事件计划。
若软件项目组对风险采用主动控制方法,则 风险避免 是最好的风险控制策略。
定义风险参照水准是 风险评估 活动常用的技术。
项目复杂性、规模和结构的不确定性属于 项目 风险。
某个项目在开发时采用了不成熟的前沿技术,由此带来的风险属于 技术 风险。
风险的优先级通常是根据 风险暴露(Risk Exposure) 设定。
确定构件软件系统所需要的人数时,无需考虑 系统的市场前景。
(注:下图来自前言中up主视频)
软件项目估算(补)
基本COCOMO模型:静态单变量模型
中级COCOMO模型:静态多变量模型
COCOMOII模型
应用组装模型(使用对象点)
早期设计阶段模型(使用功能点,功能点可以转化为代码行)
体系结构阶段模型
和所有的软件估算模型一样,COCOMO II模型也需要使用规模估算信息,在模型层次结构中有3种不同的规模估算选择:对象点、功能点和代码行。应用组装模型使用的是对象点;早期设计阶段模型使用的是功能点,功能点可以转化为代码行。
真题链接
基本COCOMO 软件成本估算模型是一种静态单变量模型,用于对整个软件系统进行估算。
成本估算时,COCOMO II 方法以规模作为成本的主要因素,考虑多个成本驱动因子。该方法包括三个阶段性模型,即应用组装模型(对象点)、早期设计阶段模型(功能点)和体系结构阶段模型(代码行)。
软件配置管理(补)
(注:下图来自前言中up主视频)
软件质量(补)
软件质量特性
(注:下图来自希赛网)
(注:下图来自《软件设计师教程》(第5版)(褚华、霍秋艳主编,清华大学出版社))
真题链接
根据ISO/IEC 9216软件质量度量模型定义,一个软件的时间和资源质量子特性属于 效率 质量特性。
将每个用户的数据和其他用户的数据隔离开,是考虑了软件的 功能性 质量特性。
根据ISO/IEC 9216软件质量模型中对软件质量特性的定义,可维护性质量特性的 易测试性 子特性是指与为确认经修改软件所需努力有关的软件属性。
在ISO/IEC 9216软件质量模型中,软件质量特性 功能性 包含质量子特性安全性。
软件质量属性中,吞吐量 是指软件每分钟可以处理多少个请求。
软件评审
该部分不常考,记忆真题知识点即可。
真题链接
正式技术评审的目标是 发现软件中的错误。
软件容错技术
容错的一般方法(了解、记忆真题知识点即可):
结构冗余
静态冗余
动态冗余
混合冗余
信息冗余
时间冗余
冗余附加技术
(注:下图来自前言中up主视频)
真题链接
冗余技术通常分为4类,其中 结构冗余 按照工作方法可以分为静态、动态和混合冗余。