202206-WGYG 实验五 团队作业2:软件项目案例分析

项目 内容
课程班级博客链接 2019卓越班
这个作业要求链接 实验五 团队作业2:软件项目案例分析
团队名称 WGYG
团队的课程学习目标 (1)学习团队软件项目流程(TSP)、软件项目团队的角色分工,软件项目经理的职责。
(2)掌握敏捷流程原则及相关概念。
(3)软件案例分析。
这个作业在哪些方面帮助团队实现学习目标 (1)学习到了PM是如何产生及其任务
(2)团队成员对软件团队的模式及开发流程有更深理解
(3)团队成员对软件测评进行了实践
(4)团队的交流更加深入
团队博客链接 WGYG

任务1

《现代软件工程—构建之法》第5章

  1. 软件团队的模式:

    • 主治医师模式:这样的软件团队中,有首席程序员( Chief Programmer ),他/她负责处理主要模块的设计和编码,其他成员从各种角度支持他/她的工作。
    • 明星模式:主治医师模式运用到极点。
    • 社区模式:社区由很多志愿者参与,每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。这种模式的好处是“众人拾柴火焰高”。
    • 业余剧团模式:这样的团队在每一个项目中,不同的人会挑选不同的角色。在下一个项目中,这些人也许会换一个完全不同的角色类型。
    • 秘密团队:一些软件项目在秘密状态下进行,别人不知道他们具体在做什么。
    • 特工团队:软件行业的一些团队由一些有特殊技能的专业人士组成,负责解决一些棘手而有紧迫性的问题。
    • 交响乐团模式:当某个软件领域处于稳定成长阶段的时候,众多大型软件公司的开发团队就会采取该模式。
    • 爵士乐模式:强调个性化的表达,强有力的互动,对变化的内容给予有创意的回应。类似敏捷开发模式。
    • 功能团队模式:具备不同能力的同事们平等协作,共同完成一个功能。
    • 官僚模式:这种模式脱胎于大机构的组织架构,几个人报告给一个小头目,几个小头目报告给中头目,依次而上。这种模式在软件开发中会出问题。
  2. 开发流程:

    1. 写了再改模式( Code-and-Fix )
    2. 瀑布模型( Waterfall Model)
      • 如果产品的定义非常稳定,但是产品的正确性非常重要,需要每一步的验证
      • 产品模块之间的接口、输入和输出能很好地用形式化的方法定义和验证
      • 使用的技术非常成熟,团队成员都很熟悉这些技术
      • 负责各个步骤的子团队分属不同的机构,或在不同的地理位置,不可能做到频繁的交流
    3. 瀑布模型的变形
      • 生鱼片模型
      • 大瀑布带着小瀑布
    4. 统一流程(RUP)
      • 初始阶段:此阶段的目标是分析软件系统大概的构成,系统与外部系统的边界在哪里,大致的成本和预算是多少,系统的风险主要来自哪里。成功度过初始阶段的项目会达到生命周期目标( Lifecycle Objective )里程碑。
      • 细化阶段:它的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,按优先级处理项目中的风险。团队要确定项目的具体范围、主要功能、性能、安全性、可扩展性等非功能需求。同时为项目建立支持环境,包括创建开发案例、创建模板并准备工具。细化阶段结束时,项目到达了第二个重要的里程碑:生命周期结构( Lifecycle Architecture)里程碑。
      • 构造阶段:在这一阶段,团队开发出所有的功能集,并有秩序地把功能集成为经过各种测试验证过的产品。构造阶段结束时是第三个重要的里程碑:初始功能( Initial Operational )里程碑。此时的产品版本也常被称为“beta”版。
      • 交付阶段:这时候,团队工作的重点是确保软件能满足最终用户的实际需求。交付阶段可以有迭代 ( beta1,beta2等),基于用户的反馈,团队利用这些迭代对系统进行修改、调整。除了对功能的调整,团队还要注意处理用户设置、安装和可用性等问题。在交付阶段的终点是第四个里程碑:产品发布(Product Release)里程碑。
    5. 老板驱动的流程(Boss-Driven Process)
    6. 渐进交付的流程(Evolutionary Delivery) , MVP和MBP
      • 渐进交付的流程(Evolutionary Delivery):[开发→发布→听取反馈→根据反馈做改进],重复这个循环,直到时间用完,钱花光,完成了计划的迭代次数,或者客户认为满意
      • MVP:Minimum Viable Product,最小可行产品,又称为Minimal Feature Set,最小功能集。把产品最核心的功能用最小的成本实现出来(或者描绘出来),然后快速征求用户意见。
      • MBP: Maximal BeautifulProduct(最强最美产品,MBP )。把产品最全、最美的形态展现出来。
  3. TSP原则

    • 使用妥善定义的流程,流程中的每一步都是可以重复、可以衡量结果的;
    • 团队的各个成员对团队的目标、角色、产品都有统一的理解;
    • 尽量使用成熟的技术和做法;
    • 尽量多地收集数据(也包括对团队不利的数据),并用数据来帮助团队做出理性的决定;
    • 制定切合实际的计划和承诺,团队计划要由负责具体执行的的角色来制定(而不是从上级而来);
    • 增加团队的自我管理能力;
    • 专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面而细致的设计工作(而不是在后期匆忙修复问题)。

