Software Engineering

Maven的Snapshot版本与Release版本

1. Snapshot版本代表不稳定、尚处于开发中的版本 2. Release版本则代表稳定的版本 3. 什么情况下该用SNAPSHOT?      协同开发时,如果A依赖构件B,由于B会更新,B应该使用SNAPSHOT来标识自己。这种做法的必要性可以反证如下:       a.如果B不用SNAPSHOT,而是每次更新后都使用一个稳定的版本,那版本号就会升得太快,每天一升甚至每个小时一升,这就是对版本号的滥用。       b.如果B不用SNAPSHOT, 但一直使用一个单一的Release版本号,那当B更新后,A可能并不会接受到更新。因为A所使用的repository一般不会频繁更新release版本的缓存(即本地repository),所以B以不换版本号的方式更新后,A在拿B时发现本地已有这个版本,就不会去远程Repository下载最新的B 4. 不用Release版本,在所有地方都用SNAPSHOT版本行不行?           不行。 正式环境中不得使用snapshot版本的库。 比如说,今天你依赖某个snapshot版本的第三方库成功构建了自己的应用,明天再构建时可能就会失败,因为今晚第三方可能已经更新了它的snapshot库。你再次构建时,Maven会去远程repository下载snapshot的最新版本,你构建时用的库就是新的jar文件了,这时正确性就很难保证了。

PMBOK 学习笔记 3.6 项目沟通管理

项目沟通管理    项目经理的大多数时间都用在与团队成员和其他干系人的沟通上,他要起到桥梁的作用。  相关的过程:        1. 识别干系人            a.应在项目早期就识别出干系人         b.可以用四象限(权力+利益)给干系人分类,然后制定应对的策略。比如有的要”令其满意”,有的则要“随时告知”            c.干系人管理的相关文档可能会比较敏感,要注意保密        2. 规划沟通: 确定“如何沟通”            a.应在项目早期制定出沟通管理计划,并让项目成员确认         b.计划的沟通方式要“有效”:发送方有责任发送清晰完整的信息,接收完有责任确认和理解信息            c.沟通管理计划中可以规定:沟通的渠道、频率、接口人等                       3. 发布信息     要发布的信息包括:项目状态,重要记录,干系人的反馈意见和经验教训        4. 管理干系人期望             a.管理好干系人的期望可以增加项目成功的概率             b.项目经理要建立信任、学会倾听             c.项目经理也要克服自己对变化的抗拒心理        5. 报告绩效             a.目的:了解进展与绩效情况,并预测项目结果             b. 可以应用偏差分析技术,通过将实际信息与项目基准进行比较来确定偏差             c.报告内容可以有:完成百分比,绩效、风险分析,本期工作,下期工作             d.绩效报告应该定期发布

PMBOK 学习笔记 3.7 项目风险管理

项目风险管理    风险源于不确定性。   风险管理的基本步骤: 识别风险 => 分析风险 => 规划应对方案 第0步: 制定风险管理计划,即 为整个风险管理制定方法论。包括:       a.风险概率的定义:如规定“发生概率超过70%的风险为高可能性风险”       b.风险影响的定义:如规定“二级风险指使进度拖延10%-20%的风险”       c.风险管理活动将占用的时间和资金 第1步: 识别风险       a.项目成员应该参与识别过程,这样可以提高大家的责任感      b.进行识别时可以对照以前项目总结出来的风险checklist       c. 识别出的风险应成文归档,放在“风险登记册”中       d.项目进展过程中可能冒出新的风险,因此“识别风险”是一个持续的过程 第2步: 实施定性风险分析: 分析出风险的发生概率和影响,并排定风险的优先级 第3步: 实施定量风险分析(没看懂,略过)    第4步: 规划风险应对     a.规避风险:如延长进度,缩小范围,使风险消失     b.转移风险:把属于自己的风险转移到别人头上,如让甲方为超支的预算买单。     c.减轻风险:降低风险发生的概率(比如测试做得好一点),或者减少它的影响(比如增加备机)     d.接受风险:付出风险发生的代价,或者准备好B计划 第N/A步: 监控风险      跟踪已识别风险,监测残余风险,识别新风险。这是一个持续进行的过程

PMBOK 学习笔记 3.5 项目人力资源管理

项目人力资源管理:制定计划 => 组建团队 => 建设,管理团队 1. 制定人力资源计划:确定角色,明确职责,并配备管理计划  a.要确保大家都清楚自己的角色和职责  b.可通过人际交往了解政治与人际因素 2. 组建项目团队    a.项目经理要有效谈判,并影响那些能提供资源的人(比如职能经理)  b.主要输出:项目人员花名册 3. 建设管理团队:维护、激励和鼓舞团队,促进团队协作,使项目成功  a.提供挑战与机会    b.提供支持    c.认可与奖励优秀绩效。只有优良行为才能得到奖励    d.开放和有效的沟通, 建立信任    e.以建设性的方式管理冲突   f.鼓励合作  g. 创建富有生气的团队文化    h.项目经理要有 软技能:同情心,影响力,创造力和小组协调能力   i. 团队建设在整个项目周期都很重要,尤其是在前期    j.对可接受的行为作出明确规定  k.可考虑集中办公,增加集体感 4. 管理项目团队:观察团队行为, 管理冲突    a. 总是清楚当前的情况,包括成员的工作和态度,他们之间的人际关系问题等    b. 管理好冲突        i. 可先利用企业文化、良好的项目实践、工作规范等来预防冲突       ii. 开诚布公       iii.对事不对人       …

