裸泳的猪

沾沾自喜其实最可悲

0%

项目进度管理

1.项目进度计划的定义和总要求

项⽬进度计划提供了项⽬的详尽计划,说明项⽬如何以及何时交付项⽬范围中定义的产品、服务和成 果,是⼀种⽤于沟通和管理⼲系⼈期望的⼯具,为绩效报告提供依据(P297 考1分选择题 进度计划是⼀个 模型/⼯具,例如⽢特图

管理新实践

敏捷相关方法

  • 具有未完成项的选代型进度计划
  • 按需进⾏的进度计划

⽤户故事(user story)是从⽤户的⾓度来描述⽤户渴望得到的功能。 要素:角色,活动,商业价值

2.项⽬进度管理过程

主要是围绕活动进行

口诀:规定牌(子)实际控

  • 1.规划进度管理
  • 2.定义活动 : 把⼯作包分解为活动
  • 3.排列活动顺序
  • 4.估算活动持续
  • 5.制定进度划 : 制表 ,类似于上课计划表,可以是⼀个 Escel 表格或者⽢特图)
  • 6.制进度
阅读全文 »

项目采购管理

1.管理基础

2.管理过程

过程 定义 作用 开展频次
计划 1.规划采购 管理 记录项目采购决策、明确采 购方法,及识别潜在卖方的 过程 确定是否从项目外部获取货物和服务, 如果是,则还要确定将在什么时间、 以什么方式获取什么货物和服务 仅开展一次或仅 在项目的预定义 点开展
执行 2.实施采购 获取卖方应答、选择卖方并授予合同的过程 选定合格卖方并签署关于货物或服务 交付的法律协议。本过程的最后成果 是签订的协议,包括正式合同。 在整个项目期间 定期开展
监控 3.控制采购 管理采购关系、监督合同绩 效、实施必要的变更和纠偏, 以及关闭合同的过程 确保买卖双方履行法律协议,满足项 目需求 在整个项目期间 开展
过程 输入 工具和技术 输出
规划 1.规划采购 1.立项管理文件2.项目章程3.项目管理计划4.项目文件5.事业环境因素6.组织过程资产 1.专家判断2.数据收集3.数据分析4.供方选择分析5.会议 1.采购管理计划2.采购策略3.采购工作说明书4.招标文件5.自制或外购决策6.独立成本估算7.供方选择标准8.变更请求9.项目文件(更新)10.组织过程资产(更新)
执行 2.实施采购 1.项目管理计划2.项目文件3.采购文档4.卖方建议书5.事业环境因素6.组织过程资产 1.专家判断2.广告3.投标人会议4.数据分析5.人际关系与团队技能 1.选定的卖方2.协议3.变更请求4.项目管理计划(更新)5.项目文件(更新)6.组织过程资产(更新)
监控 3.控制采购 1.项目管理计划2.项目文件3.采购文档4.协议5.工作绩效数据6.批准的变更请求7.事业环境因素8.组织过程资产 1.专家判断2.索赔管理3.数据分析4.检查5.审计 1.采购关闭2.采购文档(更新)3.工作绩效信息4.变更请求5.项目管理计划(更新)6.项目文件(更新)7.组织过程资产(更新)

2.1 规划采购管理

2.1.1 合同管理

![image-20240509194129646](/Users/seven/Documents/blog/blog/source/_posts/软考/采购管理/:Users:seven:Library:Application Support:typora-user-images:image-20240509194129646.png)

  • 总价合同(Fixed-Price Contract)(甲⽅有利,范围确定,风险⼩)此类合同为既定产品、服务或

成果的采购设定⼀个总价。这种合同应在⼰明确定义需求,且不会出现重⼤范围变更的情况下使⽤。

  • 成本补偿合同。(⼄⽅有利,需求不确定,风险大)此类合同卖⽅⽀付为完成⼯作⽽发⽣的全部合法实际成本(可报销成本),外加⼀笔费⽤作为卖⽅的利润。
  • ⼯料合同 (Time and Material, T&M)。(范围不确定,但是单价确定)⼯料合同(又称间和⼿段合同),

2.1.2 输出

2.1.2.1采购⼯作说明书

项目风险管理

1.管理基础

1.1风险的属性

1.1.1 风险的随机性

1.1.2 风险的相对性

风险总是相对项⽬活动主体⽽⾔的。同样的风险对于不同的主体有不同的影响。⼈们对于风险事 件都有⼀定的承受能⼒,但是这种能⼒因活动、⼈和时间⽽异。对于项⽬风险,影响⼈ 们的风险承受 能⼒的因素主要包括:

  • 收益的⼤⼩
  • 投入的大小
  • 项目活动主题的地位和拥有的资源

1.1.3 风险的可变性

⻛险性质的变化

1.2风险的分类

![image-20240508203859506](项目风险管理/:Users:seven:Library:Application Support:typora-user-images:image-20240508203859506.png)

2 项目风险管理过程

