项目启动
团队
- ⼀个协作良好的团队是任何项⽬成功的基础。
- 软件项⽬尤其依赖于有效的团队组织和管理:软件开发是⼀个以⼈为主的活 动,人力资源是软件项⽬最⼤的资产。
- 有很多实践者认为⽐⽣产⾼质量产品更⼤的成功是在⽣产过程中建⽴⼀个凝聚的团队
团队的特征
- 共同的⽬标
- 共担责任
- 技能互补
- 明确的结构
团队结构
- 主程序员团队
- ⺠主团队
- 开放团队
团队建设
- 建⽴团队章程
- 持续成功
- 和谐沟通
- 避免团队杀⼿
避免团队杀手
- [DeMarco1999]认为组织和管理团队时要回避下列团队杀手:
- 防范式管理
- 官僚主义
- 地理分散
- 时间分割
- 产品质量的降低
- 虚假的最后期限
- 小圈子控制。
软件质量
⼈们通常会选⽤系统的某些质量要素进⾏量化处理,建⽴质量特征,这些特 征被称为质量属性(Quality Attribute)
为了根据质量属性描述和评价系统的整体质量,⼈们从很多质量属性的定义 当中选择了⼀些能够相互配合、相互联系的特征集,它们被称为质量模型。
质量模型
- 功能性
- 可靠性
- 易⽤性
- 效率
- 可维护性
- 可移植性
质量保障
评审过程
评审
- 在规划阶段(Planning),制定审查计划,决定审查会议的次数,安排每次审查会议的时间、地点、 参与⼈员、审查内容等等
- 在总体部署阶段(Overview),向所有参与审查会议的⼈员描述待审查材料的内容、审查的⽬标以及⼀些假设,并分发⽂档。
- 在准备阶段(Preparation),审查⼈员各⾃独⽴执⾏检查任务。在检查的过程当中,他们可能会被要求使⽤检查清单、场景等检查⽅法。检查中发现的问题会被记录下来,以准备开会讨论或者提交给收集⼈员。
- 在审查会议阶段(Inspection Meeting),通过会议讨论,识别、确认、分类发现的错误
- 在返⼯阶段(Rework),修改发现的缺陷。
- 在跟踪阶段(Follow-up),要确认所有发现的问题都得到了解决,所有的错误都得到了修正。
质量度量
度量产⽣⾃统计控制(Statistical Control)思想。“你不能控制⾃⼰⽆法度量的东
⻄”[DeMarco1998]。
- 测度(Measure)就是为了描述软件产品⽽提供的定量指标。
- 代码⾏数
- 进⾏测度的活动被称为测量(Measurement)。
- 度量(Metric)是软件产品在特定属性上的量化测度程度。
- 例如基于所有对象的代码⾏数测度可以建⽴平均代码⾏数、最⼤代码⾏数、最⼩代码
⾏数
- 例如基于所有对象的代码⾏数测度可以建⽴平均代码⾏数、最⼤代码⾏数、最⼩代码
软件配置管理
- 在软件开发活动中,除了最终产品之外,还会产⽣很多中间制品,例如需求
规格说明、需求分析模型、软件体系结构设计模型、详细设计模型等。这些
制品是不同阶段、不同⻆⾊、不同软件开发活动进⾏协同的基础。 - 在复杂软件系统开发中,产⽣的制品数量众多,以⾄于开发者需要维护⼀个 清单才能清楚项⽬所处的状态,理解已经完成的⼯作和将要进⾏的⼯作。
- 某个制品发⽣变化带来的最⼤挑战是如何确保其使⽤者能够得到最新的制 品,避免开发协同出现问题
配置管理![](https://i-blog.csdnimg.cn/blog_migrate/3d786134290761307d95f61f9029f0c7.png)
配置项
“置于软件配置管理之下的软件配 置的各种有关项⽬,包括各类管理文档、评审记录与文档、软件文档、源码及其可执行码、运行所需的系统软件和支持软件以及有关数据等”
配置管理活动
- 标识配置项
- 版本管理
- 变更控制
- 配置审计
- 状态报告
- 软件发布管理
版本控制的问题
lock-modify-unlock solution
copy-modify-merge solution
分支管理常见策略![](https://i-blog.csdnimg.cn/blog_migrate/ebdfedd0473b838f5373eb619552f251.png)
git
指令
git diff
• ⼯作区 vs 暂存区
git diff head
• ⼯作区 vs 版本库
git diff --cached
• 暂存区 vs 版本库
管理实践
- 经济为本
- 分⼯协作
- ⽬标驱动
- 常来常往
- 有张有驰
- 不断总结
- 为技术⽽技术是条死胡同
- 以经济原则指导软件项⽬的决策过程
- 按照产品规律来营销软件产品
- 以收益为依据规划设计产品
三驾马车
- 产品经理
- 项⽬经理
- 技术经理
常来常往观念
- 相互尊重
- 管道流畅
- 开放透明
- 坦诚真实
项目实践
1.为实践项⽬组建你的团队:
- 选择技能互补的成员组成团队,明确分⼯;
- 根据成员特点,选择团队结构;(建议使⽤⺠主团队)
- 建⽴团队章程;
- 明确团队的交流沟通⼿段。
2.配置管理
- 所有产物都通过Gitlab来管理
- 建⽴Group
- ⽂档采⽤MD⽂件