)
软件工程第二篇也是收官篇。三块考点耦合与内聚两个七级家族考排序和给描述认归属软件维护四类型给场景认类型外加一个谁占比最大关键路径活动网络图里找最长的路上午题的计算常客。一、耦合与内聚好设计的八字方针——高内聚、低耦合耦合是模块之间的联系紧密程度越低越好七个等级从优到劣耦合低→高判别要点无直接耦合两个模块毫不相干数据耦合通过参数传递简单数据标记耦合通过参数传递整个数据结构只用其中一部分控制耦合传递标志/开关控制对方内部逻辑外部耦合通过外部环境简单全局变量联系公共耦合共享公共数据区全局数据结构内容耦合直接动对方内部数据/代码最差内聚是模块内部成分的团结程度越高越好七个等级从劣到优内聚低→高判别要点偶然内聚成分间没关系凑巧放一起逻辑内聚逻辑上同类如所有输入操作时间内聚同一时刻要执行如初始化模块过程内聚按固定流程顺序执行通信内聚成分使用相同的数据顺序内聚前一个的输出是后一个的输入功能内聚所有成分只为一个功能服务最好两个排序口诀耦合无数标控外公内内聚偶逻时过通顺功。考排序题时把口诀默在草稿纸上对号入座。两个高频坑传标志位控制对方逻辑看着像传数据其实是控制耦合共享数据是通信内聚前者的输出是后者的输入才是顺序内聚——这两个的界线就在数据流向上。二、软件维护四类型看动机认类型改正性维护软件有 bug诊断并改正适应性维护环境变了——操作系统升级、硬件更换、数据库迁移软件被迫跟着改完善性维护用户提新需求——加功能、扩报表、改进性能预防性维护为将来打基础——重构、补文档提高可维护性。判别口诀错了修是改正环境变是适应要新功能是完善防将来是预防。外加一个考点彩蛋完善性维护占比最大约一半以上。软件交付后用户没完没了的能不能再加个功能才是维护工作的主流。三、关键路径最长的路决定最短的工期先消化一个反直觉的点关键路径 活动网络图中最长的路径它决定的是项目的最短工期。为什么最长反而决定最短因为所有活动都得干完项目才算完工期被最慢的那条线拖住——其他线干得再快也只能等它。计算方法三步正推求最早时间每个活动的最早开始 ES 紧前活动最早完成 EF 的最大值EF ES 时长逆推求最晚时间每个活动的最晚完成 LF 紧后活动最晚开始 LS 的最小值LS LF − 时长松弛时间 LS − ES最晚开始 − 最早开始松弛为 0 的活动连起来就是关键路径。例题某项目活动如下A(2天) 先行之后分两路B(6)→D(2) 与 C(3)→E(4)两路汇合后 F(1) 收尾。两条路径一目了然路径①A → B → D → F 2621 11 天 路径②A → C → E → F 2341 10 天最长的是路径① → 关键路径A-B-D-F最短工期11 天。完整算一遍松弛考试常追问某个活动的机动时间活动时长ESEFLSLF松弛A202020B628280C325361D28108100E4596101F1101110110解读 C 的松弛 1C 最早第 2 天能开工但最晚第 3 天开工也不耽误——因为 C-E 这条路总共只要 10 天比关键路径少 1 天这 1 天就是 C 可以摸鱼的机动时间。松弛 0 的 A、B、D、F 一天都拖不得一拖全项目延期。四、10 道练习题基础题1~51.下列耦合类型中耦合程度最低设计最优的是 。A. 内容耦合 B. 公共耦合 C. 数据耦合 D. 控制耦合2.下列内聚类型中内聚程度最高设计最优的是 。A. 偶然内聚 B. 时间内聚 C. 逻辑内聚 D. 功能内聚3.各类软件维护工作中占比最大的是 。A. 改正性维护 B. 适应性维护 C. 完善性维护 D. 预防性维护4.为使软件能在新版本操作系统上正常运行而对其进行的修改属于 。A. 改正性维护 B. 适应性维护 C. 完善性维护 D. 预防性维护5.在活动网络图中关键路径是指 。A. 最长的路径决定项目的最短工期 B. 最短的路径 C. 包含活动最多的路径 D. 消耗资源最多的路径进阶题6~10带坑6.某模块通过参数向另一模块传递一个标志位该标志位用于控制接收模块的内部逻辑这种耦合属于 。A. 数据耦合 B. 标记耦合 C. 控制耦合 D. 内容耦合7.某模块内部各成分都使用同一组输入数据对该组数据做多种处理该模块的内聚属于 。A. 过程内聚 B. 通信内聚 C. 顺序内聚 D. 功能内聚8.某项目活动网络中活动 A2 天完成后分两路并行B6 天→D2 天与 C3 天→E4 天两路汇合后经 F1 天结束。该项目的最短工期为 。A. 10 天 B. 12 天 C. 9 天 D. 11 天9.同上题的活动网络活动 C 的松弛时间总时差为 。A. 0 天 B. 1 天 C. 2 天 D. 3 天10.用户认为现有系统的统计报表不够丰富要求增加几种新的统计报表此类维护属于 。A. 完善性维护 B. 改正性维护 C. 适应性维护 D. 预防性维护五、答案与详解1. C默口诀无数标控外公内数据耦合排第二仅次于无直接耦合四个选项里最低。内容耦合垫底最差。2. D默口诀偶逻时过通顺功功能内聚登顶——全模块只为一件事服务是内聚的最高境界。3. C记住这个反常数据维护工作量的半壁江山是完善性维护——不是修 bug而是用户不断要新功能。4. B关键词新版本操作系统——环境变了→ 适应性维护。软件本身没错不是改正用户也没要新功能不是完善。5. A最长路径决定最短工期——所有活动都完工项目才结束工期被最慢的一条线拖住。选 B 的恰恰记反这是本考点的第一直觉坑。6. C大坑传递的虽然是个数据但它的用途是控制对方内部逻辑开关/标志→控制耦合。判耦合别看传的是什么形式看传的用途传数据用 → 数据耦合传整个结构 → 标记耦合传开关指挥对方 → 控制耦合。7. B判别内聚看成分间的粘合剂用同一组数据粘在一起 →通信内聚前者的输出喂给后者才是顺序内聚——本题只说共用输入没说加工链别自动脑补成顺序。8. D两条路径A-B-D-F 2621 11A-C-E-F 2341 10。取最长 → 最短工期11 天。选 A 的拿了较短路径当工期——较短的那条干完只能干等决定不了工期。9. BC 所在路径比关键路径短 1 天这 1 天就是机动量C 最晚可推迟 1 天开工LS3而不影响总工期 → 松弛1 天。选 A 的是默认C 也在关键路径上——先找最长路径松弛为 0 的才在关键路径上。10. A增加几种新报表 用户要新功能→ 完善性维护。软件没出错非改正、环境没变非适应、也不是防患未然非预防。判别口诀错了修是改正环境变是适应要新功能是完善防将来是预防。六、五句话带走目标高内聚、低耦合耦合无数标控外公内内聚偶逻时过通顺功判耦合看用途传开关 控制耦合判内聚看粘合剂共享数据 通信前出后入 顺序维护四类型改正修 bug、适应跟环境、完善加功能占比最大、预防为将来关键路径 最长路径 最短工期正推取大、逆推取小、松弛 0 即关键非关键活动的松弛时间 它与关键路径的时长差就是它合法摸鱼的天数。下一篇预告转进面向对象——UML 类图六种关系泛化、实现、关联、聚合、组合、依赖箭头傻傻分不清空心三角、空心菱形、实心菱形各自朝向谁一篇讲透。这正好接你之前写过的设计模式系列——UML 类图是所有设计模式的通用语言也是下午面向对象大题的必备武器。