口诀:化石姓梁应实控

过程 定义 作用 开展频次
规 划 1.规划风险管 理 定义如何实施项目风险管理活动的过程 确保风险管理的水平、方法和可见度 与项目风险程度相匹配,与对组织和 其他干系人的重要程度相匹配
2.识别风险 识别单个项目风险以及整体项目风险的来 源,并记录风险特征的过程 记录现有的单个项目风险,以及整 体项目风险的来源; ②汇总相关信息,以便项目团队能够 恰当地应对已识别的风险 在整个项目 期间开展
3.实施定性风 险分析 通过评估单个项目风险发生的概率和影响 及其他特征,对风险进行优先级排序,从 而为后续分析或行动提供基础的过程 重点关注高优先级的风险 在整个项目 期间开展
4.实施定量风 险分析 就已识别的单个项目风险和不确定性的其 他来源对整体项目目标的影响进行定量分 析的过程 量化整体项目风险最大可能性; ②提供额外的定量风险信息,以支持 风险应对规划 并非每个项 目必需,但 如采用,在 整个项目期 间持续开展
5.规划风险应 对 为了应对项目风险,而制定可选方案、选择应对策略并商定应对行动的过程 制定应对整体项目风险和单个项目 风险的适当方法;分配资源,并根据需要将相关活动 添加进项目文件和项目管理计划中 在整个项目 期间开展 |
执行 6.实施风险 应对 执行商定的风险应对计划 的过程 ①确保按计划执行商定的风险应对措施;管理整体项目风险入口最小化单个 项目威胁,以及最大化单个项目机会 在整个项目期 间开展
监控 7.监督风险 在整个项目期间,监督风 险应对计划的实施,并跟踪已识别风险、识别和分析新风险,以及评估风险 管理有效性的过程 保证项目决策是在整体项目风险和单个 项目风险当前信息的基础上进行 在整个项目期 间开展

敏捷与适应方法: ◆ 要应对快速变化,就需要采用敏捷或适应型方法管理项目,如经常审查增量的工作产品,加快知识的分享,来确保对风险的认知和管理。在选择每个迭代期的工作内容时都要考虑风险;在每个迭代期间

应该识别、分析和管理风险。

◆ 此外,应根据对当前风险忍受度的深入理解,定期更新需求文件,并随项目进展重新排列工作优先级

过程 输入 工具和技术 输出
规划 1.规划风险 管理 1.项目章程2.项目管理计划3.项目文件4.事业环境因素5.组织过程资产 1.专家判断2.数据分析3.会议 1.风险管理计划
2.识别风险 1.项目管理计划2.项目文件3.采购文档4.协议5.事业环境因素6.组织过程资产 1.专家判断2.数据收集3.数据分析4.人际关系与团队技能5.提示清单6.会议 1.风险登记册2.风险报告3.项目文件(更新)
3.实施定性 风险分析 1.项目管理计划2.项目文件3.事业环境因素4.组织过程资产 1.专家判断2.数据收集3.数据分析4.人际关系与团队技能5.风险分类6.数据表现7.会议 1.项目文件(更新)
4.实施定量 风险分析 1.项目管理计划2.项目文件3.事业环境因素4.组织过程资产 1.专家判断2.数据收集3.人际关系与团队技能4.不确定性表现方式5.数据分析 1.项目文件(更新)
5.规划风险 应对 1.项目管理计划2.项目文件3.事业环境因素4.组织过程资产 1.专家判断2.数据收集3.人际关系与团队技能4.威胁应对策略5.机会应对策略6.应急应对策略7.整体项目风险应对策略8.数据分析9.决策 1.变更请求2.项目管理计划(更新)3.项目文件(更新)
执行 6.实施风险 应对 1.项目管理计划2.项目文件3.组织过程资产 1.专家判断2.人际关系与团队技能3.项目管理信息系统 1.变更请求2.项目文件(更新)
监控 7.监督风险 1.项目管理计划2.项目文件3.工作绩效数据4.工作绩效报告 1.数据分析2.审计3.会议 1.工作绩效信息2.变更请求3.项目管理计划(更新)4.项目文件(更新)5.组织过程资产(更新)

2.1 规划风险管理

2.2识别风险

WOT 分析:对项⽬的优势、劣势、机会和威胁(简称 SWOT)进⾏逐个检查。

2.3实施定性风险分析

![image-20240508212501602](项目风险管理/:Users:seven:Library:Application Support:typora-user-images:image-20240508212501602.png)

2.4实施定量风险分析

2.5规划应对风险

威胁应对策略

![image-20240508212614019](项目风险管理/:Users:seven:Library:Application Support:typora-user-images:image-20240508212614019.png)

![image-20240508212639704](项目风险管理/:Users:seven:Library:Application Support:typora-user-images:image-20240508212639704.png)

2.6实施风险应对

2.7监督风险

软考高项案例回答参考

1. 请写出项目建议书的内容

项目的必要性、项目的市场预测、产品方案或服务的市场预测、项目建设必须的条件