《现代软件工程—构建之法》第6章

  1. 敏捷开发的原则:
    • 尽早并持续地交付有价值的软件以满足顾客需求
    • 敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势
    • 经常发布可用的软件,发布间隔可以从几周到几个月,能短则短
    • 业务人员和开发人员在项目开发过程中应该每天共同工作
    • 以有进取心的人为项目核心,充分支持信任他们
    • 无论团队内外,面对面的交流始终是最有效的沟通方式
    • 可用的软件是衡量项目进展的主要指标
    • 敏捷流程应能保持可持续的发展。领导、团队和用户应该能按照目前的步调持续合作下去
    • 只有不断关注技术和设计,才能越来越敏捷
    • 10.保持简明——尽可能简化工作量的技艺——极为重要
    • 只有能自我管理的团队才能创造优秀的架构、需求和设计
    • 时时总结如何提高团队效率,并付诸行动
  2. 敏捷开发的步骤:
    1. 找出完成产品需要做的事情——Product Backlog
    2. 决定当前的冲刺( Sprint)需要解决的事情——Sprint Backlog
    3. 冲刺
    4. 得到软件的一个增量版本,发布给用户。然后在此基础上又进一步计划增量的新功能和改进。
  3. 敏捷的适用范围
产品可靠性要求 需求变化 团队人员数量 人员经验 公司文化 实际的例子 用错方式的后果
不高,容忍经常出错 经常变化 不多 有资深程序员带队 鼓励变化,行业充满变数 写一个微博网站 用敏捷的方法开发登月火箭控制程序,前N批宇航员都挂了

