202204-软件工程四人小团队 实验五 团队作业2:软件项目案例分析
项目 | 内容 |
---|---|
课程班级博客链接 | 2019卓越班 |
这个作业要求链接 | 实验五 团队作业2:软件项目案例分析 |
团队名称 | 软件工程四人小团队 |
团队的课程学习目标 | (1)学习团队软件项目流程(TSP)、软件项目团队的角色分工,软件项目经理的职责。(2)掌握敏捷流程原则及相关概念。(3)软件案例分析。 |
这个作业在哪些方面帮助团队实现学习目标 | (1)学习到了PM是如何产生及其任务(2)团队成员对软件团队的模式及开发流程有更深理解(3)团队成员对软件测评进行了实践(4)团队的交流更加深入 |
团队博客链接 | 软件工程四人小团队 |
任务1
《现代软件工程—构建之法》第5、6章内容
- 1.软件团队的模式:
- 主治医师模式:这样的软件团队中,有首席程序员( Chief Programmer ),他/她负责处理主要模块的设计和编码,其他成员从各种角度支持他/她的工作。
- 明星模式:主治医师模式运用到极点。
- 社区模式:社区由很多志愿者参与,每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。这种模式的好处是“众人拾柴火焰高”。
- 业余剧团模式:这样的团队在每一个项目中,不同的人会挑选不同的角色。在下一个项目中,这些人也许会换一个完全不同的角色类型。
- 秘密团队:一些软件项目在秘密状态下进行,别人不知道他们具体在做什么。
- 特工团队:软件行业的一些团队由一些有特殊技能的专业人士组成,负责解决一些棘手而有紧迫性的问题。
- 交响乐团模式:当某个软件领域处于稳定成长阶段的时候,众多大型软件公司的开发团队就会采取该模式。
- 爵士乐模式:强调个性化的表达,强有力的互动,对变化的内容给予有创意的回应。类似敏捷开发模式。
- 功能团队模式:具备不同能力的同事们平等协作,共同完成一个功能。
- 官僚模式:这种模式脱胎于大机构的组织架构,几个人报告给一个小头目,几个小头目报告给中头目,依次而上。这种模式在软件开发中会出问题。
- 2.瀑布模型及其变形、渐进交付流程、敏捷流程等典型软件过程模型特点
- (1)瀑布模型
- 瀑布模型是一个经典的软件生命周期模型,也叫预测型生命周期、完全计划驱动型生命周期。在这个模型里,在项目生命周期的尽早时间,要确定项目范围及交付此范围所需的时间和成本。
- 在这个模型里,项目启动时,项目团队专注于定义产品和项目的总体范围,然后制定产品(及相关可交付成果)交付计划,接着通过各阶段来执行计划。应该仔细管理项目范围变更。如果有新增范围,则需要重新计划和正式确认。对于经常变化的项目而言,瀑布模型毫无价值。
- 以下情况优先选择这种生命周期:项目需求明确、充分了解拟交付的产品、有厚实的行业实践基础、或者整批一次性交付产品有利于干系人。例如开发一个软件项目时,如果采用这个模型的话,一般将软件开发分为可行性分析(计划)、需求分析、软件设计(概要设计、详细设计)、编码(含单元测试)、测试、运行维护等几个阶段。
- (2)瀑布模型的局限性:
- 各步骤之间是分离的,但是软件生产过程中各个步骤不能这样严格分离出来;
- 回溯修改很困难甚至不可能,但是软件生产的过程需要时间回溯;
- 最终产品直到最后才出现,但是软件的客户,甚至软件工程师本人都需要尽早知道产品的原型并试用。
- (3)瀑布模型的适用范围:
- 产品的定义非常稳定,但是产品的正确性非常重要,需要每一步的验证;
- 产品模块之间的接口,输入和输出能很好地用形式化的方法定义和验证;
- 使用的技术非常成熟,团队成员都很熟悉这些技术。
- 负责各个部分的子团队分属不同的机构,或在不同的地理位置,不可能做到频繁的交流。
- (4)瀑布模型的变形
- 生鱼片模型:各个模块像生鱼片一样重叠在一起
- 大瀑布带着小瀑布
- 生鱼片模型:各个模块像生鱼片一样重叠在一起
- (5)渐进交付流程
- 将复杂的项目进行分阶段拆解,通过持续进行小型闭环迭代降低交付成本和时间。当系统的主要需求和架构明确之后,软件团队进去了一个不断演进的循环之中(开发→发布→听取反馈→根据反馈做改进)。
- 将复杂的项目进行分阶段拆解,通过持续进行小型闭环迭代降低交付成本和时间。当系统的主要需求和架构明确之后,软件团队进去了一个不断演进的循环之中(开发→发布→听取反馈→根据反馈做改进)。
- (6)敏捷流程的原则有以下12点:
- 尽早并持续地交付有价值的软件以满足顾客需求;
- 敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势;
- 经常发布可用的软件,发布间隔可以从几周到几个月,能短则短;
- 业务人员和开发人员在项目开发过程中应该每天共同工作;
- 以有进取心的人为项目核心,充分支持信任他们;
- 无论团队内外,面对面的交流始终是最有效的沟通方式;
- 可用的软件是衡量项目进展的主要指标;
- 敏捷流程应能保持可持续的发展。领导、团队和用户应该能按照目前的步调持续合作下去;
- 只有不断关注技术和设计,才能越来越敏捷;
- 保持简明,尽可能简化工作量的技艺极为重要;
- 只有能自我管理的团队才能创造优秀的架构、需求和设计;
- 时时总结如何提高团队效率,并付诸行动。
- (7)敏捷开发的步骤:
- 1.找出完成产品需要做的事情——Product Backlog
- 2.决定当前的冲刺( Sprint)需要解决的事情——Sprint Backlog
- 3.冲刺
- 得到软件的一个增量版本,发布给用户。然后在此基础上又进一步计划增量的新功能和改进。
- (8)卡内基梅隆大学(CMU)软件工程学院总结的TSP原则
- TSP原则主要有以下七点:
- 使用妥善定义的流程,流程中的每一步都是可以重复、可以衡量结果的;
- 团队的各个成员对团队的目标、角色、产品都有统一的理解;
- 尽量使用成熟的技术和做法;
- 尽量多地收集数据(也包括对团队不利的数据),并用数据来帮助团队做出理性的决定;
- 制定切合实际的计划和承诺,团队计划要由负责具体执行的的角色来制定(而不是从上级而来);
- 增加团队的自我管理能力;
- 专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面而细致的设计工作(而不是在后期匆忙修复问题)。
- (1)瀑布模型
《现代软件工程—构建之法》第9章内容
1.PM是什么
- PM的M就是Manager,但是P有这几种:Product Manager、Project Manager、Program Manager,在不同的行业和公司,他们的作用各不相同:
- Product Manager:产品经理-正确地做产品。核心要求是,根据市场和用户需求,协调各部门资源,正确地把握产品定位和方向,解决用户的痛点,持续优化产品;
- Project Manager:项目经理-正确地做流程。他们对项目流程负责,即项目从立项到上线按时完成。正确地协调团队内部外部,调配各部门资源和时间,有效进行风险管理,保证一个项目顺利按计划结项,是一个项目经理的核心价值;
- Program Manager:微软的职位名称。微软产品团队三足鼎立的角色分配就是PM、开发、测试。PM负责除产品开发和测试之外的所有事情。从某种意义上说,是前面两种角色的综合。
2.为什么会有项目经理?
随着软件复杂度的提高,用户需求的多样化,市场竞争的日益激烈,光有程序员和销售人员是不够的。销售人员当然可以把顾客的需求直接告诉开发人员,但是开发人员往往听不懂。我们需要专人来把市场/销售人员那一套MBA的套路语言翻译成程序员能懂的规格说明书(Spec )。
3.如何成为一个合格的PM
- 成为一个合格的PM,需要以下几种能力:
- 观察、理解和快速学习能力:PM要能够在一个新的领域中很快上手,对老板/客户/利益相关人要有同理心;
- 分析管理能力:从每天项目中发生的诸多事情中,PM要能够分析出重点、找到优先级、做判断、做决定等等;
- 一定的专业能力:PM通常也能写代码,能玩转Excel、PPT、Visio、甘特图,会PS,有文字功底,写的博客有人爱读,反正总得有几招绝活!此外,还要有大量的阅读,对IT行业、用户心理、社会都要有广泛的了解。
4.在一个项目中,PM的具体任务是:
- 带领团队形成团队的目标/远景,把抽象的目标转化为可执行的、具体的、优美的设计;
- 管理软件的具体功能的生命周期(需求/设想/设计/实现/测试/修改/发布/升级/迁移/淘汰);
- 创建并维护软件的规格说明书,让它成为开发/测试人员及时准确的知道,而不是障碍;
- 代表客户和用户的利益,主动收集用户反馈,预期用户新的需求。协调并决定各种需求的优先级;
- 分析并带领其他成员对缺陷/变更需求形成一致意见,并确保实施;
- 带领其他成员确保项目保持功能/时间/资源的合理平衡,跟踪项目进展,确保团队发布令客户满意的软件;
- 收集团队项目管理和软件工程的各种数据,客观分析项目实施过程中的优缺点,推动项目成员持续改进,从而提振士气。
讨论截图
任务2
以团队协作学习方式,从B、C、D三个软件案例分析任务中选择一个课题来进行。
B)很多开发人员和IT专业的学生都在移动设备上学习、工作、社交,在移动设备上的APP 能满足这类目标用户的需求么?这类APP会被微信公众号取代吗? 请试用并分析 CSDN App功能,例如:点击 App 的首页下方正中间的那个 “动态” 按钮,打开后的微社区,就是大家要分析的动态功能, 可以在 “动态” 中发布几个动态,看看你的城市有哪些IT行业的网友。
C)现在学习资料很多,但是很多同学在学习新技术的时候还是很茫然,有没有更好的学习路径? 大家可以体验一下“CSDN技能树”,这个软件包含了很多IT技能的学习资料(文章、课程)和练习题,可以边学边练,解锁全部知识点后,还可以获得一枚勋章。作为核心用户,CSDN技能树是否满足你们对类似软件产品的期待? 你们发现这些技能树有什么亮点?这个软件产品状态离预期还差哪些方面?
D) 有很多IT技术社区网站提供IT人士发布博客的功能,Markdown 是一种常用的博客编辑器,请使用以下CSDN博客功能,结合使用体验分析CSDN 的 Markdown 编辑器好用么?它对于各种文件格式、插入图像、动画、表格、代码块的支持如何?发现了什么问题?请描述在使用CSDN博客中碰到的问题,以及改进的建议;CSDN 的 Markdown 编辑器与博客园的博客编辑器相比,有什么优缺点(至少列出5条)。
CSDN博客文章管理
我们选择的是D软件案例分析任务
1.团队成员使用频率表
团队成员 | 使用时间(min) |
---|---|
刘温元 | 32+27+46+56+22+36+40=259 |
闫雨馨 | 28+36+31+48+32+46+41=262 |
李瑞婷 | 25+30+19+31+28+13=146 |
刘转弟 | 35+20+35+28+50+25+28=221 |
2.被测软件各方面总结
a)解决的问题
- CSDN的编辑器实现了可以自动生成目录可以在撰写完文章之后自动生成目录;
- CSDN的编辑器实现了草稿以及预览在同一界面;
- CSDN的编辑器提供了文本模板
b)在数据量/界面/功能/准确度上的优缺点
- 优点:
- 在写博客的时候有语法提示,让人即使忘记了语法的格式也可以在短时间内找到相应的语法格式。
- 草稿与预览在同一界面,所以很轻松的可以发现在编写时时的问题,可以很快的解决问题不需要再额外切换到预览界面,节省了时间。
- 界面有很多频繁使用的功能,而且功能齐全。
- 对新手来说可以使用界面的功能来对博客内容直接操作,而对熟练的人可以使用快捷方式
- 有一个叫发文助手的功能,它会检测文章标题、错别字、内容质量,助您提升文章质量。
- 很清晰的看出文章的体系结构,因为有目录的存在,可以使阅读者很轻易的找到需要查阅的部分;
- 缺点:
- 字体颜色比较单一
- 无法编辑图片
3.被测软件实际用户体验
(1)用户背景与需求
基本信息 | 专业 | 需求 |
---|---|---|
刘同学 | 计算机 | 记录所学知识 |
(2)用户使用软件的图片
(3)概括用户使用过程,判断用户使用体验
- 使用过程
用户首先打开CSDN编辑器,利用各种工具撰 写自己的文章 - 用户体验
用户体验感良好,CSDN编辑器新手上手快
(4)对用户的采访
问:你觉得CSDN编辑器这个平台对你本次记录所学内容帮助大不大?
答: 之前也在别的平台上写过博客,但是没有像CSDN这样方便和容易。功能很齐全,而且有语法说明,在写文章的过程中忘记语法了也可以很快找到语法的格式很省时间。
问:你以后会经常使用CSDN吗?并把它推荐给你周边的人吗?
答:当然,我相信它会对我周边的人有很大的帮助。
问:那你对CSDN有什么意见吗?
答:我希望字体颜色可以有更多的选择,同时希望可以自己设置快捷按键。
4.本次任务PSP列表
任务内容 | 预计花费时间(min) | 实际花费时间(min) |
---|---|---|
任务一 | 180 | 201 |
任务二 | 240 | 262 |
测评 | 120 | 156 |
采访 | 60 | 52 |
任务三 | 120 | 103 |
5.对于本次作业的感想与体会
姓名 | 感想与体会 |
---|---|
刘温元 | 我学习到了PM是如何产生及其任务;团队成员对软件团队的模式及开发流程有更深理解,同时我们学习使用了CSDN的编辑器,体验很好。 |
闫雨馨 | 通过本次实验,我学习到了团队软件项目流程(TSP)、团队成员协作要求,并掌握了敏捷流程原则及相关概念,了解了团队项目开发的基本流程,对团队成员之间的分工协作形式等有了更加深刻的了解,学习了如何更好地进行团队之间的协作和配合,除此之外,我对markdown的使用有了进一步的认识,在今后的学习中我也会将这些知识融入到实际操作中,加深对其的理解。 |
李瑞婷 | 在本次作业中,我再次感受到了成员之间的合作是多么重要,成员之间的配合直接影响到了作业的质量,在此次合作中,我们分工明确,相互交流配合,提出问题,解决问题。而且在此次实验过程中,我也学到了很多东西,软件开发知识学习,并对CSDN以及markdown的使用有了进一步的了解,收获颇多 |
刘转弟 | 在此次的实验过程,团队成员分工合作,将任务划分为几个小的子任务,然后各自负责自己的子任务将其完成。团队成员有着清晰的目标,成员之间充分信任彼此,交流上大家各抒己见,完成了此次的实验任务,也认识到了团队团结的力量。 |