2. 说明项目建议书的作用

项目建议书的作用是国家或上级主管部门选择项目的依据,也是可行性研究的依据,设计利用外资的项目,在项目建议书批准后,方可展开对外工作。

3. 项目组在软件研发工作完成后,平移交给产品部之前,应完成那些项目结项相关工作。

  1. 产品核实
  2. 财务收尾
  3. 更新项目记录
  4. 总结经验教训
  5. 进行组织过程资产更新
  6. 结束项目干系人在项目上的关系,解散项目团队。

4. 请阐述范围确认和质量控制的不同点,完成以下表格。

范围确认和质量控制的不同之处
检查内容 确认范围强调可交付成果获得客户或发起人的接受; 质量控制强调可交付成果的正确性,并符合其制定的具体质量要求
检查的时间点 确认范围一般在阶段末尾进行,而质量控制并不一定在阶段末尾进行。 质量控制一般在确认范围前进行,也可同时进行
执行人员 确认范围是由外部干系人对项目可交付成果进行检查 质量控制属内部检查,由执行组织的相应质量部门实施
详略程度 质量控制是比确认范围更加详细的检查过程。

5. 简述双密钥证书的生成过程

(1)用户使用客户端产生签名密钥对。

(2)用户的签名私钥保存在客户端。

(3)用户将签名密钥对的公钥传送给 CA中心。

(4)CA中心为用户的公钥签名,产生签名证书。

(5)CA中心将签名证书传回客户端进行保存。

(6) KMC(密钥管理中心)为用户生成加密密钥对。

(7)在KMC中备份加密密钥以备以后进行密钥恢复。

(8)CA中心为加密密钥对生成加密证书。

(9)CA中心将用户的加密私钥和加密证书打包成标准格式 PKCS#12。

(10)将打包后的文件传回客户端。

(11)用户的客户端装入加密公钥证书和加密私钥。

6. 写出 WBS 分解时,需要注意的事项

  1. 明确项⽬⽬标和范围

在进⾏WBS分解之前,需要明确项⽬⽬标和范围。只有了解项⽬的⽬标和范围,才能确定分解的级别和 范围。如果⽬标和范围不清晰,就会导致分解的过程不够准确,影响项⽬的管理和控制。

  1. 分解层次和范围的确定

WBS分解需要确定分解的层次和范围。分解的层次应该是可管理的,每⼀层次应该包含⾜够的细节,以 便于后续的管理和控制。同时,需要确定分解的范围,即确定每个分解单元所包含的⼯作和可交付成果。

  1. 避免重复和遗漏

在进⾏WBS分解时,需要避免重复和遗漏。每个分解单元应该被唯⼀地标识,并且不能被多次列出。同 时,需要确保所有的⼯作和可交付成果都被包含在分解单元中,以避免遗漏。

  1. 适当使⽤分解结构

WBS分解可以采⽤不同的结构,包括层次结构、⼯作分解结构和产品分解结构。在选择分解结构时,需

要考虑项⽬的特点和需求。不同的分解结构可以帮助项⽬经理更好地管理和控制项⽬,提⾼项⽬成功的可能性。

  1. 关注可交付成果

WBS分解的重点是可交付成果。每个分解单元都应该包含明确的可交付成果,以便于后续的管理和控 制。同时,需要确保可交付成果与项⽬⽬标和范围的⼀致性,以避免偏离项⽬⽬标。

  1. 精细化分解

WBS分解需要精细化,即将⼤的⼯作分解为更⼩的⼯作和可交付成果。这可以帮助项⽬经理更好地管理 和控制项⽬,避免漏洞和⻛险。

  1. 合理分配资源

WBS分解需要合理分配资源,包括时间、⼈⼒和预算等。每个分解单元都应该被分配合适的资源,以确

保项⽬的顺利实施。 WBS分解是项⽬管理中的⼀种重要⽅法,需要注意以上⼏个⽅⾯,以确保项⽬的成功实施。

7. 请写出范围说明书的内容和作用。

内容:(1)产品范围描述。 (2)验收标准。 (3)可交付成果。(4)项目的除外责任。(5)制约因素。(6)假设条件。

作用:(l)确定范围。(2)沟通基础。(3)规划和控制依据。(4)变更基础。(5)规划基础

8. 在软件升级过程中的配置库变更控制流程

9. 请简述质量审计的目标

① 识别全部正在实施的良好及最佳实践;

② 识别全部违规做法、差距及不足;

③ 分享所在组织或行业中类似项目的良好实践;

④ 积极、主动地提供协助,以改进过程的执行,从而帮助团队提高生产效率;

⑤ 强调每次审计都应对组织经验教训的积累做出贡献

10. 如果系统测试中需要采用黑盒测试,白盒测试和灰盒测试,请阐述三种测试的含义和用途

黑盒测试:也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

