软件工程笔记¶
统计信息:字数 9371 阅读19分钟
原始笔记链接:https://cloud.seatable.cn/dtable/external-links/59b453a8639945478de2/
0726 Gantt 甘特图¶
甘特图-Gantt图,用于项目管理、软件工程、产品分析
Gantt图:以时间为基准,描述项目任务,可以清晰的描述每个任务开始和结束时间,以及每个任务的并行关系。但是不能反映项目各任务之间的依赖关系,也无法确定整个任务的关键所在。
横轴表示时间,纵轴表示项目,线条表示期间计划和实际完成情况。直观表明计划何时进行,进展与要求的对比,便于管理者弄清项目的剩余任务,评估工作进度。
甘特图只能表示一个分支流程(不能表示多个分支流程);Pert 图的多个分支,每一个分支可以使用甘特图表示时间进度。
实例:工作内容分成6部分,时间上按照流水线工作流程,可以确定不同时间段的工作内容,并行和串行关系等。
参考:
https://baike.baidu.com/item/%E7%94%98%E7%89%B9%E5%9B%BE/113232?fr=ge_ala
https://blog.csdn.net/tongxinzhazha/article/details/130355910
0727 Pert 图¶
Pert 图:使用有向图,表示项目实现的多个路径(项目中全部事件都需要做),每一个路径的耗时和依赖关系,分析关键路径和松弛时间,帮助识别项目的关键环节。
主要概念:
事件(节点):表示项目中的某个关键时间点(里程碑),通常使用圆形或矩形表示,标记事件编号。事件是项目活动的开始或结束点。
时间估算:每个活动通常有三个时间估算:乐观时间(O,最短路径):在一切顺利的情况下,完成任务所需的最短时间。悲观时间(P,最长路径):考虑到所有可能的延误,完成任务所需的最长时间。最可能时间(M):在正常情况下,完成任务的时间。
关键路径:PERT图中**最长的路径称为关键路径**,决定了项目的最短完成时间。关键路径上的活动不能被延迟,否则整个项目的完成时间将被推迟。因此,管理关键路径活动非常重要。
绘制PERT图的步骤
-
列出活动和依赖关系。
-
画出表示活动和事件的箭头和节点。
-
将每个活动的预计时间标注在箭头旁。
-
计算从开始到每个终点的最早完成时间,找出最长路径——即关键路径。
PERT图与甘特图的区别:
-
重点:PERT图侧重于活动的依赖关系和项目时间估算,甘特图更多地用于直观显示项目时间进度。
-
可视化:PERT图是活动的逻辑关系,适合分析路径和依赖;甘特图是任务的进度条,适合时间线上的管理。
参考:
https://blog.csdn.net/2302_79730293/article/details/141932767
https://blog.csdn.net/tongxinzhazha/article/details/130355910
0728 敏捷开发分类¶
极限编程( XP ):4大价值观、5个原则、12个最佳实践
水晶法( Crystal ):认为每一个不同的项目都需要一套不同的策略、约定和方法论,认为人对软件质量有重要的影响(以人为本),因此随着项目质量和开发人员素质的提高,项目和过程的质量也随之提高。通过更好地交流和经常性交付,软件生产力得到提高
并列争求法( Scrum ):把每30天一次的迭代称为一个“冲刺”,并按需求的优先级来实现产品。多个自组织和自治的小组并行地递增实现产品。协调是通过简短的日常情况会议来进行,就像橄榄球中的“并列争球”。
自适应软件开发( ASD ):核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。ASD有6个基本的原则:有一个使命作为指导;特征被视为客户价值的关键点;过程中等待是很重要的,因此“重做”与“做”同样关键;变化不被视为改正,而是被视为对软件开发实际情况的调整;确定的交付时间迫使开发人员认真考虑每一个生产的版本的关键需求;风险也包含其中
0729 模块耦合的情况¶
模块耦合的分类
-
数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递
-
标记耦合:指两个模块之间传递的是数据结构
-
控制耦合:指一个模块调用另一个模块时,传递的是控制变量(控制参数),被调用模块通过该控制变量的值有选择地执行模块内的某一功能。因此,被调用模块应具有多个功能,哪个功能起作用受调用模块控制
-
公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合
耦合的类型和强弱程序:无直接耦合 < 数据耦合 < 标记耦合 < 控制耦合 < 外部耦合 < 公共耦合 < 内容耦合
0730 软件风险¶
软件风险一般包括不确定性和损失**两个特性**。
-
不确定性:风险可能发生,也可能不发生;
-
损失:当风险确实发生时,会引起的不希望的后果和损失。
相关概念
救火和危机管理:对不适合但经常采用的软件风险管理策略。
已知风险和未知风险:对软件**风险进行分类**的一种方式。
员工和预算:在识别项目风险时需要识别的因素。
0731 增量模型¶
增量模型:增量模型是一种软件开发方法,其主要特点是将系统划分为多个可交付的增量,每个增量都包含一部分功能。随着时间的推移,逐步完成整个系统的开发。
特点:
能够在较短的时间提交一个可用的产品系统:通过逐步增加功能,第一个可交付版本所需要的成本和时间很少
优先级高的功能首先交付,这些功能将接受更多的测试,同时,用户可以尽早接触和熟悉系统的部分功能,提供及时的反馈和意见
增量模型强调逐步迭代开发,每个迭代周期都需要完成一部分功能,因此需要预先规划好所需功能,并且要考虑未来的扩展性和兼容性,因此系统的设计并不比其它开发模型更加容易
0732 管道过滤器¶
管道过滤器体系结构,是一种传统的体系结构风格,该体系结构由一组成为过滤器的构件以及连接构件的管道组成,管道将数据从一个过滤器传送到另一个过滤器。该风格具有以下优点:
软件构件具有良好的隐蔽性和高内聚、低耦合的特点(A)
允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成
支持软件复用(B)
系统维护和增强系统性能简单
允许对一些如吞吐量、死锁等属性的分析
支持并行执行(C)
0733 McCabe 度量法¶
McCabe 度量法:是通过定义环路复杂度,建立程序复杂性的度量,它基于一个程序模块的程序图中环路的个数。
采用 McCabe 方法计算程序的复杂度,有两种计算方式:
方法一:边的数量 节点的数量 + 2
方法二:闭合区域数量 + 1
采用方法二比较直接且简单,首先需要确定流程图中的环路数。该流程图中有 3 个环路,因此程序的复杂度为 3+1=4;若采用方法一,边的数量 节点的数量 + 2 = 13 11 + 2 = 4
0734 软件成熟度模型¶
软件成熟度模型(CMM)的基本概念。
建立基本的项目管理和实践来跟踪项目费用、进度和功能特性,为可重复级的核心;
使用标准开发过程(或方法论)构建(或集成)系统,为己定义级的核心:
管理层寻求更主动地应对系统的开发问题,为已管理级的核心:
连续地监督和改进标准化的系统开发过程,为优化级的核心。
0735 软件上线后维护分类¶
改正性维护(修复bug):是指修复软件系统中已知的问题或缺陷
改善性维护(处理用户新的需求):是指对软件系统进行改进,以提高其质量、效率、易用性、可维护性等方面的特征,使其满足用户或市场的不断变化的需求
适应性维护(兼容操作系统):是指对软件系统进行适应性修改,以适应变化的环境、硬件、操作系统等
预防性维护(鲁棒性维护):是指在软件系统还没有发生实际问题之前,对可能发生问题的代码进行被动或主动的检查和改进,以预防未来可能出现的问题。