项目 | 内容 |
课程班级博客链接 | https://www.cnblogs.com/nwnu-daizh/ |
这个作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12616341.html |
我的课程学习目标 | (1)学习团队软件项目流程(TSP)、团队成员协作要求。 (2)掌握敏捷流程原则及相关概念。 |
结对方学号-姓名 | 201771010117-马兴德 |
结对方本次博客作业链接 | https://www.cnblogs.com/791683057mxd/p/12651605.html |
任务1:实验三优秀案例推荐:
在实验三得分100分以上作业中,任选一份作为案例,对案例项目成果进行评价,
我们组选择的是汪慧和组(https://www.cnblogs.com/http-www-whh0601-cnblogs-com/p/12553743.html)
对项目案例的评价分析:
(1)对案例博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系,并将以上评论内容发布到案例作业的博客评论区。
(2)克隆案例项目源码到本地机器,阅读项目代码规范文档并运行代码,总结代码运行中存在的问题,体会案例博文是否有助于项目代码理解。
通过在同学的github仓库下载的源码进行学习来看,该组总体做的是很好的,在各个模块的功能也涉及的相对完善,能够熟练衔接老师所要完成的任务,但是我觉得在设定提醒闹钟的时候可以具体精确到某一天会更好一点,这样才能够更有效的帮助同学。通过学习优秀同学的案例,能够帮助我很好的理解学习并且掌握一些基本的知识,同时也可以间接的给予我们小组一些有用的启发。
(3)总结本组实验三博客作业及代码设计存在问题与不足,列举代码中存在的bug,未实现的功能等等。
可视化界面
对学生进行提醒的打卡功能:
学生信息的填报功能:
在项目功能的实现中,他们做的在GUI界面上面设置的不够合理,因为有一部分信息看不到,这个是需要改进的地方
还存在的一些不足就是GUI界面设计的过于简单,不是特别美观。还有一点就是想要查询某个时间段的信息是查询不到的。
信息填写的内容过于简结.
任务2:与实验三结对伙伴协作学习:阅读《现代软件工程—构建之法》第5-6章内容,理解并掌握软件项目团队的特点、了解软件团队的模式、结合理论课学习内容理解瀑布模型及其变形、渐进交付流程、敏捷流程等典型软件过程模型特点,理解并体会卡内基梅隆大学(CMU)软件工程学院总结的TSP原则;
1、软件项目团队的特点:
(1)团队有一致的集体目标,团队要一起完成这目标。一个团队的成员不一定要同时工作,例如接力赛跑。更重要的就是一个团队当中最重要的就是团结,不能说是谁想离开就离开,这个样子是不行的,因为这会再一定程度上影响一个团队;
(2)团队成员有各自的分工,互相依赖合作,共同完成任务。只有这样一个团队才可以在真正意义上说是一个团队,每个人将自己的任务完成好就是对团队最大的贡献。
2、软件团队的模式:一个软件团队其实是有很多模式的,每一个模式都是有不同特点的,这样的不同模式在软件团队中的作用也是不可或缺的,下面我将详细介绍软件团队的各种模式。
(1)主治医师模式:这样的模式就是在一个团队中有有一个首席程序员,她负责模块设计和编码,其他成员在各个角度支持她的工作;
(2)明星模式:主治医师的模式运用到极点就是明星模式,在一个团队中我们时刻要想着团队的模式最大化,而不是明星的利益最大化,这样再能避免团队的和谐出问题;
(3)社区模式:这就是说按照大家的兴趣爱好安排相对应的工作,但这并不是随意,这也是在一个团队当中有人能够审查的;
(4)业余剧团模式:在一个项目中你可以挑选自己喜欢的角色,但也许是不同类型的,这是需要领导者能够调配的,所以大家也在尝试不同的角色;
(5)秘密团队:这样的模式最好的就是内部人员有较高的热情,额日期额没有外界的干扰,如果一个团队成员有很大的自由度又有独特的使命,这是一个很大的驱动力;
(6)特工团队:这个团队模式中就需要程序员能够熟练掌握一些传统语言和老式传统,才能胜任这样一个任务;
(7)交响乐团模式:这样的就是成员多,各种开发人员聚集在一起然后才可以发会出最大的能力;
(8)爵士乐模式:一个团队成员可以发会自己的想象与能力,研发出自己的铲平,最后首席程序员做一个总结,敲定一个方案,这也给程序员一定程度上给了空间;
(9)功能团队模式:在这样一个团队中,具备不同能力的程序员平等协作完成一个功能,实现团队利益的最大化;
(10)官僚模式:这种模式在一个团队中是最容易出现问题的,因为在项目中的成果与问题都会有主机上报的情况,而且每一级的都会为自己的员工谋取自己的利益,所以这样而来就会给大家造成一种只为自己利益照相的情况,从而忽略成绩的评估,导致很多无谓的算机、纠结、甚至会有人贬低自己的团队价值。
3、瀑布模型及其变形:
瀑布模型是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。而其核心就是将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
其他的瀑布模型的变形,比如生鱼片模型、大瀑布带着小瀑布模型、子瀑布模型。
4、渐进交付流程:
进交付流程就是指在一个项目中无法一次性完成,但是为了让用户放心,就可以把产品最核心的功能用最小的成本做出来,然后快速征求用户意见;而且还有更重要的一点就是在渐进交付的过程中我们也可以采用MVP(最小可行性产品)的指导思想和渐进交付相似,但是它更强调更早获得用户反馈,为此可以在产品完成之前就发布,它也强调产品的核心价值(产品最区别于竞争产品的地方),为了突出核心功能,别的辅助功能可以不考虑或者用别的平台提供的服务来代替。
5、敏捷流程等典型软件过程模型特点:
1).敏捷开发的过程有着更强的适应性而不是预设性,
2).敏捷开发的过程中,更加的注重人的因素。
3).在敏捷开发的过程中,整个项目是测试驱动的而不是文档驱动的。
6、理解并体会卡内基梅隆大学(CMU)软件工程学院总结的TSP原则;
自我管理的原则,开发小组成员如发现过程不合适,应主动、及时地进行改进,以保证始终用高质量的过程来生产高质量的软件,任何消极埋怨或坐视等待的态度都是不对的;集体管理的原则,项目开发小组的全体成员都要积极参加和关心小组的工作规划、进展追踪和决策制订等项工作;独立负责的原则,按TSP原理进行管理,每个成员都要但任一个角色。通过这三个原则我体会到了开发一个软件项目不仅要做到自我管理,还要有独立负责的责任心才能在大家共同努力下完成这个项目。
博客作业中针对任务2的评分要点:提供两人讨论任务2学习内容的微信或QQ截图,要求截图美观。(10分)
任务3:在班级博客园,有很多高校的软件工程课程要求同学们完成团队项目,请与实验三结对伙伴协商,在以下三个班级中选择一个高质量的团队项目案例进行协作学习,要求追踪该团队项目发布所有博客作业,下载项目软件代码。
1. 2016级计算机科学与工程学院软件工程 (西北师范大学)
2. 2019秋福大软件工程实践Z班 (福州大学)
3. 2019春季计算机学院软件工程 (北京航空航天大学)
我们所选择的是北京航空航天大学的学习案例进行分析,以下是对其进行的详细分析。
(1)团队项目作业发布账号链接:https://www.cnblogs.com/PureMan6/p/11038754.html
(2)团队项目仓库github链接:https://github.com/swearitagain/EduCnblogs2.0
(3)陈述你选择该团队项目进行分析的理由:
理由:博客园这个网站作为一个计算机专业的学生一直在用,所以这个案例深深地吸引着我他们设计的项目也更加贴合实际,也更加方便,是在手机上运行的一款app,我觉得这样的项目需要开发出来供大家方便的使用,所以我想在他们的项目中得到一些启发,从而在以后的开发中能够有所改进以及一些基础问题能够不出现;而且我觉得但从我看到的他们所撰写的博文内容来看,可以看到他们在项目研发的过程当中,给每个成员在每一个阶段都有不同的分工,这样不但可以帮助一个团队提升能力,也能培养团队成员的想象能力,更好的开发出完美的项目。而且我觉得更为重要的就是,他们的手机app已经发布在市场上,是可以运行的,我觉得这也给了我很大的鼓励与启发。
(4)结合项目系列博客文档,总结项目团队成员的分工合作情况:
答:总体来说,该项目团队共有七个人,每一个人在不同的阶段都有不同的任务分工。也正是因为这样,从所有博文作业来看,他们团队在每一次的项目的一个小阶段都有明确的分工,这样就使得大家不会重复做以前做过的工作而产生厌烦感觉,更重要的是这样可以培养团队每一个人的兴趣,也能使得整个团队足够和谐。
从这几部分当中我们可以看到,他们团队几乎在每一个阶段都有相对应的分工合作,分工明确,每个人都有自己的时间的项目做,这样的团队所做出来的项目肯定也是非常好的。
(5)结合项目系列博客文档,评价项目的软件项目过程特点(TSP):
答:从做的项目来看,软件项目过程特点以下的方面都实现了:
用妥善定义的流程,流程中的每-一步 都是可以重复、可以衡量结果的。
团队的各个成员对团队的目标、角色、产品都有统一的理解。
尽量使用成熟的技术和做法。
尽量多地收集数据(也包括对团队不利的数据),并用数据来帮助团队做出理性的决定。
制定切合实际的计划和承诺,团队计划要由负责具体执行的的角色来制定(而不是从上级而来)。
增加团队的自我管理能力。
专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面而细致的设计工作(而不是在后期匆忙修复问题)。
(6)观察该团队项目github仓库的源代码文件结构,是否包含代码规范文档?
团队项目Github仓库代码如下图:
从这个github仓库来看,项目是没有项目的规范的文档的,这对于我们二次开发有一些不利的情况。
(7)下载团队项目代码,尝试部署项目运行环境并使用软件,描述最简单直观的使用体验,找出至少两个比较严重的功能性bug,在博客中展示截图:
-1)项目内容介绍:
从github仓库当中下载源码,并且我们可以在手机应用市场“应用汇”搜索CnblogAndroid下载,然后安装成功之后就可以登录。
-2)项目运行及存在的问题:
初始登录界面和网页版一样;
登录以后我的界面:
我的博客界面:
班级博客以及存在的问题:
存在的问题:当你选择老师助教选项的时候并不会显示老师以及助教的博文信息;
个人博客进入以后:
进入界面以后自己建立的表格不复存在;页面大小匹配不太合适;页面制作不太美观;
这是设置新颖的地方,同时也是存在的一个bug,就是他们团队设置了一个黑暗模式,但是在一些界面是不同步的
-3) 评价该团队项目是否值得继续开发,并陈述理由:
我觉得现在这个团队的项目是值得继续开发的,因为相对于PC端来讲,这个app还有一大部分功能没有实现,比如可以自己撰写博客,没有收藏内容等等之类的,所以接下来的时间继续开发我觉得是非常有必要的,让广大用户在除了PC端,也可以在手机上方便操作,这样就会解决我们大部分人一些问题,因为有时候不方便带电脑,在网页上登录有显得麻烦,所以这一款手机app是非常值得后续开发以及完善的。
任务四:记录完成《实验四 软件项目案例分析》各项任务实际花费的时间;
任务 | 花费时间(h) |
任务一 | 3 |
任务二 | 6 |
任务三 | 12 |
任务四 | 0.5 |
个人总结:
通过本次实验、老师分享的视屏学习资料以及老师课堂讲解的知识,我了解到了团队软件项目流程(TSP)以及他的原则、团队成员协作要求,并掌握了敏捷流程原则及相关概念。学习这些概念之后,有助于我在今后团队开发中能够更好地开发软件;更重要的就是在此次学习其他院校的同行的作业实例,我认识到自己与其他院校的同学的差距还有一大截,我还需要更加努力才行。还更加深刻地体会到团队协作的重要性以及队员分工明确的重要性。