白盒测试:又称结构测试,白盒测试可以把程序看成装在一个透明的白盒子里,也就是清楚了解程序结构和处理过程,检查是否所有的结构及路径都是正确的,检查软件内部动作是否按照设计说明书的规定正常进行。其目的是通过检查软件内部的逻辑结构,对软件中逻辑路径进行覆盖的测试,可以覆盖全部代码、分支、路径和条件。

灰盒测试:介于白盒测试与黑盒测试之间的测试。灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不像白盒测试详细、完整,只是通过一些表征的现象、事件、标志来判断内部的运行状态。灰盒测试是基于程序运行时的外部表现同时又结合程序内部逻辑结构来设计用例,执行程序并采集程序路径执行信息和外部用户接口结果的测试技术。

11. 请简述帕累托分析原理

帕累托图来自于80/20定律,该定律认为大多数的问题或缺陷产生于相对有限的原因,即20%的原因造成了80%的问题。
造成故障的主要原因:报警器故障导致的故障最多,是主要因素。
解决故障的优先级:
(1) 第一优先级:报警器;
(2) 第二优先级:监听扬声器;
(3) 第三优先级:电子地图;
(4) 第四优先级:对讲装置和广播主机

12. 写出一致性成本和非一致性成本的定义

一致性成本:在项目期间用于防止失败的费用;
非一致性成本:项目期间和项目完成后用于处理失败的费用

13. 什么是质量保证,有哪些作用?

质量保证是审计质量要求和质量控制测量结果,确保采用合理的质量标准和操作性定义过程。旨在建立对未来输出或未完输出在完工时满足特定的需求和期望的信心。

本过程的主要作用是,促进质量改进

14. 什么是质量控制,质量控制的作用?

质量控制是监督并记录质量活动执行结果,以便评估绩效,并推荐必要的变更过程。

主要作用:

① 识别过程低效或质量低劣的原因,建议采取相应的措施消除这些原因

② 确认项目的可交付成果及工作满足主要干系人的既定需求,足以进行最终的验收。

15.信息系统项目管理师案例分析考点:项目管理五大过程组(整体管理)

启动过程组 规划过程组 执行过程组 监控过程组 收尾过程组
制定项目章程 制定项目管理计划 指导与管理项目工作 监控项目工作实施整体变更控制 结束项目或阶段

软考高项论文写作历年考题

软考高项历年题目

主要为:10大领域47个过程