PMBOK 学习笔记 3.5 项目人力资源管理 Read More »

PMBOK 学习笔记 3.3 项目的范围,时间,成本管理

1. 范围管理:定义和控制哪些工作应包括在项目内,哪些不应包括在项目内。 具体过程有:    a. 收集需求。主要输出有“需求文档”和“ 需求管理计划”(规定如何分析、记录和管理需求)    b. 定义范围。主要输出有“项目范围说明书”    c. 创建WBS(工作分解结构)    d. 核实范围(Verify Scope),即验收。    e. 控制范围:监督范围状态、管理范围基线变更。 2. 时间管理,包括一系列与时间有关的规划和控制的过程。    规划:       a. 定义活动。把WBS的工作包再细分为“活动”,即任务。主要输出有活动清单,里程碑清单。       b. 排列活动顺序(Sequence Activities). 主要输出为PDM,项目进度网络图。       c. 估算活动资源。主要输出为“活动资源需求”,即每项活动所需的资源类型和数量。       d. 估算活动持续时间:先估算出工具量和计划的资源数量,再推算出所需的工作时段数。       e. 制定进度计划。输出应包括一个基线计划。     Note: 实践时,以上过程往往联系非常紧密,以至于可以视为一个过程    控制:        控制进度。主要手段是记录实际进度,比较它与进度计划基线的差异,然后决定是否需要采取措施。 3. 成本管理。有三个过程,     a. 估算成本     b. …

PMBOK 学习笔记 3.3 项目的范围,时间,成本管理 Read More »

PMBOK 学习笔记 3.4 项目质量管理

PMI提出了3个过程:      1. 规划质量: 识别质量要求。主要输出有: 质量管理计划(说明项目将如何保障质量) 和 质量测试指标(如 响应时间、可靠性、测试覆盖度等)      2. 实施质量保证: 审计质量要求,审计质量测量结果, 审计质量过程      3. 实施质量控制:记录质量测量的结果,评估绩效           a. 主要手段有测试,抽样检查等           b. 主要输出:质量控制测量结果(如测试报告)

PMBOK 学习笔记 1. 项目管理中的一些基本概念

项目管理中的一些基本概念   PMBOK: Project Management Body of Knowledge,作者是PMI(美国项目管理协会)。这本书的宗旨是:        1.识别项目管理知识体系中被普遍公认为良好做法的那一部分        2.提供和推广一套项目管理专业的通用词汇,用于讨论、书写和应用 基本概念:      项目:为…而进行的临时性工作,有 明确的起点和终点      项目管理:将知识、技能、工具和技术应用于项目活动。PMBOK认为项目管理可按时间顺序分为五大过程组,共42个过程      项目通常处于战略计划的大环境之中,因此项目的利益要服从于组织的整体利益(可参见“项目集”和“项目组合”的概念)      项目管理办公室(PMO): 对各项目进行集中协调。可以直接管理项目,也可以只提供管理支持和监督      项目经理须具备的能力:           1.通用的管理方面的能力和项目管理知识及实践能力           2.特定应用领域的知识或技能           3.个人素质,包括:态度,合适的人格特征和领导力       项目生命周期(lifecycle):一系列项目阶段(phase)的组合。基本的生命周期结构:启动项目 => 组织与准备 => 执行项目工作 => 结束项目。       项目阶段之间可以采用严格的顺序关系,也可以互相存在交叠以压缩进度,还可以一次只规划一个阶段,根据这个阶段的结果来规划下一个阶段(迭代式)       项目干系人(stakeholder):            1. 会积极参与项目            2. 或者其利益可能受项目的影响,包括积极影响和消极影响       在“干系人”这方面,项目经理要:            1.及早 识别所有干系人,理解他们对项目的影响力;如果这项工作到后期才做,可能导致代价非常高的产品变更。            …

PMBOK 学习笔记 1. 项目管理中的一些基本概念 Read More »

PMBOK 学习笔记 2. 项目管理过程概述

   项目管理过程(process):确保项目顺利进行的一系列相互关联的行动和活动,如收集需求,风险管理等等。    每个过程都有:输入、工具和技术,以及输出    PMI把所有过程分类为五大过程组,并认为任何项目都要经历这五大过程组:      1. 启动过程组(Initiating)          a. 过程:定义项目,明确授权,确定项目经理和干系人,并定义初步范围          b. 输出:项目章程和干系人名册          c. 启动过程可以加强干系人的主人翁意识;如果项目有多个阶段,则每个阶段最好都有一个启动过程      2. 规划过程组(Planning)          a. 过程:项目管理计划,收集需求,定义范围,项目估算,任务计划,进度计划,质量计划,开始风险管理等          b. 输出:需求文档和各种计划书      3. 执行过程组(Executing)          a. 执行,QA,调整计划,组建团队,建设团队,管理团队绩效,管理干系人期望等          b. 输出:可交付成果,更新了的项目计划等等      4. 监控过程组(Monitoring and Controlling)          a.过程:跟踪,审查,控制变更,控制进度,控制成本,控制质量,监控风险等          b.输出:变更了的计划,变更了的成本、风险登记册,绩效报告等      5. 收尾过程组(Closing)          a.过程:验收,评价,经验教训,文件归档          b.输出:最终产品移交