项目 | 内容 |
---|---|
课程班级博客链接 | https://www.cnblogs.com/nwnu-daizh/ |
作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12616341.html |
我的课程学习目标 | (1)学习软件工程基础概念和理论;(2)学习个人在团队中如何发挥作用;(3)团队如何更好协作;(4)熟悉项目开发的流程 |
这个作业在哪些方面帮助我实现课程目标 | (1)学习团队软件项目流程(TSP)、团队成员协作要求。(2)掌握敏捷流程原则及相关概念。 |
结对方学号-姓名 | 201771010132-徐思 |
结对方本次博客作业链接 | https://www.cnblogs.com/sisi-713/p/12656353.html |
任务一:实验三优秀案例推荐:王艳&王玉兰组
王艳:https://www.cnblogs.com/JAVA-729/p/12554359.html
王玉兰:https://www.cnblogs.com/wang963/p/12573855.html
在实验三得分100分以上作业中,任选一份作为案例,对案例项目成果进行评价,具体要求如下:
1.对案例博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系,并将以上评论内容发布到案例作业的博客评论区。
2.克隆案例项目源码到本地机器,阅读项目代码规范文档并运行代码,总结代码运行中存在的问题,体会案例博文是否有助于项目代码理解。
(1)- 基本功能:
- 采集师生疫情信息;
- 各学院指定负责人登录系统,可以查看填报的所有汇总数据。
- 负责人可根据学生的学号查找学生的疫情信息。
- 负责人可直接添加学生的信息。
- 负责人可对填写有误的学生信息进行修改及删除。
- 负责人可通过图形化方式查看各学院已填报和未填报学生统计情况和关键疫情数据统计情况。
- 负责人可以导出疫情数据的EXCEL文件。
- 扩展功能
3.总结本组实验三博客作业及代码设计存在问题与不足,列举代码中存在的bug,未实现的功能等等。
未实现功能:每日十点之后停止填报。
任务二:《现代软件工程—构建之法》第5-6章内容
与实验三结对伙伴协作学习:阅读《现代软件工程—构建之法》第5-6章内容,理解并掌握软件项目团队的特点、了解软件团队的模式、结合理论课学习内容理解瀑布模型及其变形、渐进交付流程、敏捷流程等典型软件过程模型特点,理解并体会卡内基梅隆大学(CMU)软件工程学院总结的TSP原则;
5.1非团队与团队
团队特点:(1)有一致的集体目标,团队要一起完成这目标。一个团队的成员不一定要同时完成工作。
(2)团队有各自的分工,互相依赖,共同完成任务。
5.2软件团队的模式:主治医师(有一个主要负责人,其他人负责协助)、明星、社区(众人拾柴火焰高)、业余剧团(不同角色)、秘密团队(无干扰)、特工团队(高手)、交响乐团(各司其职)、爵士乐(个性化表达)、功能团队(小组交流)、官僚(不提倡)。
5.3开发流程
(1)瀑布模型
瀑布模型:(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
传统的瀑布模型:
加入迭代的瀑布模型:
瀑布模型的适用范围:产品的定义非常稳定但正确性非常重要、产品模块之间的接口能很好地定性定义和验证、使用的技术很成熟、子团队不能做到频繁的交流。
瀑布模型的优点是可以保证整个软件产品较高的质量,保证缺陷能够提前的被发现和解决。采用瀑布模型可以保证系统在整体上的充分把握,使系统具备良好 的扩展性和可维护性.但对于前期需求不明确,而又很难短时间明确清楚的项目则很难很好的利用瀑布模型.另外对于中小型的项目,需求设计和开发人员往往在项 目开始后就会全部投入到项目中,而不是分阶段投入,因此采用瀑布模型会导致项目人力资源过多的闲置的情况,这也是必须要考虑的问题.
(2)瀑布模型变形:瀑布模型的变形:生鱼片模型(各个相邻模块像生鱼片那样部分重叠)以及大瀑布带着小瀑布(各个子系统统一到最后进行系统测试)
(3)渐进交付:渐进交付流程:系统的主要需求和架构明确之后,软件团队进入了一个不断演进的循环中:{开发⇒发布⇒听取反馈⇒根据反馈做改进},重复这个循环,直到时间用完,钱花光,完成了计划的迭代次数,或者客户认为满意。
(4)TSP原则:
1)使用妥善定义的流程,流程中的每一步都是可以重复、可以衡量结果的。
2)团队的各个成员对团队的目标、角色、产品都有统一的理解。
3)尽量使用成熟的技术和做法。
4)尽量多地收集数据(也包括对团队不利的数据),并用数据来帮助团队做出理性的决定。
5)制定切合实际的计划和承诺,团队计划要由负责具体执行的角色来制定(而不是从上级而来)。
6)增加团队的自我管理能力。
7)专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面而细致的设计工作(而不是在后期匆忙修复问题)。
6.敏捷流程
6.1 敏捷的流程:(找出待解决的问题 --> 决定当前目标 -->冲刺(每日例会)--> 改进)
敏捷开发原则:
(1)尽早并持续地交付有价值的软件以满足顾客需求
(2)敏捷流程欢迎需求的变化,并利用这些变化来提高用户的竞争优势
(3)经常发布可用的软件,发布间隔可以从几周到几个月,能短则短
(4)业务人员和开发人员在项目开发过程中应该每天共同工作
(5)以有进取心的人为项目核心,充分支持信任他们
(6)无论团队内外,面对面的交流始终是最有效的沟通方式
(7)可用的软件是衡量项目进展的主要指标
(8)敏捷流程应能保持可持续的发展。领导、团队和用户应该能按照目前的步调持续合作下去
(9)只有不断关注技术和设计,才能越来越敏捷
(10)保持简明——尽可能简化工作量的技艺
(11)只有能自我管理的团队才能创造优秀的架构、需求和设计
6.2 敏捷流程的问题和解法(计划:体现依赖关系-->描述细化到技术层面 --> 跟踪三个时间 --> 总结教训)
6.3 敏捷的团队
自主管理(自己挑选任务)、自我组织(联合负责)、多功能(全面负责)。
6.4 敏捷总结
质量控制、短时间迭代、极致编程、经验教训。
6.5 敏捷的问答
敏捷是一种价值观、总结思想、最佳实践TDD、适用范围、宣言(左项)
与同伴的讨论截图:
任务三:结对协作学习团队项目案例
在班级博客园,有很多高校的软件工程课程要求同学们完成团队项目,请与实验三结对伙伴协商,在以下三个班级中选择一个高质量的团队项目
案例进行协作学习,要求追踪该团队项目发布所有博客作业,下载项目软件代码。
2016级计算机科学与工程学院软件工程 (西北师范大学)
2019秋福大软件工程实践Z班 (福州大学)
2019春季计算机学院软件工程 (北京航空航天大学)的少年先疯队的酒店管理系统案例来做分析。
我们选择了2016级计算机科学与工程学院软件工程 (西北师范大学)的少年先“疯”队的酒店会员管理系统。
1.团队项目作业发布账号链接:https://www.cnblogs.com/snxfd/
2.团队项目仓库github链接:https://github.com/snxfd123/designfile
3.选择该团队项目进行分析的理由:该团队在项目的设计分析阶段的博文完整详细。
4.结合项目系列博客文档,总结项目团队成员的分工合作情况:
少年先“疯”队有4名成员:姚玉婷,马丽莎,孙苗坤,张 琼。该项目团队前期的分工粗略而且不太合理,每个页面可能团队的成员都有修改,在后期工作中意识到了这个问题,改为根据进度在每个阶段对大家有更细致的任务划分。
需求调研和分析阶段:
需求分析改进和系统设计阶段的分工:
系统详细设计阶段:
编码阶段:
验收阶段:
5.结合项目系列博客文档,评价项目的软件项目过程特点(TSP)
- 使用妥善定义的流程,流程中的每一步都是可以重复、可以衡量结果的。
- 团队的各个成员对团队的目标、角色、产品都有统一的理解。
- 尽量使用成熟的技术和做法。
操作系统 Widnows 7;
开发工具 Eclipse 4.5;
数据库 Mysql 5.5;
JDK 1.8;
Web服务器 Tomcat 8.0;
单元测试框架 Junit4;
Web网页设计 HBulider Dreamwerve; - 尽量多地收集数据(也包括对团队不利的数据),并用数据来帮助团队做出理性的决定。
(1)通过调查问卷和面对面访谈的方法来获取用户的需求,为了确保信息的真实可靠性,首先是将调查表发布在qq群以及微信群里面,然后扩大范围进行调研。
(2)在每个阶段,成员预估自己完成分配任务的时间、并收集完成该部分内容的真实时间,以便组长能够更合理的分配下阶段工作。 - 制定了切合实际的计划和承诺,团队任务分配具体详细,分工明确,每个成员也很好的完成了各自的部分。
- 团队的自我管理能力能力强,团队不断反思、总结改进。
6.观察该团队项目github仓库的源代码文件结构,是否包含代码规范文档?
该团队项目的github仓库源代码文档完备,包含代码文档规范:
7.下载团队项目代码,尝试部署项目运行环境并使用软件,描述最简单直观的使用体验,找出至少两个比较严重的功能性bug,在博客中展示截图(20分);
系统主要实现对酒店会员的管理。
下载的代码中不含有图片,所以在运行的界面中显示不出图片,界面不是很美观。
注册界面:
管理员登录成功界面:
管理员管理界面:
商品管理界面:
查询界面:
充值界面:
消费界面:
积分查询:
使用体验:系统界面较乱,使用不方便;具有严重后果的功能执行可逆,或者给出明显警告,执行前要求确认。
8.评价该团队项目是否值得继续开发,并陈述理由?(5分)
值得继续开发。该软件用于酒店会员的管理,该系统的实现会帮助酒店管理员采集信息、会员卡发放信息、会员活动、会员消费记录、会员折扣信息等,实时掌控所有会员活动情况。系统能极大地提高酒店的效率和效益,从而能提高客户和员工的满意度。
记录完成各项任务实际花费的时间:
项目 | 时间(h) |
---|---|
任务一 | 2 |
任务二 | 1.5 |
任务三 | 4 |
任务四 | 1 |
总结 本次实验,通过阅读构建之法第五、六章节,学习了团队模式、TSP以及瀑布模型、敏捷流程等开发流程。阅读理解了两组团队项目案例的博文和代码文档,加深了对软件团队项目工作的认识,比如成员之间的分工配合和相互协作,也学习到很多方法。