八股文论文架构

  1. 背景

    1
    2
    项目的背景、名称、投资规模、周期、参与方、建设内容、特点(隐含的点 题!)我的角色、团队
    建议2段左右完成,字数控制在500 左右为佳,对应子题目1
  2. 过渡段

    1
    写150字左右的过渡段,承上启下, 回答部分子题目2、3的要求
  3. 正文实践 部分

    1
    2
    3
    4
    ◼ 过程类论文写法: 按照“xx 管理的过程”顺序写,但一定要注意突出实践! ! !
    ◼ 控制类论文写法: 一、编制XX管理计划(计划的理论(100 字左右) 、计划的实践(200 字左右)——要有具体的计划! ) 二、XX计划的监控(控制的理论(100 字左右)、控制的实践(1000 字左右)——写“问题” :描述 问题、分析问题(分析问题时,要结合前文的计划分析! ) 、解决问题。

    一般3-7个论点,根据题目的要求来 看,一个论点一般1-2段,整体字数 在1300左右,这是论文的核心内容, 也是大家平时需要积累的东西
  4. 收尾

    1
    一般1段,画龙点睛的作用,总结经 验和教训,表决心,字数一般300字 左右为佳

写作要求

  • 简要介绍项目的背景、发起单位、目的、开始时间、结束时间、主要交付物、最终交 付产品。着重介绍论文要求撰写的领域方面的管理及作者在其中承担的工作和角色。提 出针对撰写领域的论点。—对应于子题目1

  • 基于上述背景,介绍作者对该领域的认识。通常可以按照每个领域的每个过程分别介绍。这里的每个过程可以作为一个段落,注意不要遗漏,每个过程都涵盖。要理论联系实际,对每个过程适当的展开阐述,描述在实际项目中的做法,包括谁来做的,怎么做 的,何时做的等方面。对每个过程要重点说明你的做法以及使用的工具,工具说明1-2 种就行了,要总结每个过程在实际管理中碰到的问题,你的解决办法和心得体会;注意 要与题目的第二、三小问结合 。—对应于子题目2、3

  • 总结在实际项目中对这一领域管理的体会和心得,包括实际效果和存在的不足和问题,并且分析好的经验如何在以后的项目中推广,不好的原因是什么以及在以后如何改进和提高—收尾

各排序算法比较

类别 排序方法 时间复杂度 空间复杂度 稳定性 复杂性
最好-平均-最坏 辅助存储
插入排序 1-1直接插入 O(N)-O(N2)-O(N2) O(1) 稳定 简单
插入排序 1-2希尔排序 O(N)-O(N1.3)-O(N2) O(1) 不稳定 复杂
选择排序* 2-1直接选择 O(N)-O(N2)-O(N2) O(1) 不稳定 简单
选择排序* 2-2堆排序 O(Nlog2N)-O(Nlog2N)-O(N*log2N) O(1) 不稳定 复杂
交换排序* 3-1冒泡排序 O(N)-O(N2)-O(N2) O(1) 稳定 简单
交换排序* 3-2快速排序 O(Nlog2N)-O(Nlog2N)- O(N2) O(log2n)~O(n) 不稳定 复杂
归并排序 O(Nlog2N)-O(Nlog2N)-O(N*log2N) O(1) 稳定 复杂
基数排序 O(d(r+n))-O(d(r+n))-O(d(r+n)) O(rd+n) 稳定 复杂

*:(每轮都能确定最终位置)

1.冒泡排序

1、冒泡排序是一种用时间换空间的排序方法
2、最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序,最差时间复杂度O(N^2)只是表示其操作次数的数量级
3、最好的情况是数据本来就有序,复杂度为O(n)

2.快速排序

1、n大时好,快速排序比较占用内存,内存随n的增大而增大,但却是效率高不稳定的排序算法。
2、划分之后一边是一个,一边是n-1个,
这种极端情况的时间复杂度就是O(N^2)
3、最好的情况是每次都能均匀的划分序列,O(N*log2N)

3.归并排序

1、n大时好,归并比较占用内存,内存随n的增大而增大,但却是效率高且稳定的排序算法。

2020年软件设计师知识点


  1. 高速缓存和主存间的地址映射由硬件自动完成。

全相联映射-将主存一个块的地址与内容一起存入 cache 中,拷贝灵活但是比较器电路难设计实现;

直接映射-一个主存块只能拷贝到 cache 的特定行上 去,硬件简单成本低但是容易冲突效率下降。

组相联映射-主存块放到哪个组是固定的,但 是放到哪一行是灵活的,折中办法广泛采用。

  • 存储器:内存,外存
  • 运算器:算术逻辑单元ALU,累加寄存器AC,数据缓冲寄存器DR,状态条件寄存器PSW
  • 控制器:指令寄存器IR,程序计数器PC,地址寄存器AR,指令译码器ID
  1. 浮点数相加减

运算过程:对阶(阶码小的向阶码大的对齐 损失更少精度)、尾数求和((阶码用双符号位,尾数用单符号位)、规格化、舍入、溢出判断

截屏2022-05-05 22.31.15

阅读全文 »

2020年软件设计师知识点


系统可靠性分析和设计

1.串联系统

可靠性R=R1 * R2 *……*Rn,各子系统可靠度相乘。

失效率 (近似) 总失效率=各子系统失效率相加

2.并联系统

可靠性 R=1- (1-R1)*(1-R2)*…*(1-Rn) ,并联计算各子系统失效率,全部失效才真正失效,1-失效率

失效率 = 1- 可靠性

3.模冗余系统和混合系统

差错控制

检错和纠错

公式

描述 公式
定点整数补码和移码范围 **-2^(n-1) ~ 2^(n-1) -1 ** (最小数再加1则为原码 反码的表示范围)
定点小数补码和移码范围 ** -1 ~ 1-2^(-(n-1)) ** (原码 反码的表示范围:-(1-2^(-(n-1)) ~ 1-2^(-(n-1))
对称加密 DES 3DES RC4 RC5 IDEA AES
非对称加密 (公开密钥加密算法 ) RSA,Rabin(RSA的特例), DSA, ECC ,EIGamal
补码能表示的数的个数 2^n
浮点数表示 尾数 x 基数^指数
流水线理论公式 t1+..+tk+(n-1)*△t (△t 为流水线中最长执行时间)
流水线实践公式 k△t+(n-1)*△t (k为流水线的步骤数)
流水线吞吐率TP 指令条数/流水线执行时间
流水线最大吞吐率 1/△t
Cache+主存储器系统的平均周期 h*t1+(1-h)*t2
存储芯片片数 总容量/每片容量
系统可用性 MTTF/(MTTR+MTTF) * 100% (MTTF平均失效前时间,MTTR平均修复时间)
系统可靠性 MTTF/(1+MTTF)
串联系统可靠性 R1*R2…*Rn
并联系统可靠性 1-(1-R1)(1-R2)…(1-Rn)
海明检验码 2^r >= r+m+1 r:校验位 m:数据位
MIPS 指令条数/(执行时间10^6)主频/CPI主频IPC
系统不死锁最小资源 n >= (w-1)*m+1
逻辑地址 页号+页内地址
物理地址 页帧号+页内地址
文件物理块所在位示图的位置 (n+1)/字长,向上取整
端口号 TCP类型: POP3 110 , SMTP 25 ,FTP 20/21 ,Telnet 23, HTTP 80 ,HTTPS 443 UDP类型:DHCP 67 ,TFTP 69 ,SNMP 161 ,DNS 53
摘要算法 MD5 128位 SHA 160位
网络安全保障 应用层:PGP HTTPS SSL表示层:SSL会话层:SSL传输层:TLS SET网络层:防火墙 IPSec数据链路层:链路加密 PPTP L2TP物理层:隔离 屏蔽
风险曝光度 风险出现率*风险损失
时间复杂度排序 O(1)<O(log₂n)<O(n)<O(nlog₂n)<O(n²)<O(n³)<O(2^n)
有无主程序开发小组,沟通路径 有主程序员 m= n -1 无程序员组:完全联通无向边图的边数 m = n *(n -1) /2
第一范式(1NF): 关系模式S中的所有属性都是不可再分的基本数据项
第二范式(2NF): 在第一范式的基础上,消除了非主属性对码的部分函数依赖
第三范式(3NF): 在第二范式的基础上,进一步消除了非主属性对码的传递函数依赖
BC范式(BCNF): 在第三范式的基础上,进一步消除了主属性对码的部分函数依赖和传递函数依赖
时间复杂度 O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2)<O(n^3)<O(2^n)<O(n!)
有/无主程序员沟通路径 n-1(有主) n*(n-1)/2(无主)
声音频率 | 20Hz - 20KHz
色彩空间 RGB显示器 YUV(YCBR)电视 CMY印刷 HSV 艺术

20170406122131723

内聚与耦合

内聚(从弱到强)

  • 偶然内聚(巧合内聚)一个模块内的各处理元素之间没有任何联系,只是偶然地被凑到一起。这种模块也称为巧合内聚,内聚程度最低。

  • 逻辑内聚:这种模块把几种相关的功能组合在一起, 每次被调用时,由传送给模块参数来确定该模块应完成哪一种功能 。相关的功能也就是逻辑上的功能放在一起。如表述,我和全世界的人,比较松

  • 时间内聚:把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。仅是时间上相关的动作,如一边看书,一边听音乐,可以描述了件事情了,但还不是必须在一块执行的动作。

  • 过程内聚:构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。简单的说就是如果一个模块内的处理元素是相关的,而且必须以特定次序执行则称为过程内聚。两个功能同属于一个过程中,有了在一起的理由。
    例如某要完成登录的功能,前一个功能判断网络状态,后一个执行登录操作,显然是按照特定次序执行的。

  • 通信内聚:指模块内所有处理元素都在同一个数据结构上操作或所有处理功能都通过公用数据而发生关联(有时称之为信息内聚)。即指模块内各个组成部分都使用相同的数据结构或产生相同的数据结构。两个模块需要交换数据(通信)了,才能完成某一个功能。这样在一起的 理由更充分了一些。

  • 顺序内聚:一个模块中各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,通常前一个处理元素的输出是后一个处理元素的输入。顺序虽然也代表着过程,但有本质的区别,还是体现在数据的关联上,顺序强调的是前一个输出是后一个的输入。不仅强调数据交流(通信)还限制顺序,在一起的理由就更充分了。
    例如某要完成获取订单信息的功能,前一个功能获取用户信息,后一个执行计算均价操作,显然该模块内两部分紧密关联。
    顺序内聚的内聚度比较高,但缺点是不如功能内聚易于维护。

  • 功能内聚:模块内所有元素的各个组成部分全部都为完成同一个功能而存在,共同完成一个单一的功能,模块已不可再分。即模块仅包括为完成某个功能所必须的所有成分,这些成分紧密联系、缺一不可。就是为了单一的功能,不可再拆分了,必须在一起了。

    耦合(从强到弱)

  • 内容耦合:一个模块直接访问另一模块的内容,则称这两个模块为内容耦合。
    若在程序中出现下列情况之一,则说明两个模块之间发生了内容耦合:

  1. 一个模块直接访问另一个模块的内部数据。
  2. 一个模块不通过正常入口而直接转入到另一个模块的内部。
  3. 两个模块有一部分代码重叠(该部分代码具有一定的独立功能)。
  4. 一个模块有多个入口。

内容耦合可能在汇编语言中出现。大多数高级语言都已设计成不允许出现内容耦合。这种耦合的耦合性最强,模块独立性最弱。

其中一个模块访问另一个模块的内部,也就是信赖另一个模块的内容

  • 公共耦合:一组模块都访问同一个全局数据结构,则称之为公共耦合。公共数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。如果模块只是向公共数据环境输入数据,或是只从公共数据环境取出数据,这属于比较松散的公共耦合;如果模块既向公共数据环境输入数据又从公共数据环境取出数据,这属于较紧密的公共耦合。
    公共耦合会引起以下问题:一个模块通过公共的数据与另一个模块关联,有共用的大量数据,那么还是不独立。
  1. 无法控制各个模块对公共数据的存取,严重影响了软件模块的可靠性和适应性。
  2. 使软件的可维护性变差。若一个模块修改了公共数据,则会影响相关模块。
  3. 降低了软件的可理解性。不容易清楚知道哪些数据被哪些模块所共享,排错困难。

一般地,仅当模块间共享的数据很多且通过参数传递很不方便时,才使用公共耦合。

  • 外部耦合:一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为外部耦合。模块间通过外部的简单变量,少量的共用数据产生关联,独立性好点了。

  • 控制耦合:模块之间传递的不是数据信息,而是控制信息例如标志、开关量等,一个模块控制了另一个模块的功能。模块间通过控制信号,肯定是外部的了,并且是开关量,共用数据更少了。独立性更好了。

  • 标记耦合:调用模块和被调用模块之间传递数据结构而不是简单数据,同时也称作特征耦合。表就和的模块间传递的不是简单变量,而是像高级语言中的数据名、记录名和文件名等数据结果,这些名字即为标记,其实传递的是地址。标记理解为地址的话,地址里的内容可不一定是固定的,所以模块间的关系,基本开始脱离数据这么紧密的关系了,开始独立了。

  • 数据耦合:调用模块和被调用模块之间只传递简单的数据项参数。相当于高级语言中的值传递。只是传递了个数据,如1,不用于共用数据了才行了,更加独立了。

  • 非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。耦合度最弱,模块独立性最强。


二叉树

  • 反向构造二叉树,
    对比前序,中序遍历,前序第一个是根节点, 中序中的相同的字母分为左右两边,继续往下循环
  • 树转二叉树
    孩子节点-左子树节点 兄弟节点-树的右子节点 (从上到下,从左到右)
  • 哈夫曼树
  1. 在权值中拿出最小两个,相加生成父节点,再将父节点放入原权值组中 循环上述操作构造成树

  2. 带权路径长度=全部叶子节点权值*路径长度

  3. 树左节点为0,右子节点为1


软考中涉及到的主要开发模型:

  1. 原型开发模型(快速原型模型、演化模型、增量模型)
  • 1)快速原型:

    解释:其用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。主要用于需求分析阶段。是一种“抛弃式”的原型化方法。

    特征:简化项目管理、尽快建立初步需求、加强用户参与和决策。
  • 2)演化模型:

    解释:应用于真个软件开发过程,是从最初模型逐步演化为最终软件产品的渐进过程。是一种“渐进式”的原型化方法。
  • 3)增量模型(渐增式)

    解释:主要用于设计阶段,把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。新的增量构件不得破坏已经开发出来的产品。
  1. 瀑布模型
    解释:瀑布模型严格遵循软件生命周期各阶段的固定顺序:计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入下一阶段,真个模型就像是一个飞流直下的瀑布。
          优点:以文档作为驱动,强迫开发人员采用规范的方法,严格规定了各阶段必须提交的文档;要求每一阶段结束后都要进行严格的评审。与它最相适应的开发方法是结构化方法。
          缺点:不适用户需求的改动。
    
  2. 螺旋模型
    解释:综合了瀑布模型和原型模型中的演化模型的优点,还增加了风险分析。螺旋线第一圈的开始点可能是一个概念项目。从第二圈开始,一个新产品开发项目就开始了,新产品的演化沿着螺旋线进行若干次迭代,一直转到软件生命期结束。
    
  3. 喷泉模型
     解释:主要用于描述面向对象的开发过程。喷泉一词体现了面向对象开发过程的迭代和无间隙特征。
    
  4. 迭代软件开发技术
      Rational统一开发流程RUP是一个通用的软件流程框架,它是一个以框架为中心,用例驱动的迭代化软件开发流程。RUP是从千个软件项目的实践经验中总结出来的,对于实际的项目具有很强的指导意义,是软件开发行业事实上的行业标准。在RUP中,我们把软件开发生命周期划分为四个阶段,每个阶段的结束标志就是一个主要的里程碑。
                这四个阶段是为了达到以下阶段性的目标里程碑:
                 先启(Inception):确定项目开发的目标和范围。
                 精化(Elaboration):确定系统架构和系统功能
                 构建(Construction):实现剩余的系统功能
                 产品化(Transition):完成软件的产品化工作,将系统移交给客户
       真题再现:<br/>
       1.(2012年下)某开发小组欲开发一个规模较大、需求较明确的项目。开发小组对项目领域熟悉且该项目与小组开发过的某一项目相似,则适宜采用瀑布开发模型。<br/>
       2.(2012年上)假设某软件公司与客户签订合同开发一个软件系统,系统的功能有较清晰的定义,且客户对交付时间有严格要求,则该系统的开发最适宜采用瀑布模型。<br/>
       3.(2011年下)若全面采用新技术开发一个大学记账系统,以替换原有的系统,则宜选择采用瀑布模型进行开发。<br/>
       4.(2011年上)为了有效地捕获系统需求,应采用原型模型<br/>
       5.(2010年上)统一过程(UP)定义了初启阶段、精化阶段、构建阶段、移交阶段,每个阶段以达到某个里程碑时结束,其中,精化阶段的里程碑时生命周期架构。
    

