项目 | 内容 |
---|---|
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
本次作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12616341.html |
我的课程学习目标 | 进行软件项目案例分析,接受这种分析过程 |
这个作业在哪些方面帮助我实现学习目标 | 实践中认识到问题,再去解决问题的过程 |
结对方学号-姓名 | 201771030129-张琳 |
结对方本次博客作业链接 | https://www.cnblogs.com/zlin-/ |
一:任务一,在实验三得分100分以上作业中,任选一份作为案例,对案例项目成果进行评价
- 对案例博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系,并将以上评论内容发布到案例作业的博客评论区。
- 克隆案例项目源码到本地机器,阅读项目代码规范文档并运行代码,总结代码运行中存在的问题,体会案例博文是否有助于项目代码理解。
-
克隆
-
运行
-
问题
- 编码规范中没有说明代码编码类型。
- 数据可视化没有整合到web页面中
-
体会
- 案例博文确实对于项目代码理解有一定作用,但由于不清楚编码类型,导致中文全是乱码,影响阅读
- 总结本组实验三博客作业及代码设计存在问题与不足,列举代码中存在的bug,未实现的功能等等。
- bug
- 由于编码方式不一致,在我的机器上移植运行之后会出现验证码失效的bug
- 未实现功能
- 提醒功能
二: 任务二,与实验三结对伙伴协作学习:阅读《现代软件工程—构建之法》第5-6章内容,理解并掌握软件项目团队的特点、了解软件团队的模式、结合理论课学习内容理解瀑布模型及其变形、渐进交付流程、敏捷流程等典型软件过程模型特点,理解并体会卡内基梅隆大学(CMU)软件工程学院总结的TSP原则;
-
协作学习,进行线上交流分享总结
-
软件项目团队特点
- 软件项目团队有各种形式,分别适用于不同的人员和需求;
- 基于直觉形成的团队模式未必是最合适的;
- 随着团队的成熟和环境的变化,团队模式会相互演化。
-
软件项目的模式
-
主治医师模式:
就像在手术台上那样,有一个主刀医师,其他人(麻醉,护士,器械)各司其职,为主刀医师服务。
-
明星模式:
主治医师模式运用到极点,可以蜕化为明星模式,在这里,明星的光芒盖过了团队其他人的总和。
-
社区模式 ( Community Model )
社区由很多志愿者参与,每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。这种模式的好处是“众人拾柴火焰高”,但是如果大家都只来烤火,不去拾柴;或者捡到的柴火质量太差,最后火也就熄灭了。“社区” 并不意味着“随意”,-些成功的社区项目(例如开发和维护Linux操作系统的社区),都有很 严格的代码复审和签人的质量控制。
-
业余剧团模式 ( Amateur Theater Team )
这样的团队在每一-个项目 (剧目)中,不同的人会挑选不同的角色。在下一个剧目中,这些人也许会换- -个完全不同的角色类型。各人在团队中听从一个中央指挥( 导演)的指导和安排。在学生实践项目或培训项目中,这样的事情经常发生。在业余玩票、培训的环境中,每个人可以尝试不同角色,大家还可以比较平等地讨论。但是在 竞争性强烈、创造性要求高的团队,不会存在完美的民主气氛,就像职业足球比赛,每个人的责任都不可或缺,但是不会每个人都有同样的控球时间。
-
秘密团队 ( Skunk Work Team )
一些软件项 目在秘密状态下进行,别人不知道他们具体在做什么。这种模式的好处是:团队内部有极大的自由,较高的热情,没有外界的干扰(不用每周给别人介绍项目进展,听领导的最新指示,等等)。一个团队的成员如果有很大的自由度,又有独特的使命,这对于大家来说,是很大的驱动力。这样的团队往往能发挥超高的效率完成看似不可能的任务。
-
特工团队(SWAT)
就像电影电视中的特工组“加里森敢死队”等- -样, 软件行业的一些团队由一些有特殊技能的专业人士组成,负责解决一些棘手而有紧迫性的问题。
-
交响乐团模式 ( Orchestra )
交响乐团的演奏有下面的特点。 家伙多,门类齐全。各司其职,各自有专门场地,演奏期间没有聊天,走动等现象。演奏都靠谱,同时看演奏的都是练习过多次的曲目,重在执行。
-
爵土乐模式( Jazz Band )
强调个性化的表达,强有力的互动,对变化的内容给予有创意的回应。这样的团队模式和上面的“交响乐团模式”在很多方面都对立,但是两种模式都产生了很受欢迎的音乐作品,因此不能简单地说孰优孰劣。
-
功能团队模式 ( Feature Team )
很多软件公司的团队最后都演变成功能团队,简而言之,就是具备不同能力的同事们平等协作,共同完成一个功能。
-
官僚模式( Bureaucratic Model )
这种模式脱胎于大机构的组织架构,几个人报告给一个小头目,几个小头目报告给中头目,依次而上。这种模式在软件开发中会出问题。因为成员之间不光有技术方面的合作和领导,同时还混进了组织上的领导和被领导关系。跨组织的合作变得比较困难,因为各自头顶上都有不同的老板。这种结构有一重大隐患, 在做绩效评估的时候,各个小老板、中老板都要为自己手下的弟兄们争名夺利,而有意无意地忽略了全局最优的绩效评估标准,导致很多无谓的算计、纠结、甚至有人会贬低别的团队的贡献。
-
-
瀑布模型及其变形
- 瀑布模型:瀑布模型描述了单向的,不可逆的生产过程。
- 变形:温斯顿指出用户的介入,讨论,复审以及模型下文档的重要性。
-
渐进交付流程
接近迭代式开发流程,当系统的主要需求和框架明确后,软件团队进入不断演进的循环;
-
敏捷流程
-
尽早并持续地 交付有价值的软件以满足顾客需求
-
敏捷流程 欢迎需求的变化,并利用这种变化来提高用户的竞争优势
-
经常发布可用的软件,发布间隔可以从几周到几个月,能短则短
-
业务人员和开发人员在项目开发过程中应该每天共同工作
-
以有进取心的人为项目核心,充分支持信任他们
-
无论团队内外,面对面的交流始终是最有效的沟通方式
-
可用的软件是衡量项目进展的主要指标
-
敏捷流程应能保持可持续的发展。领导、团队和用户应该能按照目前的步调持续合作下去
-
只有不断关注技术和设计,才能越来越敏捷
-
保持简明一尽 可能简化工作量的技艺一极 为重要
-
只有能自我管理的团队才能创造优秀的架构、需求和设计
-
时时总结如何提高团队效率,并付诸行动
-
-
理解并体会TSP原则
- 使用妥善定义的流程,流程中的每一 步都是可以重复、可以衡量结果的。
- 团队的各个成员对团队的目标、角色、产品都有统一的理解。
- 尽量使用成熟的技术和做法。
- 尽量多地收集数据(也包括对团队不利的数据),并用数据来帮助团队做出理性的决定。
- 制定切合实际的计划和承诺,团队计划要由负责具体执行的的角色来制定(而不是从上级而来)。
- 增加团队的自我管理能力。
- 专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面而细致的设计:工作(而不是在后期匆忙修复问题)。
三:任务三,在班级博客园,有很多高校的软件工程课程要求同学们完成团队项目,请与实验三结对伙伴协商,在以下三个班级中选择一个高质量的团队项目案例进行协作学习,要求追踪该团队项目发布所有博客作业,下载项目软件代码。
-
团队项目作业发布账号链接(1分);
-
团队项目仓库github链接(1分);
-
陈述你选择该团队项目进行分析的理由(5分);
- 团队分工明确,目的统一
- 拥有比较完善的git仓库,各种文档都比较齐全
- 对自己的项目有比较完善的解释,可以在移植时拿来参考
-
结合项目系列博客文档,总结项目团队成员的分工合作情况(4分);
成员 分工内容 姚玉婷 代码编写以及软件测试 马丽莎 文档撰写 孙苗坤 前端页面编写 张 琼 软件测试 -
结合项目系列博客文档,评价项目的软件项目过程特点(TSP)(5分);
团队成员 分工 所占比例 任务实际完成时间 姚玉婷 文档的整理与完善,PP制作,系统验收以及博客的专业 30% 6h 马丽莎 文档的整理与完善,燃尽图的更新 30% 5h 孙苗坤 文档的整理与完善 30% 4h 张 琼 文档的整理与完善 25% 4h 评价:每个阶段每个人的工作量工作任务不同,一个完整的团队必然是各个团队成员之间紧密配合的结果。就像盖楼房,一层没盖好之后的工作进展也就步履维艰了。
-
观察该团队项目github仓库的源代码文件结构,是否包含代码规范文档?(5分);
经观察,包含代码规范文档
-
下载团队项目代码,尝试部署项目运行环境并使用软件,描述最简单直观的使用体验,找出至少两个比较严重的功能性bug,在博客中展示截图(20分);
-
clone
-
部署运行
-
使用体验
- 缺少使用说明(没有说明运行环境tomcat版本,jdk版本,mysql版本等)
- github中没有上传数据库的sql文件,只有数据库结构说明
- 页面设计比较保守,整体看起来设计不太新颖
- 数据显示栏目太少,实际情况可能会更多
-
bug
-
查看房间信息时数据库提示出现异常错误。
-
404错误,可能是由于tomcat版本问题,但由于博客中未注明,所以找不到
-
-
-
评价该团队项目是否值得继续开发,并陈述理由?(5分)
不值得
- 同类系统太多,开发完成也没有太大效益
- 项目没有特色,不容易推广
- 基本已经开发完善,没有继续开发的必要
四:记录完成《实验四 软件项目案例分析》各项任务实际花费的时间
任务 | 花费时间 |
---|---|
任务一 | 6 h |
任务二 | 3 h |
任务三 | 9.5 h |
任务四 | 2.5 h |
五:谈谈完成本次作业的感受和体会。(5分)
本次作业,我通过学习课本内容,了解软件项目团队的特点、模式等等,又通过任务一和任务三的实践,实地了解其他团队的协作方式。更加明白团队合作的重要,希望以后在自己的实践中加以运用。
小记
- 这次项目给我最大的印象就是不仅要好好写代码,更重要的是要让自己的代码有用,可读,可移植,必要的文档,说明一个都不能少。