《现代软件工程—构建之法》第9章

  1. PM 的M就是Manager,但是Р有这几种:Product Manager、Project Manager、ProgramManager,在不同的行业和公司,他们的作用各不相同。

    • Product Manager :产品经理—正确地做产品。目前国内公司大部分PM都是指这个职位。产品经理对一个或多个产品或产品线负责,而互联网产品涉及到这些方方面面:产品定位、市场发展、需求分析、运营、营销、市场推广、商务合作。产品经理横跨这些部门,寻找资源,持续推进产品。随着产品的发展,不同公司,对PM要求会不一样。核心要求是,根据市场和用户需求,协调各部门资源,正确地把握产品定位和方向,解决用户的痛点,持续优化产品。
    • Project Manager :项目经理—正确地做流程。在某些公司,这个职位与产品经理分开单列。他们对项目流程负责,即项目从立项到上线按时完成。正确地协调团队内部外部,调配各部门资源和时间,有效进行风险管理,保证一个项目顺利按计划结项,是一个项目经理的核心价值。
    • Program Manager :微软的职位名称。微软产品团队三足鼎立的角色分配就是PM、开发、测试。PM负责除产品开发和测试之外的所有事情。从某种意义上说,是前面两种角色的综合。微软通常有专门的产品策划( Product Planner ),他们和市场部门的专职人员一起,负责产品的长期发展和市场推广。
  2. 为什么会有项目经理?

    随着软件复杂度的提高,用户需求的多样化,市场竞争的日益激烈,光有程序员和销售人员是不够的。销售人员当然可以把顾客的需求直接告诉开发人员,但是开发人员往往听不懂。我们需要专人来把市场/销售人员那一套MBA的套路语言翻译成程序员能懂的规格说明书(Spec )。也就是说,我们需要专门的人才来做下面的事,而这些事往往是程序员不愿意花时间去做的:

    • 和客户交谈,组织用户调查,发现用户需求
    • 了解和比较竞争对手的产品
    • 怎么让软件变得可用(Usable)、有用( Useful )
    • 怎么改进团队的流程
  3. PM给团队带来的好处:

    • 负责一个功能的开发/测试人员和相关的PM密切合作,再由PM代表这一小组去和别的小组或客户代表打交道,大大降低了交流的成本;
    • 有专人负责开发/测试之外的许多事务和项目进度的管理,让开发和测试人员专注于技术方面的工作
  4. Project Manager和Program Manager的区别

Project Manager Program Manager
是团队的行政领导,带领大家在项目中工作 和大家平等工作,推动团队完成软件的功能
通常是团队和外界打交道的唯一代表 一个团队可以有很多PM
对项目的功能有最后的决定权 和其他团队成员一起形成决议
管事也管人 管事不管人
不一定做具体工作 一定做具体工作
  1. PM要具备的能力:

    • 观察、理解和快速学习能力

    • 分析管理能力

    • 一定的专业能力

    • 自省的能力

  2. PM的具体任务:

 - 带领团队形成团队的目标/远景,把抽象的目标转化为可执行的、具体的、优美的设计;

 - 管理软件的具体功能的生命周期(需求/设想/设计/实现/测试/修改/发布/升级/迁移/淘汰);

 - 创建并维护软件的规格说明书,让它成为开发/测试人员及时准确的指导,而不是障碍;

 - 代表客户和用户的利益,主动收集用户反馈,预期用户新的需求。协调并决定各种需求的优先级;

 - 分析并带领其他成员对缺陷/变更需求形成一致意见,并确保实施;

 - 带领其他成员确保项目保持功能/时间/资源的合理平衡,跟踪项目进展,确保团队发布令客户满意的软件;

 - 收集团队项目管理和软件工程的各种数据,客观分析项目实施过程中的优缺点,推动项目成员持续改进,从而提振士气。

  1. 有序的会议

image-20220416234014573

讨论截图

01

02

03

任务2

被评测软件/网站

选择C,对“CSDN技能树”进行测评

C)现在学习资料很多,但是很多同学在学习新技术的时候还是很茫然,有没有更好的学习路径? 大家可以体验一下“CSDN技能树”,这个软件包含了很多IT技能的学习资料(文章、课程)和练习题,可以边学边练,解锁全部知识点后,还可以获得一枚勋章,活动链接:https://bbs.csdn.net/topics/605609934。
作为核心用户,CSDN技能树是否满足你们对类似软件产品的期待? 你们发现这些技能树有什么亮点?这个软件产品状态离预期还差哪些方面?
推荐评测以下CSDN技能树:
Python 技能树:https://edu.csdn.net/skill/python
CS入门技能树:https://edu.csdn.net/skill/gml
C 语言技能树:https://edu.csdn.net/skill/c

测评时长记录

