天天向上队 实验二:软件研发团队组建
实验二:软件研发团队组建
项目 | 内容 |
---|---|
课程班级博客链接 | 20级卓越工程师班 |
这个作业要求链接 | 实验二:软件研发团队组建(团队作业) |
团队名称 | 天天向上队 |
团队的课程学习目标 | 1.组建软件项目研发团队 2.申请开通团队博客 3.学习《现代软件工程—构建之法》第5、6、9章内容并总结问题 4.明确各队员的个人能力及团队分工并共同完成团队组建任务 |
这个作业在哪些方面帮助团队实现学习目标 | 1.组建团队并开通博客利于各队员之间的相互交流和进度共享 2.明确团队中不同角色的任务和职责 3.初步磨合便于后续开发的顺利进行 |
团队博客链接 | 天天向上队 |
任务1: 组建软件项目研发团队
1.队名:天天向上队
2.团队成员组成
成员学号 | 成员姓名 | 个人博客地址 | 备注 |
---|---|---|---|
202031607330 | 杨雯丽 | 杨雯丽 | PM |
202031607213 | 李蕊 | 李蕊 | |
202031607211 | 米乐 | 米乐 | |
202031607225 | 王淑慧 | 王淑慧 |
3.成员风采
成员 | 风格 | 编程兴趣 | 软工角色 | 宣言 |
---|---|---|---|---|
杨雯丽 | 认真负责 | web前端 | PM | 一直走,天一定亮 |
王淑慧 | 严谨求真 | web前端 python | 测试 | 种一棵树最好的时间是十年前,其次是现在 |
米乐 | 勤于思考 | c++,python | 开发 | 志存高远,脚踏实地 |
李蕊 | 求真务实 | c,python | 文档 | 人生的路要自己走 |
4.组建团队企业微信群
5.团队特色描述
团队成员都具备良好的沟通和团队协作能力,有活力,各司其职,认真完成每一项任务。
任务2: 申请开通团队博客
团队博客已申请,团队博客地址为天天向上队。并提交了团队信息。
任务3: 阅读《现代软件工程—构建之法》第5、6、9章内容,总结以下概念与问题:
1. 团队软件过程(Team Software Process,TSP)
-
团队软件过程是为开发软件产品的开发团队提供指导,TSP的早期实践侧重于帮助开发团队改善其质量和生产率,以使其更好的满足成本及进度的目标。TSP被设计为满足2~20人规模的开发团队,大型的多团队过程的TSP被设计为大约最多为150人左右的规模。
-
团队软件过程(TSP)加上PSP帮助高绩效的工程师在一个团队中工作,来开发有质量保证的软件产品,生产安全的软件产品,改进组织中的过程管理。通过TSP,一个组织能够建立起自我管理的团队来计划追踪他们的工作、建立目标,并拥有自己的过程和计划。这些团队可以是纯粹的软件开发团队,也可以是集成产品的团队,规模可以从3到20个工程师不等。TSP团队在广泛领域里可能运用XP, RUP或其它方法。TSP使具备PSP的工程人员组成的团队能够学习并取得成功。如果你的组织运用TSP,它会帮助您的组织建立一套成熟规范的工程实践,确保安全可靠的软件。
团队软件过程TSP基于以下4条基本原理:
(1)应该遵循一个确定的、可重复的过程并迅速获得反馈,这样才能使学习和改革最有成效。
(2)一个群组是否有效,是由明确的目标、有效的工作环境、有能力的教练和积极的领导这4方面因素的综合作用所确定的,因此应在这4个方面同时努力,而不能偏废其中任何—个方面。
(3)应注意及时总结经验教训,当学员在项目中面临各种各样的实际问题并寻求有效的解决问题方案时,就会更深刻地体会到TSP的威力。
(4)应注意借鉴前人和他人的经验,在可知利用的工程、科学和教学法经验的基础上来规定过程改进的指令。
2. 理解TSP原则
-
使用妥善定义的流程,流程中的每一步都是可以重复、可以衡量结果的。
-
团队的各个成员对团队的目标、角色、产品都有统一的理解。
-
尽量使用成熟的技术和做法。
-
尽量多地收集数据(也包括对团队不利的数据),并用数据来帮助团队做出理性的决定。
-
制定切合实际的计划和承诺,团队计划要由负责具体执行的的角色来制定(而不是从上级而来)。
-
增加团队的自我管理能力。
-
专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面而细致的设计工作(而不是在后期匆忙修复问题)。
3. 敏捷开发的原则
-
尽早并持续地交付有价值的软件以满足顾客需求。
-
敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势。
-
经常发布可用的软件,发布间隔可以从几周到几个月,能短则短。
-
业务人员和开发人员在项目开发过程中应该每天共同工作。
-
以有进取心的人为项目核心,充分支持信任他们。
-
无论团队内外,面对面的交流始终是最有效的沟通方式。
-
可用的软件是衡量项目进展的主要指标。
-
敏捷流程应能保持可持续的发展。领导、团队和用户应该能按照目前的步调持续合作下去。
-
只有不断关注技术和设计,才能越来越敏捷。
-
保持简明,尽可能简化工作量的技艺极为重要。
-
只有能自我管理的团队才能创造优秀的架构、需求和设计。
-
时时总结如何提高团队效率,并付诸行动。
4. Scrum敏捷流程
第一步:找出完成产品需要做的事情——Product Backlog。
Backlog 翻译成“积压的工作”、“待解决的问题”、“产品订单”,都可以。产品负责人领导大家对于这个Backlog中的条目进行分析、细化、理清相互关系、估计工作量等工作。每一项工作的时间估计单位为“天”。
第二步:决定当前的冲刺(Sprint)需要解决的事情—-Sprint Backlog。
整个产品的实现被划分为几个互相联系的冲刺。产品订单上的任务被进一步细化了,被分解为以小时为单位。如果一个任务的估计时间太长(如超过16个小时),那么它就应该被进一步分解。订单上的任务是团队成员根据自己的情况来认领。如果团队成员能主导任务的估计和分配,他们的能动性得到较大的发挥。
第三步:冲刺。
在冲刺阶段,外部人士不能直接打扰团队成员。一切交流只能通过Scrum大师(Scrum Master)来完成。这一措施较好地平衡了“交流”和“集中注意力”的矛盾。有任何需求的改变都留待冲刺结束后再讨论。
冲刺期间,团队通过每日例会(Scrum Meeting)来进行面对面的交流,团队成员大多站着开会,所以又称每日立会。大家依次报告:
- 我昨天做了啥
- 我今天要做啥
- 我碰到了哪些问题
每日立会强迫每个人向同伴报告进度,迫使大家把问题摆在明面上。同时团队要启动每日构建,让大家每天都能看到一个逐渐完善的版本。图表可以是燃尽图,也可以是简单的看板图(Kanban):把一堆任务从最初的“待定”推动到“工作中”等各个状态,直至“完成”。
冲刺阶段是时间驱动的(Time-boxed),时间一到就结束。这个特点看似不起眼,但其实它有效地断了各种延期想法的后路,很高明。
第四步:得到软件的一个增量版本,发布给用户。然后在此基础上又进一步计划增量的新功能和改进。
5. 团队项目经理(Product Manager,PM)的职责
-
带领团队形成团队的目标/远景,把抽象的目标转化为可执行的、具体的、优美的设计;
-
管理软件的具体功能的生命周期(需求/设想/设计/实现/测试/修改/发布/升级/迁移/淘汰);
-
创建并维护软件的规格说明书,让它成为开发/测试人员及时准确的指导,而不是障碍;
-
代表客户和用户的利益,主动收集用户反馈,预期用户新的需求。协调并决定各种需求的优先级;
-
分析并带领其他成员对缺陷/变更需求形成一致意见,并确保实施;
-
带领其他成员确保项目保持功能/时间/资源的合理平衡,跟踪项目进展,确保团队发布令客户满意的软件;
-
收集团队项目管理和软件工程的各种数据,客观分析项目实施过程中的优缺点,推动项目成员持续改进,从而提振士气。
记录完成《实验二:软件研发团队组建(团队作业)》各项任务实际花费的时间
任务 | 实际花费时间(min) |
---|---|
组建软件项目研发团队 | 5 |
组建团队企业微信群 | 2 |
开通团队博客 | 20 |
完成任务3 | 140 |
撰写博客 | 100 |
总结 | 20 |
团队各位成员谈谈完成本次作业的感受和体会
王淑慧:通过本次团队任务的完成,和其他团队成员得到了初步的磨合并完成了各项任务,为后续的软件开发奠定了基础。在《构建之法》的学习过程中了解到了每个队员的责任和任务,我们将向着这个方向进一步努力并认真完成各项任务提高自身学习和实践的能力。本次团队作业完成较为不易,但每个成员都得到了更大的进步并互相磨合成功。
李蕊:在此次团队组建任务中,每一个人都必须以信任对方作为基础,大家互帮互助,以实现最终目标而共同努力;再次是责任心,一个优秀的团队中的每一个成员都应该具有高度的责任心,要对团队中的每一个负责,全身心地投入到团队中去,要认清自己的职责、价值,努力做好自己的本职工作。
米乐:我觉得对于软件工程这门课来说:实践才是学习的关键过程。本次实验中,我们组建了自己的软件开发团队,团队成员之间进行了有效的沟通和交流,确定了以后实践过程中每个人的大致分工,为学好这门课以及个人的能力提升都奠定了基础。希望以后我们之间可以互相学习,弥补不足。
杨雯丽:通过本次团队任务并阅读《构建之法》,我学习到团队并不是为了一个目的临时聚到一起,而是有一致的目标,有各自的分工,互相依赖合作,共同完成任务。团队有很多模式,例如主治医师模式,社区模式,业余剧团模式等等。了解了软件的项目经理--PM以及它的由来,PM有几种:Product Manager,Project Manager,Program Manager等,在不同的行业和公司,他们的作用各不相同。PM的职责是做开发和测试之外的所有事情,如有做功能设计的,有做驱动流程的,还有和研究人员合作的。一个合格的PM需要具备①观察,理解和快速学习能力 ②分析管理能力 ③一定的专业能力 ④领导力。我学习到了很多软件工程之前从未了解过的知识,收获很多。