下午题目

查找缺失数据流方法

  • 1.父图子图 对比
  • 2.确定每个加工查看是否有输入输出
  • 3.读试题描述和图做对比,查看是否有缺失。(每句话都要仔细看)

分解加工时,常见的三种错误

  • 1.黑洞 有输入无输出
  • 2.白洞 无输入有输出
  • 3.灰洞 输入不足以产生输出

添加缺失

1.将***作为外部实体,添加从加工“ ***” 到“ ***” 的数据流“***”

结构化语言

伪代码
1)从题干中抽取“动词 + 名词” 或者 “名词 + 动词”,而不是直接COPY整个句子。

2)从题干内容中提炼出IF,WHILE:比如2021上半年1题中,车辆入场和出场是想对的概念,因此是IF;比如2020下半年1题中,图像采集是一个WHILE过程。

3)利用伪代码(参考latex代码格式,参考Latex写伪代码)书写,常见语法包括:while(…) do {xxx} end while,if(…) then {xxx} end if

用例和用例之间的关系

1.包含 系统用例较多,不同用例之前存在共同行为,可以将这些共同的行为提取出来,单独组成一个用例,当其他用例适用这个用例时,他们就构成了包含关系

2.扩展 当用例执行过程中,可能会出现一些特殊情况,也可能再不同的分支行为中选择执行,这时可将异常行为与可选分支抽象微一个单独的扩展用例,一个用例可能有多个扩展用例