成员 使用时长(min)
魏瑾川 30+52+30+35+44+30=221
郭清华 30+30+35+30+45+40=210
姚恪 40+20+55+40+50+35=240
古丽妮尕尔·阿卜力米提 36+30+35+35+55+45=236

产品测评

网页端

  • 总体界面

image-20220417093447414

图2-1
  1. 功能:

① 目录

② 与目录对应的具体内容概括

③ 学习奖章及相关内容

  1. 优缺点:
    • 优点
      • 界面简洁明了,所有功能一览无余
      • 对每个知识点是否学过进行了标注,方便用户使用
  • 加入计划

image-20220417101211199

图2-2

image-20220417101919063

图2-3
  1. 功能:

    • 用户可根据自身情况合理安排学习时间

    • 用户在创建计划后可查看自己的学习进度

  2. 优缺点:

    • 优点
      • 界面简洁明了,即使第一次使用也没有障碍
      • 方便用户进行学习计划的安排,提升用户体验感
  • 具体学习界面

image-20220417095650486

图2-4
  1. 功能:

① 该模块的知识点

② 进行资料,习题,交流讨论及笔记的切换

③ 具体的学习资料,包括视频资料

④ 笔记编辑

  1. 优缺点:

    • 优点
      • 界面简洁明了,所有内容一览无余
    • 缺点
      • 右侧笔记用户不可关闭
  2. 建议

    • 笔记让用户选择是否开启
  • 参考资料

image-20220417153333361

图2-5

image-20220417102714062

图2-6

image-20220417102851051

图2-7
  1. 功能:
    • 进行该部分知识点的学习
  2. 优缺点:
    • 优点
      • 图文并茂,可帮助学习者更好地进行学习
    • 缺点
      • 教程的排版不够美观,如图2-5所示
      • 笔记不可自主关闭
      • 目录只有文章开始部分有,在浏览到其他内容时,如果想看前边的某一知识点得一点一点滑动去找,如图2-6
      • 用户只能通过鼠标滚轮进行滑动阅读,如果用户要快速到文章底部只能一点一点滚动滑轮
  3. 建议:
    • 笔记让用户选择是否开启
    • 在侧边添加目录导航
    • 在图2-7红框部分可添加滚动条
  • 习题

image-20220417103443191

图2-8

image-20220417100257141

图2-9

image-20220417103949584

图2-10

image-20220417104041902

图2-11
  1. 功能:

    • 进行该部分知识点的练习
  2. 优缺点:

    • 优点
      • 帮助用户进行知识点的练习
    • 缺点
      • 点击图2-10的”前往notebook调试代码“会跳转到图2-11的页面
      • 习题设置过于单一,只有选择题
  3. 建议:

    • 将图2-10的”前往notebook调试代码“删除
  • 交流讨论

image-20220417104235121

图2-12

image-20220417104334425

图2-13
  1. 功能:

    • 用户可在此对上一部分的习题进行讨论
  2. 优缺点:

    • 优点
      • 帮助用户了解到自己的错误
      • 帮助各个用户进行交流
    • 缺点
      • 点击图2-10的”前往notebook调试代码“会跳转到图2-11的页面
  3. 建议

    • 删除”前往notebook调试代码“的选项
  • 笔记

image-20220417104626457

图2-14

image-20220417104650967

图2-15
  1. 功能:

    • 用户可在此对知识进行总结
    • 用户可以阅读其他用户的笔记
  2. 优缺点:

    • 优点
      • 帮助用户学习他人的想法
      • 帮助各个用户进行交流
  • 笔记编辑

    image-20220417105114254

    图2-16
  1. 功能:

    • 用户可在此对学到的知识进行总结
  2. 优缺点:

    • 优点
      • 采用markdown语法
    • 缺点
      • 无法完全关闭该界面
  3. 建议

    • 添加将该界面隐藏到侧边的功能,类似最左侧的目录

