73
社区成员
声明:本作业以邹欣老师博客1为基础进行修改。
提示:作业覆盖全部要点即可,不以字数为批阅标准。
很多同学有疑惑:
软件工程课是否就是枯燥的理论课? 或者是几个牛人拼命写代码,其他人抱大腿的课? 要不然就是学习一个程序语言,练习某个框架,搞一个职业培训的课?
都不对!软件工程有理论,有实践,更重要的是分析,思辨,总结。在课程中,同学们自己组织团队写一个软件发布,然后分析其中的得失,的确是学习软件工程的一个好方法。这样能根据切身体会来分析,很有价值,但也有可能 “身在此山中”,未能看清全局。而且,课程时间有限,我们也不能做很多具体的项目。因此,我们也需要从间接经验中学习,分析。别的项目的成败同样给我们很多启发!
我们生活中很多时候要和软件打交道,大家上课开小差时候玩的手机游戏,背英语单词的手机 App,买火车票的网站,互相联系用的微信微博,等等,都是软件,都很值得分析。
你为何成为该软件的用户?软件背后的团队做对了什么,做错了什么?软件工程质量如何?如果你来做,会做得更好么?通过各种案例分析,评测,思辨,总结,我们就能看到软件工程的原则在实践中的种种体现,学好软件工程,帮助我们在实践中做得更好。
分析什么样的软件也有讲究,这就要说到一个故事:
某国空军为了提高飞机在空战中的存活率,决定加固飞机,但是加固什么地方呢?他们研究空战后飞回基地的飞机,飞机各部分中弹的地方和密度,想以此得出结论。但是专家们忽略了一点,那些被击中要害的飞机,都没有能飞回基地,也没有能够参加这些调查。
幸存者偏差 (Survivorship bias)是一种常见的逻辑谬误,意思是只能看到经过某种筛选而产生的结果,而没有意识到筛选的过程,因此忽略了被筛选掉的关键信息。这东西的别名有很多,比如“沉默的数据”、“死人不会说话”等等。
因此,我们不光要分析那些经历战场的考验而最后 "活着出来" 而胜利的软件,还要分析那些 在战场中被打败,或者伤痕累累,正在挣扎 的软件,这样才能全面地了解软件工程的原理在好/坏软件上所起的作用。
有的同学会说:
“我只会看看界面,写不出来...”
那么,可以看看这个只评价界面的分析报告,争取写出类似水平的报告来:如何评价微软的 UI 设计?
请从以下六个题目当中选择一个题目来分析。
🚨 注 1:除了第 5 题,以下题目均有 “选择至少两个软件进行分析” 的要求。然而,你在评测待分析软件时,在 第一、二部分 只需 选一个软件 进行分析和写作即可;第三部分(尤其是竞品分析相关内容)的写作则需体现对其他软件的体验、思考和分析。
🚨 注 2:如果你在任意题目中选择了开源软件进行分析,本课程鼓励你向开发者反馈自己在评测过程中发现的问题或想提出的建议,积极与开源社区沟通交流,这会是一次非常有趣的体验!😊
📝项目管理工具
从个人日程管理到团队任务协作,项目管理工具一直都扮演着助力高效工作的重要角色。好的项目管理工具不仅可以为团队成员提供高效、协调、可追踪的工作环境,还可以有效提高个人的工作效率或者团队的协同效能。通过深入分析不同工具的特点,我们可以更好地了解它们是如何满足项目推进需求的。有些软件非常有利于敏捷开发的工作记录,有些软件则是管理中长期任务的好帮手 …… 请你从下述的选项中选择 至少两个 项目管理工具进行分析,探讨它们的核心功能、适用场景以及为目标用户群体提供的价值。你还可以从用户的角度出发,谈谈工具值得改进的地方。如果在本题目中发现了心仪的工具,甚至可以将它用于后续作业项目的敏捷开发中,管理团队的工作!
可供参考的分析重点:团队协作功能、任务追踪能力、可视化展示、数据安全性等。
注:请放心,题目中给出的软件对本课程的团队规模均免费。
💻代码仓库管理系统
代码仓库管理系统有很多,从中国高校大学生的身份角度出发,你认为这些系统有什么缺陷和需要改进的地方,并且该如何改进? 请你从下述的选项中选择 至少两个 常见的代码仓库管理系统进行使用与分析。
可供参考的分析重点:用户体验和学习曲线、版本控制机制、安全性和权限控制、可扩展性等。
🎶音乐软件
现在许多人的生活都离不开音乐,毕竟没有 bgm 就没有动力。大家也一定有十分熟悉的音乐软件。然而同学们是否想过,现在音乐软件提供的核心功能是什么?主要是为了满足人们什么需求?你喜欢的音乐软件比起其他软件好在哪里?从你的用户体验出发,它又有什么需要改进的地方?请你从下述的选项中选择 两款 常用的音乐软件进行使用与分析。
可供参考的分析重点:用户体验、推荐算法、平台兼容性、更新频率等。
网易云音乐
QQ 音乐
酷狗音乐
Spotify
Soundcloud
自选
✈Open source is FREE!
在本题目中,你将有机会深入分析一个自己感兴趣的开源软件,并通过与功能类似的竞品进行比较,深刻理解开源软件在软件工程中的设计原则和实践。你还可能有机会参与开源社区,发现潜在问题并提供有益的改进建议,为软件的不断完善做出积极贡献!请你自由选择 一个 你感兴趣的开源软件进行深入分析,并选取 一个或多个 与之功能类似的商业竞品(亦需要是开源软件)进行对比研究。
你可以从功能特性角度出发,深入研究开源软件的功能特性,包括但不限于核心功能、扩展功能、用户界面设计等,对比竞品,分析它们在功能上的异同,重点关注哪些特性可能是用户选择软件的决定因素;你也可以调查开源软件的性能和稳定性,比较它与竞品在运行时的表现,等等。
如果你从未了解过开源软件,又对此题目感兴趣,可以参考 链接 中的指引寻找感兴趣的开源软件。
课程组鼓励选择此题目的同学主动参与软件社区,根据你完成作业时分析得到的问题或可改进之处,向开发者或者社区提出问题反馈和改进建议,并进一步探讨你的建议如何有助于软件的进步。如果你的反馈得到了回应,欢迎你将它附到作业中。同时,也希望你在今后的技术生涯中有机会持续参与到开源社区中去!
😥还差多少?
请你评测 CSDN 上的技能树功能(python 技能树,CS 入门技能树, C 技能树 等等),并重点对照 项目成员对自己产品的期待 完成评测。 你觉得这个产品目前的状态完成了哪些既定目标?离原来的期望又还差哪些方面?
🧠团队项目选题所针对的软件的案例分析
请选择本团队预定选题相关领域的软件案例进行分析,需要选择 至少两个 软件。
请参照教材中关于以下方面的内容:软件的 bug,功能评测,黑箱测试,第 8 章用户调研,12 章软件的用户体验)
请根据上述选题,选择一个软件完成以下任务:
软件使用:使用 10 ~ 30 分钟这个软件的基本功能(请上传使用软件的照片)
软件分析:描述产品使用的基本流程,是否能够解决用户的需求?软件在数据量/界面/功能/准确度/用户体验上各有什么优缺点?
改进意见:对产品有什么改进意见?
用户调研:进行一次用户调研:请将采访过程以图片和文字的方式记录下来,且要求采访对象为其他软工班级的学生。请至少记录以下内容:
采访对象的背景,为什么选择这个人采访?TA 的需求是什么?
采访对象实际使用的产品栏目
采访对象使用软件的过程中会遇到的问题和亮点
采访对象觉得从用户体验的角度来说需要改进的地方有哪些?
评测结论:经过这么多工作,你一定有充分的理由给这个软件下一个评价:
请选择一个结论。
思考 :除了定性的结论,是否能有定量的结论(就像最近比较时髦的手机评测那样,跑个分),如何定量地评价一个软件?
请看这个链接,了解如何 从多个维度 对软件进行定量的测评:
针对你所选择的软件,找出 至少 2 个功能性 bug。须用专业的语言描述,其中必须包含以下内容(为方便说明,Bug 和改进点在接下来的章节中统称 Bug):
测试环境:如使用的操作系统环境和版本,浏览器环境和版本,以及发生的时间段及前因后果等(简述为主,但是需要说清楚基本环境和条件)
可复现性及具体复现步骤 :对于可复现性,需要说明是必然发生,还是偶尔发生,还是满足某些特定条件下会发生。
对于偶尔发生的 Bug,须做多次测试并说明发生频率(例如 300 次测试中发生了 45 次)
对于满足特定条件下发生的 Bug,须详细且精准描述发生条件
对于情况较为复杂的可复现性情况,须绘制必要的图表进行详细数据分析(例如频率分布直方图,对于多因素的分析可以使用三维图,甚至使用 SPSS 等软件进行分析)
对于复现步骤,需要按照流程顺序,或者绘制流程图进行详细描述,并确保这一情况可以被复现且符合上述全部描述。
Bug 具体情况描述 :
Bug 分析:
Bug 的可能成因,需要作出足以自圆其说的分析,并可以类比与之相似的情况或个人项目经历
Bug 的严重性
需要从系统功能、安全性以及用户体验这三个或更多维度上进行分析
给出一个可量化的指标(比如星数),并说明理由
此外,建议 在全部 Bug 描述开始前,详细说明各个指标的量化标准,以便后续的说明和探讨。(例如五颗星是致命性系统故障、致命性安全性漏洞、用户体验严重影响;四颗星是严重系统故障、服务器鉴权漏洞或重要数据泄露、用户体验较差等)言之有理即可。
你发现的 bug,为何软件团队不能在发布前修复?他们是不知道,还是有意不修复?你觉得是什么原因?可以从下面的可能性中选取几个:
对用户需求掌握不好
具体的设计质量不高
开发人员粗心大意
测试把关不严,敷衍了事,没有注意在特殊的配置或环境下测试
其他(并给出你认为的原因)
BUG 改进建议:
Bug 反馈(可选加分项):
如果你已经确定找到的 Bug 可复现,确实不是 Feature 或者乌龙,并且能让其他人也验证该 Bug 的存在,我们非常鼓励你你向开发团队提出 issue,请参考这个Github 上的 issue,用 简洁准确 的语言进行描述。
在书上我们看到:
程序 = 算法 + 数据结构
软件 = 程序 + 软件工程(软件服务还有数据,内容的因素)
软件企业 = 软件 + 商业模式
请完成以下两点任务:
工作量分析:使用此服务的所有功能,估计这个软件/网站/服务做到这个程度大约需要多少时间(团队人数 6 人左右,计算机大学毕业生,并有专业 UI 支持)。(必答)
软件质量分析:
参考教材第 8 章功能的定位和优先级、第 9 章项目经理
这个软件/网站/服务有很多可以提高的部分,如果你是新上任的项目经理,如何提高从而在竞争中胜出?请针对以下的问题进行思考:
市场现状:
市场与产品生态:
产品规划:
对于上述市场现状以及市场与产品生态部分,并在每个部分中 选择的回答至少三分之二的问题,做到有充足的证据支持并自圆其说;对于产品规划部分,请做好完整的回答并阐述理由。以上内容均发布在自己的个人博客上面。
从上面提供的 5 类候选软件中 至少选择一类,对其优缺点进行系统分析。
本次作业的 分数为 15 分。
加分项:
注意:
评分时按照所选的软件产品进行 分类评分。同一类产品分析中,会按照优秀、良好、中等、较差进行分级给分。
基于上一条,对于已经有大量人选的题目,如果分析没有出彩之处,将会影响得分,请选题时务必充分考虑。