20177110117-马兴德 实验四 软件项目案例分析

项目 内容
课程班级博客链接 https://www.cnblogs.com/nwnu-daizh/
这个作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12616341.html
我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程;
(2)掌握Github协作开发程序的操作方法。
这个作业在哪些方面帮助我实现学习目标 (1)学习团队软件项目流程(TSP)、团队成员协作要求。(2)掌握敏捷流程原则及相关概念。
结对方学号-姓名 201771010120-苏浪浪
结对方本次博客作业链接 https://www.cnblogs.com/xiaolangoxiaolang/p/12677189.html

实验内容和步骤

任务一:在实验三得分100分以上作业中,任选一份作为案例,对案例项目成果进行评价,具体要求如下:

实验三优秀案例推荐:王之泰&韩腊梅组
https://www.cnblogs.com/hackerZT-7/p/12544280.html
https://www.cnblogs.com/hanlamei/p/12574378.html
在实验三得分100分以上作业中,任选一份作为案例,对案例项目成果进行评价,具体要求如下:
(1)对案例博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系,并将以上评论内容发布到案例作业的博客评论区。
(2)克隆案例项目源码到本地机器,阅读项目代码规范文档并运行代码,总结代码运行中存在的问题,体会案例博文是否有助于项目代码理解。
(3)总结本组实验三博客作业及代码设计存在问题与不足,列举代码中存在的bug,未实现的功能等等。
实验三优秀案例推荐:王之泰&韩腊梅组
https://www.cnblogs.com/hackerZT-7/p/12544280.html
https://www.cnblogs.com/hanlamei/p/12574378.html
[我们组所选择的是汪慧和组的案例进行学习分析](https://www.cnblogs.com/http-www-whh0601-cnblogs-com/p/12553743.html)
下面是对项目案例的评价分析:

  • 解析(2):通过在同学的github仓库下载的源码进行学习来看,该组总体做的是很好的,在各个模块的功能也涉及的相对完善,能够熟练衔接老师所要完成的任务,但是我觉得在设定提醒闹钟的时候可以具体精确到某一天会更好一点,这样才能够更有效的帮助同学。通过学习优秀同学的案例,她们的代码我还是基本可以看懂,能够帮助我很好的理解学习并且掌握,同时也可以间接的帮助我的学习。

  • 运行截图
    主页面:

    可视化界面:

    对学生进行提醒的打卡功能:

    学生信息的填报功能:

  • 解析(3):在项目功能的实现中,他们做的在GUI界面上面设置的不够合理,因为有一部分信息看不到,这个是需要改进的地方

    还存在的一些不足就是GUI界面设计的过于简单,不是特别美观。还有一点就是想要查询某个时间段的信息是查询不到的。

任务2:与实验三结对伙伴协作学习:阅读《现代软件工程—构建之法》第5-6章内容,理解并掌握软件项目团队的特点、了解软件团队的模式、结合理论课学习内容理解瀑布模型及其变形、渐进交付流程、敏捷流程等典型软件过程模型特点,理解并体会卡内基梅隆大学(CMU)软件工程学院总结的TSP原则;

  答: - 软件项目团队的特点
(1)团队有一致的集体目标,团队要一起完成这目标。一个团队的成员不一定要同时工作,例如接力赛跑。更重要的就是一个团队当中最重要的就是团结,不能说是谁想离开就离开,这个样子是不行的,因为这会再一定程度上影响一个团队;
(2)团队成员有各自的分工,互相依赖合作,共同完成任务。只有这样一个团队才可以在真正意义上说是一个团队,每个人将自己的任务完成好就是对团队最大的贡献。

  • 软件团队的模式:一个软件团队其实是有很多模式的,每一个模式都是有不同特点的,这样的不同模式在软件团队中的作用也是不可或缺的,下面我将详细介绍软件团队的各种模式。
    (1)主治医师模式:这样的模式就是在一个团队中有有一个首席程序员,她负责模块设计和编码,其他成员在各个角度支持她的工作;
    (2)明星模式:主治医师的模式运用到极点就是明星模式,在一个团队中我们时刻要想着团队的模式最大化,而不是明星的利益最大化,这样再能避免团队的和谐出问题;
    (3)社区模式:这就是说按照大家的兴趣爱好安排相对应的工作,但这并不是随意,这也是在一个团队当中有人能够审查的;
    (4)业余剧团模式:在一个项目中你可以挑选自己喜欢的角色,但也许是不同类型的,这是需要领导者能够调配的,所以大家也在尝试不同的角色;
    (5)秘密团队:这样的模式最好的就是内部人员有较高的热情,额日期额没有外界的干扰,如果一个团队成员有很大的自由度又有独特的使命,这是一个很大的驱动力;
    (6)特工团队:这个团队模式中就需要程序员能够熟练掌握一些传统语言和老式传统,才能胜任这样一个任务;
    (7)交响乐团模式:这样的就是成员多,各种开发人员聚集在一起然后才可以发会出最大的能力;
    (8)爵士乐模式:一个团队成员可以发会自己的想象与能力,研发出自己的铲平,最后首席程序员做一个总结,敲定一个方案,这也给程序员一定程度上给了空间;
    (9)功能团队模式:在这样一个团队中,具备不同能力的程序员平等协作完成一个功能,实现团队利益的最大化;
    (10)官僚模式:这种模式在一个团队中是最容易出现问题的,因为在项目中的成果与问题都会有主机上报的情况,而且每一级的都会为自己的员工谋取自己的利益,所以这样而来就会给大家造成一种只为自己利益照相的情况,从而忽略成绩的评估,导致很多无谓的算机、纠结、甚至会有人贬低自己的团队价值。

  • 瀑布模型及其变形
    答:瀑布模型是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。而其核心就是将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。下面是瀑布模型的一个简单流程:

    而在瀑布模型之后也出现了一些其他的瀑布模型的变形,比如生鱼片模型、大瀑布带着小瀑布模型、子瀑布模型。生鱼片模型解决了各个模块分离之间的缺点,为了解决不同子系统之间进度不一,技术要求迥异,需要区别对待的问题,有人引人了子瀑布模型:

  • 渐进交付流程
    答:渐进交付流程就是指在一个项目中无法一次性完成,但是为了让用户放心,就可以把产品最核心的功能用最小的成本做出来,然后快速征求用户意见;而且还有更重要的一点就是在渐进交付的过程中我们也可以采用MVP(最小可行性产品)的指导思想和渐进交付相似,但是它更强调更早获得用户反馈,为此可以在产品完成之前就发布,它也强调产品的核心价值(产品最区别于竞争产品的地方),为了突出核心功能,别的辅助功能可以不考虑或者用别的平台提供的服务来代替。下面就是一个软件项目不断循环的过程:

  • 敏捷流程等典型软件过程模型特点
    答:(1)敏捷流程可以保持可持续的发展。领导、团队和员工能够长期的合作下去;
    (2)如果在一个团队当中某一个人不愿意接这个项目当中的某一个部分或者不感兴趣,我们就可以寻找其他的感兴趣的来做,利用大家的心去爱好尽快实现一个项目;

  • 而敏捷流程的原则有以下12点:

  • 尽早并持续地交付有价值的软件以满足顾客需求;

  • 敏捷流程欢迎需求的变化, 并利用这种变化来提高用户的竞争优势;

  • 经常发布可用的软件,发布间隔可以从几周到几个月,能短则短;

  • 业务人员和开发人员在项目开发过程中应该每天共同工作;

  • 以有进取心的人为项目核心,充分支持信任他们;

  • 无论团队内外,面对面的交流始终是最有效的沟通方式;

  • 可用的软件是衡量项目进展的主要指标;

  • 敏捷流程应能保持可持续的发展。领导、团队和用户应该能按照目前的步调持续合作下去;

  • 只有不断关注技术和设计,才能越来越敏捷;

  • 保持简明---尽可能简化工作量的技艺---极为重要;

  • 只有能自我管理的团队才能创造优秀的架构、需求和设计;

  • 时时总结如何提高团队效率,并付诸行动。

  • 卡内基梅隆大学(CMU)软件工程学院总结的TSP原则
    答:首先从CMU总结得TSP原则来看,总结的很好值得让我们学习。首先我觉得做一个大的项目有一个优秀的团队是很重要的,因为一个团队当中有多个人员,发会自己的长处给团队最大的贡献,最终实现团队的利益最大化和团队成员的利益最大化。我觉得这个卡内基梅隆大学总结得TSP原则,反映了团队最该有得一些特点,也是最重要得。从这个TSP总来看,我觉得首先一个团队中最主要得就是分工明确,给每一个成员的角色、目标、产品都有一个合理的安排。

  • 下面是我和结对伙伴在这些问题方面的一些探讨

任务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)下载后显示登录的界面也很好看

