201771030127-杨雪雪 实验四 软件项目案例分析
项目 | 内容 |
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE/ |
作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12616341.html |
我的课程学习目标 |
(1)学习团队软件项目流程(TSP)、团队成员协作要求。 (2)掌握敏捷流程原则及相关概念。 |
帮助我实现学习目标的方面 |
(1)通过合作取长补短 (2)熟悉掌握多样开发软件 |
结对方学号-姓名 | 201771030127-王英雪 |
结对方本次博客作业链接 | https://www.cnblogs.com/-wyx/p/12672821.html |
实验内容
任务一 在实验三得分100分以上作业中,任选一份作为案例,对案例项目成果进行评价
我选取的作业博客链接:https://www.cnblogs.com/viqt/p/12588543.html
我选取的作业项目仓库链接:https://github.com/Gu19901212/Partner
(1)对案例博文作业进行阅读并进行评论
(2)克隆案例项目源码到本地机器
通过克隆案例项目源码,阅读项目代码规范文档并运行代码,她们的作业完成的非常好,实验中要求实现的各个功能都有实现,附加功能也实现了;并且界面简洁美观。代码部分很多,但是注释很少,在一些地方代码理解不了,比如id根据变量名可以知道是身份的唯一标识,但是同时又出现number,不确定这一变量是什么。根据博文去内容去理解学习代码的效率还是很高的,博客中有很明确的指出各个文件所实现的功能和具体内容,这让我阅读别人的代码变得简单容易一点。
(3)总结本组实验三博客作业及代码设计存在问题与不足
对比这份高分作业回头看自己的作业,有点惨不忍睹的感觉,因为我和同伴的编程能力都是非常有限的,虽然我们很努力的去完成了,但是最终还是没有实现好多的功能,并且界面的设计也没用做。就基本功能而言,我们只实现了要求的一部分和一些二部分,三部分和附加要求都没有实现。并且每个界面都是最原始的,没有做界面的美化。对比之下,看着自己的作业好心酸啊。
任务二 与实验三结对伙伴协作学习:阅读《现代软件工程—构建之法》第5-6章内容,理解并掌握软件项目团队的特点、了解软件团队的模式、结合理论课学习内容理解瀑布模型及其变形、渐进交付流程、敏捷流程等典型软件过程模型特点,理解并体会卡内基梅隆大学(CMU)软件工程学院总结的TSP原则;
软件项目团队的特点:(1) 团队有明确的共同目标;(2)团队有很强的凝聚力;(3)团队有融洽的交流环境;(4)团队有明确的角色划分;
软件团队的模式:(1)蜂窝模式: 是一种欢乐而随意的形式;(2)主治医师模式 :各司其职,为主治医师服务;(3)明星模式 :主治医师模式的极点;(4)社区模式 :每个人参与自己感兴趣的方向;(5)业余剧团模式 :每个团队在不同的项目会挑选不同的角色;(6)秘密团队 :每个人在秘密条件下进行;(7)特工团队 :有特殊技能的专业人士;(8)交响乐团模式 :交响乐团的演奏模式;(9)爵士乐模式 :与交响乐队模式对立;(10)功能团队模式 ;具备不同能力的人平等协作;(11)官僚模式 小头目-->中头目-->大头目。
渐进交付流程:渐进交付(evolutionary delivery)是对增量交付实践的精化,它尽力捕获有关已安装产品的反馈,并用它指导下一次交付。很自然地,最大限度地满足某些难以预测的需求成为渐进的目标
敏捷流程及其特点:敏捷不是指某一种具体的方法论、过程或框架,而是一组价值观和原则。符合敏捷价值观和原则的开发方法包括:极限编程(XP),Scrum,精益软件开发(Lean Software Development),动态系统开发方法(DSDM),特征驱动开发(Feature Driver Development),水晶开发(Crystal Clear)等等。
特点:(1)迭代式开发;(2)增量交付;(3)开发团队和用户反馈推动产品开发;(4)持续集成;(5)开发团队自我管理。
TSP原则:团队软件过程,对群组软件过程的定义、度量和改革提出了一整套原则、策略和方法,把CMM要求实施的管理与PSP要求开发人员具有的技巧结合起来,以按时交付高质量的软件,并把成本控制在预算的范围之内。在TSP中,讲述了如何创建高效且具有自我管理能力的工程小组,工程人员如何才能成为合格的项目组成员,管理人员如何对群组提供指导和支持,如何保持良好的工程环境使项目组能充分发挥自己的水平等软件工程管理问题。
讨论展示:
任务三 与实验三结对伙伴协商,选择一个高质量的团队项目案例进行协作学习,追踪该团队项目发布所有博客作业,下载项目软件代码
我选取的团队项目作业发布账号链接:https://www.cnblogs.com/brokenpumpkin/p/11704724.html
我选取的团队项目仓库GitHub链接:https://github.com/ThinMoon/031702541-031702543.git
理由:
在老师给给出的众多项目作业中,我们选择这个团队项目作业有以下几点原因:
- 我们这几次的实验作业都是人机交互的一个比较完整的系统,而这个作业主要是实现算法的
- 在比较分析了好多个博客作业之后,我和同伴都觉得这个作业的博客更加清晰明了,对于我们理解代码的的帮助更大一些
成员分工合作情况:
在他们的分工这一部分,他们的博客中有很清晰的给出:其中一个同学负责UI设计,总体的博客编写,另一人负责核心算法设计和部分博客编写。
项目的软件项目过程特点(TSP):
通过阅读该团队的的博客,对项目的TSP总结:
- 各成员分工明确,各司其职
- 各成员都是在开发的过程中不断的学习新技术来完成项目的开发
- 团队的自我管理能力较好。
- 项目团队的开发流程也展现的清晰明了
源代码文件结构:
GitHub仓库的代码文件中有一个css文件、js文件、img文件和连个HTML文件一个使用说明md文件。.md文件是目录说明和使用说明,但是并不包含代码规范文档
使用体验:
在Chrome浏览器打开JStext.html就可以运行网页,运行效果图如下
根据博文中的内容,接下来在输入框中输入相应的内容,点击按钮便会跳转到家族树界面。但是输入内容要求符合规则,因为不知道输入的规则要求是怎样的,在我和同伴多次的尝试下都没有成功。虽然我们也有尝试通过分析代码的内容来实现,但由于我们都对这方面接触不多,里面的好多的内容并不了解,且我们的任务三开始的太晚没有过多的时间让我们去学习了解新概念,导致我们一直没有搞明白输入规则到底是怎样的。
项目评价:
和前面我说的理由一样,这个项目完成的内容和我们平时接触的方向有很大的差距。在我的学习过程中所接触的算法实现也就仅仅是一个c文件所实现的算法,并没有去将算法运用到实际中去。我觉得这个项目是值得继续开发的,通过我的了解,这是通过算法将输入的信息进行处理整理以树的方式更直观的展现出来的。我觉得可以进一步开发,将处理的信息的种类和数目都做一定的扩展。并且,他们的项目中要求输入按照一定的格式,我认为这一部分可以通过图形用户界面进行人机交互,使用户使用和输入更加方便直观。
任务四 实验总结
时间分配:
任务内容 | 时间(h) |
预览要求、规划工作 | 2 |
任务一 | 3.5 |
任务二 | 5 |
任务三 | 10 |
任务四 | 2 |
总结:
通过本次的实验,让我深刻的认识到在计算机领域自己所接触和认知都是少的可怕。因为作业和平时的接触,就本次实验任务三部分我们所选取的项目作业,是我很少接触的方面,就是自己也没有这方面的动手的经历。并且他们在项目实现中所运用到的各种技术、方法和涉及到的一些概念也有很多是我没有接触过的,比如输入文本转json以及按json内容生成树以及Qunit工具等。就只这一份项目作业,就教给了我很多的知识,让我明白阅读别人的作品的好处真的是非常多的。