3.泛化

类图中各个图形和线条的意义

各种uml图
1.用例图
2.类图
3.对象图
4.活动图
5.状态图
6序列图(时序图)
7.协作图(通信图)
8.构建图
9.部署图
10.组件图

算法

软考中常见算法类型:分治法、回溯法、贪心法、动态规划法。

1. 分治法

将一个问题拆分为若干个小规模的子问题,通常用递归的思想求解子问题,子问题相互独立但与原问题相同,再将子问题的解合并得到原问题的解。(自下向上)

2. 回溯法

搜索问题的所有解或任一解,在搜索过程中发现不满足求解条件则回溯,尝试别的路径。

3. 贪心法

不考虑整体,只在当前做出最优的选择,求得局部最优解。(自顶向下)

4. 动态规划法

划分子问题为最优的子策略,并把子问题的解使用数组存储,利用查表查出子问题结果构造最终问题结果。与分治法不同的是子问题不独立,相同子问题可能会被求解多次。(自底向上/自下而上)

软考常见算法例题

设计模式

1.创建性模式

抽象工厂模式(Abstract Factory):提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类。(一个接口创建相关对象,无需具体的类)

工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

构建器模式(Builder):将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示。(相同是构造,不同的表示)

工厂方法模式(Factory Method):定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟。(接口,子类决定实例化具体类)