3)登录成功之后我们可以看到软件的各方面的功能设计的还是比较齐全

4)我们可以看到以前我们发布的所有博客

5)而且最重要的就是,这个上面还有一个附加的功能就是对班级博客进行了细化,我们可以更加详细的看到班级的任务要求

6)我们还可以看到,我们能看到同班同学随时发布的博客内容

  • 程序当中存在的bug
    1)这是设置新颖的地方,同时也是存在的一个bug,就是他们团队设置了一个黑暗模式,但是在一些界面是不同步的


    2)我们在客户端写的博客内容是Markdown的编辑器进行编写的,在电脑上我们构建的表格是可以展示的,但是在手机上面是不可以的

    3)在班级的博文选择里面有一项是可以选择老师或者助教的博文的,但是选择了之后,不但不会出现,而且筛选功能有问题,把一大部分人的博客都抹去了

(8)评价该团队项目是否值得继续开发,并陈述理由:
答:我觉得现在这个团队的项目是值得继续开发的,因为相对于PC端来讲,这个app还有一大部分功能没有实现,比如可以自己撰写博客,没有收藏内容等等之类的,所以接下来的时间继续开发我觉得是非常有必要的,让广大用户在除了PC端,也可以在手机上方便操作,这样就会解决我们大部分人一些问题,因为有时候不方便带电脑,在网页上登录有显得麻烦,所以这一款手机app是非常值得后续开发以及完善的。

任务4:记录完成《实验四 软件项目案例分析》各项任务实际花费的时间

任务 花费时间(h)
任务一 3
任务二 6
任务三 14
任务四 3

对本次作业的一个总结

  通过本次实验以及在课堂的理论学习,我学习到了团队软件项目流程(TSP)、团队成员协作要求,并掌握了敏捷流程原则及相关概念。学习这些概念之后,更重要的就是在此次学习其他院校的同行的作业实例,我认识到自己与其他院校的同学的差距还有一大截,所以我不能沾沾自喜要更加勤奋努力学习软件工程,赶上其他人的脚步,所以我也在这一次作业的过程当中虚心学习。还有就是看了人家的团队学习,我有被深深的触动,我觉得这样的一个团队才能在真正意义上的一个团队,分工明确相互协作,将自己的能力用在团队上,尽可能使得团队的利益最大化,这是让人非常尊敬的。

原文地址:https://www.cnblogs.com/791683057mxd/p/12651605.html