题目
很多同学有误解:
软件工程课是否就是理论课?
或者是几个牛人拼命写代码,其他人打酱油的课?
要不然就是学习一个程序语言,搞一个职业培训的课?
都不对!软件工程有理论,有实践,更重要的是分析,思辨,总结。在课程中,自己组织团队写一个软件,然后分析,这样能根据切身体会来分析,很有价值,但也有可能“身在此山中”,未能看清全局。而且,课程时间有限,我们也不能做很多具体的项目。因此,我们也需要从间接经验中学习,分析。别人的项目的成败同样能够给我们很多启发!
我们生活中很多时候要和软件打交道,大家上课开小差时候玩的手机游戏,买火车票的网站,互相联系用的微信、QQ,等等都是软件,都很值得分析。
你为何成为它们的用户?
它们的团队做对了什么,做错了什么?
如果你来做,会做得更好么?
通过各种案例分析,评测,辩论,总结,我们就能看到软件工程的原则在实践中的种种体现,学好软件工程,帮助我们在实践中做得更好。
第一部分:调研, 评测
1.下载并使用,描述最简单直观的个人第一次上手体验。
集大通是一个专门为集美大学学生设计的app。第一次使用的时候觉得它功能很多,对我们学生生活和学习都有涉及。当时也在app上解决了很对萌新的问题。但是后来 使用发现他非常的卡,功能方面非常不完善。
2.按照《构建之法》13.1节描述的 bug 定义, 找出几个功能性的比较严重的 bug,至少2个。
(1)bug1:课程便界面设计的很让人讨厌
1. 首先那个领取红包是什么意思,有打广告的意思啊,点进去发现不是广告,他在这边我觉得很不舒服,我觉得这就是设计者的疏忽,这个东西放在了不该放的地方(ui设计的问题)
2. 第二个就是这个课程表,他根本就不是我的课程表啊,是不是后台向数据库取数据的额时候逻辑弄错了,取了我们班所有人的课程了呢?
3. 还有这和界面显示了4天是什么鬼呢,让人看得很不方便,UI设计严重缺陷。
(2)bug2.支付功能很鸡肋
为什么这边交了费还要去领款,这样不会很麻烦吗,为什么不可以直接像外面店铺那样简单呢?
(3)bug3.新闻不新
‘这个是新闻栏目排在前几个的新闻,居然是去年的,我还以为我穿越了呢。就算这个没人看,也有必要完善一点吧。‘
(4)bug4:内容不更新
这个界面自从我用这个软件以来就没有变过,我都觉得他是个静态页面。为什么不动态提供更多的信息呢。一直都i这个还不如去掉
(5)bug:速度太慢
这个一直都是非常的卡,感觉有时间都可以去图书馆查询了。是数据库优化做的不行,还是数据库性能不行呢?有待改善。
3.相信每个同学的朋友中一定有人需要用这样的软件, 选择一个朋友(用户)进行采访,并加以记载。
1.介绍采访对象的背景和需求(他们为何要使用该软件,例如开博客,读博客,给博客点评,她有什么痛点,她还有别的需求么)
- 对象:室友
- 用途:查成绩,查课表,查图书馆藏,查余额
痛点:加载速度太慢
2.让采访对象使用10 – 30 分钟该APP的功能 (请上传照片证明用户的确正在使用, 远程采访的同学请让别人帮忙照相)
3.描述用户使用这个产品的过程,用户的问题解决了么?软件在数据量/界面/功能/准确度上各有什么优缺点?用户体验方面有问题么?
改变是不可能改变的,除非相关人员去优化,否则是永远不会改变的
优缺点:优点是专门为我们设计的,很多功能跟我们的需求对口。数据量大,UI界面马马虎虎,精准度做的不够好。
用户体验:比较差,但是也还是能够解决部分问题,属于不可或缺的app
4.用户对产品有什么改进意见?
‘改进意见:界面设计的更加美观点,界面”动态“起来,加载优化,让他速度稍微快点。’
5.请选择一个结论:经过这么多工作,你一定有充分的理由给这个软件下一个评价:
从前我没得选,如果给我一次选择的机会,我会换了它。
第二部分:分析
1.使用此软件的所有功能 , 估计这个项目做到这个程度大约需要多少时间 (团队人数6 人左右, 计算机大学毕业生, 并有专业UI 支持)。
- 需求调研2-3周
- 需求分析1周
- 系统设计1-2周
- 软件编码3个月
软件测试2.5个月
2.不要写成一个罗列功能的流水单子! 而是要集中火力在一个场景,这个场景中典型用户有什么需求,软件如何解决了需求(或者没解决),UX 有什么细节是好的,差的,请结合书上UX的内容来分析。
- 需求:在集大通上获得复习资料。
- 适用人群:临近考试但是没有具体复习计划的小伙伴。
平时小伙伴们也能随时随地的打开app学习知识,利用碎片时间来学习。
3.你在第一部分发现的bug,为何软件团队不能在发布前修复?他们是不知道,还是有意不修复?你觉得是什么原因?从下面的可能性中选取几个:
- 对用户需求掌握不好
- 具体的设计质量不高
- 开发人员粗心大意
- 测试把关不严,敷衍了事,没有注意在特殊的配置或环境下测试
其他
第一个可能是当时设计的质量不高,第二个是对用户需求掌握不高,第三个是后期内容没跟上,没有做到动态更新,第四个是具体设计质量不高,第五个是设计质量不高,或者是没有选择合适的数据库。
4.团队在哪一个层次还有问题? 可以把自己想问软件团队的问题都列出来, 也许就能得到团队的亲自解答了!
如果团队成员能力参差不齐,怎么样才能让每个成员参与进来,都能有收获,临时去学似乎不太现实
5.从各方面的问题,推理出这个软件团队在软件工程方面可以提高的一个重要方面 (具体建议)。
UI界面可以设计的更加美观,同时加载速度太慢了。
第三部分:建议和规划
(参考《构建之法》第8章功能的定位和优先级;第9章项目经理)
1.这个软件/网站/服务有很多可以提高的部分, 如果你是项目经理,如何提高从而在竞争中胜出?
优化学生常用功能:查课表,查成绩,朋友圈交流。其他比较鸡肋的功能可以下线同时提高加载速度。
2.目前市场上有什么样的产品了?
基本每个学校都有类似的app
3.作为新的项目经理,这个产品的核心用户群是什么样的人, 典型用户长什么样?学历,年龄,专业,爱好,收入,表面需求,潜在需求都是什么?
核心用户群和典型用户:在校大学生 年龄分布: 17岁到24岁,专业:all,表面需求是查成绩、查课表、朋友圈交流 潜在需求:在线学习
4.功能:你要设计什么样的功能? 为何要做这个功能,而不是其他功能? 为什么用户会用你的产品/功能? 你的创新在哪里? 可以用 NABCD 分析(http://www.cnblogs.com/xinz/archive/2010/12/01/1893323.html)
N (Need 需求)
学生的主要任务就是学习,目前我们会有许多碎片时间,如果把他用于学习上,对于我们的成长会有很大作用。
A (Approach 做法)
针对每个专业,提供老师所用ppt或者一些辅导资料,让同学们打开就能获得资源。
B (Benefit 好处)
很好的利用碎片化时间
- D (Delivery 交付)
发布就好,基本在校学生都会下载这个app。
C (Competitors 竞争)
市场上有多辅助学习的应用,但是我们设计的这个功能是具有针对性的,你平时学什么,有不懂得,这里都能找到答案。
D (Delivery 交付)
发布就好,基本在校学生都会下载这个app。
5.如果你有钱可以招聘 6 个人, 有 4 个月的时间, 你作为项目经理, 应该如何配置角色 (开发, 测试,美工等等)?
- 第一周:需求调研
- 第二周:需求分析,任务分配
- 第三周:程序设计文案(共同交流)
- 第四周~第十周:美工分配1-2人,数据库数据以及优化1人,其余的人处理后台逻辑。
第十一周~十六周:3人进行测试,2人对产生的bug进行改善,1人对UI可能出现的问题优化
6.描述你的团队在16 周期间每周都要做什么,才能在第16周如期发布软件的改进版本,并取得预想中的成绩。
前三周进行需求分析的调研,系统的设计,人员的分配,用7到8周的时间对相应系统编写,后面的时间测试,优化。