原型模式(Prototype):用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象。(只有一个实例)

单例模式(Singleton):保证一个类只有一个实例,并提供一个访问它的全局访问点。(只有一个实例)

2.结构型模式

适配器模式(Adapter):将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作。(实现兼容)

桥接模式(Bridge):将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化。(抽象和实现分离开)

组合模式(Composite):将对象组合成树型结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。(整体—部分)

装饰模式(Decorator):动态地给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活。(动态添加)

外观模式(Facade):定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用。(为子系统提供一致的外观)

享元模式(Flyweight):提供支持大量细粒度对象共享的有效方法。(共享)

代理模式(Proxy):为其他对象提供一种代理以控制这个对象的访问。(提供代理)

3.行为型模式

职责链模式(Chain of Responsibility):通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求。(将对象链接起来,在链中传递请求)

命令模式(Command):将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。(参数化)

解释器模式(Interpreter):给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子。(有一个解释器来表示文法句子)

迭代器模式(Iterator):提供一种方法来顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。(不需要暴露对象的内部)

中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立地改变对象间的交互。(使用中介来调用

备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态。(可以恢复到之前的状态

观察者模式(Observer):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。(一个变,其他也变

状态模式(State):允许一个对象在其内部状态改变时改变它的行为。(状态改变时改变它的行为)

策略模式(Strategy):定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化。(互相替换)

模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤。(子类父类)

访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作,需要对一个对象数据结构中的对象进行很多不同的并且不相关的操作。(不改变各元素定义这些元素的新操作)

Shell 中数字相加

1
2
3
4
5
6
7
8
9
10
11
12
a=10
b=20
c=`expr ${a} + ${b}`
echo "$c"

let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上
$ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。

let a=5+4
let b=9-3
echo $a $b

ftp命令

1
2
3
4
5
6
7
8
9
10
11
ftp ip.ip.ip.ip
#获取文件
mget
#上传文件
mput
#关闭确认提示
prompt
#删除文件
delete xxx.dat
#批量删除文件 支持通配
mdelete *xxx*

awk中输入外部的变量

1
2
#注意 " 和 '
grep kdpl_acct_bal load.sh|awk '{print "'$FilePath'"$4}'
阅读全文 »