APP

  • 首页

image-20220417105951274

图2-17
  1. 功能:

    • 该部分知识的框架
  2. 优缺点:

    • 优点
      • 界面简洁明了,所有功能一览无余
      • 对每个知识点是否学过进行了标注,方便用户使用
  • 资料

image-20220417110047892

图2-18

image-20220417110945255

图2-19
  1. 功能:

    • 该部分知识的呈现
  2. 优缺点:

    • 优点
      • 提供多位用户提供的资料
    • 缺点
      • 如图2-19,和网页端缺点类似目录只有文章开始部分有,在浏览到其他内容时,如果想看前边的某一知识点得一点一点滑动去找
  3. 建议

    • 在侧边添加弹出目录按钮
  • 习题

image-20220417111440580

图2-20

image-20220417110148661

图2-21
  1. 功能:

    • 该部分知识相关习题的练习
  2. 优缺点:

    • 优点
      • 提供多道习题并附带解析

image-20220417110208333

图2-22

image-20220417111709466

图2-23
  1. 功能:
    • 查阅他人笔记
  2. 优缺点:
    • 优点
      • 提供多位用户的笔记

总结

BUG位置 BUG描述
Django学习界面(图2-5) 页面排版混乱
用户答题完毕后的弹出框(图2-10) 点击”前往notebook调试代码“会跳转到一个已经下线的功能

讨论截图

04

05

06

解决的问题

  • 在学习某个知识却很难找到相关资料的问题
  • 在网上寻找资料找到的资料质量却参差不齐的问题
  • 附带笔记功能,可以边学习边记笔记,比较方便
  • 提供的资料很齐全,可以一站式学习各种教程

用户体验方面的问题

  • 在用户答题界面点击图2-10的”前往notebook调试代码“会跳转到图2-11的页面
  • 右侧笔记用户不可关闭
  • 在阅读资料页面目录只有文章开始部分有,在浏览到其他内容时,如果想看前边的某一知识点得一点一点滑动去找,如图2-6
  • 在阅读资料页面用户只能通过鼠标滚轮进行滑动阅读,如果用户要快速到文章底部只能一点一点滚动滑轮

总体来说该技能树是很不错的,资料齐全,很容易上手,而且使用起来也十分便捷。

被推荐的用户

背景及需求

采访对象 身份 为何使用这个软件 痛点 其他需求
王同学 20级学弟 巩固学习c语言 对于c语言有一定程度的遗忘 提升自身能力
  • 采访对象体验测评软件画面

img

  • 概述用户使用<被评测软件>的过程, 评判这位用户的问题解决了么
    • 问题解决:该同学在使用完成之后,对于c语言有了巩固与提升,对于其中的内容都能够回忆有一定的理解
    • 数据量:
      • 优点:数据全面,几乎涵盖了所有c语言内容
      • 缺点:知识比较单一,而且缺少前后联系,内容比较基础
    • 界面:
      • 优点:比较简洁清晰,能够让人迅速找到需要了解的位置
      • 缺点:缺少人机互动,有点死板,界面不够精细
    • 准确度:
      • 优点:菜单内容,与基础知识内容基本准确
      • 缺点:拥有大量重复内容,需要精简,或者做课外延伸
  • 用户改进意见
    • 数组安排在太后面了
    • 部分章节内容过于详细,有些内容重复
    • 重点不清晰,希望标注重点

任务3

各项任务花费时间

任务内容 实际花费的时间(min)
任务1 150
任务2(测评+采访) 904+70=974
任务3 140
总共 1264

感受和体会

  通过本次任务,我们小组:学习到了PM是如何产生及其任务;团队成员对软件团队的模式及开发流程有更深理解;团队成员对CSDN的技能树进行使用并进行了测评;团队的交流更加深入。

posted @ 2022-04-17 16:15  WGYG  阅读(187)  评论(2编辑  收藏  举报