学习了软件工程之后,我们只是大致了解了编写大型软件需要软件工程,否则就会遇到“软件危机”,具体的软件危机是什么,我们却不甚了解。大家熟悉软件工程经典的秋千图,它介绍了软件开发中个各种问题,看的时候不免觉得好笑,但是当你的软件足够大,这些问题就会出现在你的面前。
因为生产实习着重培养开发过程,软件工程是不可或缺的,现在我们进行到了需求分析这一步。于是我们依样画葫芦,按照老师提供的框架,分析(猜测)用户需求,实际采访用户,使用NABCD框架进行系统分析。
蓦然回首,需求分析之前还有两步:
1.问题确立——既然是开放性问题,各组随机选题,我们来做个游戏吧,模仿“‘欧几里得’”这款几何游戏就很不错,炫酷的文本编辑器没有太多可以实现的而且不太好玩,别的游戏都不好玩或者可能不好做,投票通过;
2.可行性分析——uwp中是可以用unity技术的,c#手写一个几何引擎应该也不难,可行;
在问题确立上与可行性分析之中,埋藏了一个很大的坑,不过相信我们有能力来解决这个问题,那么不用回头了,专心做需求分析吧。
我们的需求分析都做完了,才想起需求分析到底要做什么:设计人员根据需求设计软件的界面、功能、接口,实现人员要根据需求实现自己心目中的设计,假设不会过度需求分析的情况下,需求分析至少能保证我们的秋千尽可能的接近用户心中的那个轮胎。不过,如果没有“欧几里得”这款游戏,我们能保证小组中的每个成员心中都有同一个“哈姆雷特”吗?能保证新加入成员时,他的心中也是这个“geomystery”吗?
综合以上考虑,我们将会把需求分析精细化,将我们这款软件的基础更加牢固,不过既然选择了极限编程模型,整体的文档体量会缩小一些,希望可以构建等比例缩小的软件工程金字塔。
需求分析正文:
需求从用户开始,游戏是人类的天性,每个人都喜欢玩游戏,游戏吸引人的地方在于不同的游戏有不同的乐趣,李如意惊险刺激,持续反馈,虚拟成就等等,我们做的这款游戏,最终的目的就是吸引人(开发者的希望)和好玩(用户的最求)。
因为我们并没有被某个公司委托,所以我们自身也客串用户。
N(Need, 需求)
·与老师探讨的过程中,出现了第一个需求:学习是不是也能像游戏一样吸引人。如果能把游戏和学习结合起来,比如在游戏中加入“即时反馈”系统,这也涉及到定位问题,我们的软件到底是一款游戏软件,还是一款学习软件,最终的讨论结果是,游戏(加上学习元素)。
·解密类游戏是一个吸引人的游戏类别,当然,解密游戏也有很多种,大家可以找到很多“密室逃脱”“侦探”小游戏,“古墓丽影”中的劳拉在探险的过程中也需要解决很多谜题,前一段时间风靡手机端的游戏“纪念碑谷”总给人一种柳暗花明之感,我们也可以制造一款解谜游戏。
·时间有限是开发人员的限制,大家都不想去编剧本,不想写角色扮演类游戏(RPG)解谜剧本,可以考虑纯粹一些的解谜。就像“宝石迷阵”“鳄鱼洗澡”游戏一样,创造一个环境,纯粹的解谜,这样可以把时间专注于编码开发而不是编剧。
·几何相对于物理类容易许多,不需要物理学中力学那样复杂的游戏引擎支持,定义一个坐标系,画直线圆,满足条件(例如玩家画出了一个圆的圆心,必须是推理画出来的,而不是随便画出来的)就可以过关。闯关!对,闯关类游戏,达成条件就能过关。
·有些玩家喜欢容易上手的关卡,有些玩家喜欢困难的挑战,这就是用户调研环节G用户提到的“难易比例适中”,合理的关卡设计能让用户玩的开心,增加游戏“黏度”。
·各个游戏总是有奇奇怪怪的成就系统,甚至扫雷也有:
成就系统有魔力,这是公认的,我们的软件也要有成就系统。
·组员C有舍友是游戏的资深玩家,组员C受到影响也经常玩这款游戏,给我们提供了一些额外的建议,有的关卡解法可能用户难以想到,而闯关通常是不允许用户跳跃的,这样会造成用户长久的卡在同一个地方,回想起“友商”“开心消消乐”的做法,软件需要有可以跳过关卡的功能,或者能有一些小提示。
·政策需求,软件需要满足一个国家地区的法律法规,我们的软件需要一个防沉迷系统。
·盈利系统是用户不需要甚至讨厌的,却是游戏开发商需要的,而我们作为软件的实际开发者,也会受到此影响,未来可能会有免费去广告,充值钻石,购买过关,购买提示等功能。
A(approach, 做法)
技术上我们需要一个能表达几何的方法,需要数学中的坐标系,几何定律,需要几何的元素(例如点线圆),这些凭我们所学的知识可以应付,然后我们需要在计算机中实现几何的方法,他们包括UWP、C#,但是光有这个还不够,我们发现Unity自身就可以写UWP程序(选项中选择提交到WINDOWS应用商店)不一定好学,DirectX可以让我们的程序更漂亮,但是DX有大量本级实现的细节,必须使用C++,而UWP的C++实现比较复杂,所以我们的计算机图形学还是通过C#来实现,那样的话我们的软件看起来可能会很“朴素”,并不吸引人。后来我们发现了NuGet中的Win2D它封装了DX,而且可以与XAML配合,正是我们需要的。还有一些技术来实现,就是图形计算需要解方程,而方程在计算机中的表达就是矩阵,这就意味着我们使用了线性代数。需要注意的是,交互方式设计对游戏体验影响很大,应该着重优化,
B(Benefit, 好处)
- 一款游戏,最重要的是带给玩家快乐,我们这款游戏关卡设计难易比例均衡,能让人愉快的继续玩下去;
- 寓教于乐是很多老师的追求,本款游戏可以实现,在游戏的过程中用户加深对几何的理解,数学几何轻轻松松拿100分;
- 自由模式以及经典画法演示开启了一扇崭新的大门,用户可以创造保存他们喜欢的“几何城堡”,这个图形是用数学描述的,和矢量图形一样,显而易见的好处就是放大缩小不会失真,这也算是一个小型的“几何画板”;
- 软件提供经典的几何算法的演示,比如尺规作正十七边形的动画演示,让热爱数学,热爱几何的人有独特的收获;
C(Competitors, 竞争)
我们选择“欧几里得”这款软件作为主要的竞争对手。
- 未被满足的需求:“缺个女朋友”(可以认为代表社交,联网需求,也可以认为是客户无理取闹),多语言支持,登录账号来保存进度,老玩家鼓励系统,历史上悬而未决的几何难题题库
- 平手:游戏模式设计,关卡设计,合理的提示,
- 我方优势:跳过关卡功能,"解析几何"功能,成就系统,计时系统,尺规作图动画演示
- 我方劣势:术语表,定理查询,记录保存与重现操作历史,历史成绩查询,模型实现以及算法优化,隐藏的第四颗星(优秀的关卡设计)
- 对用户无用的功能:防沉迷系统,盈利系统(广告,充值),精力系统(变相防沉迷,实际是盈利)
D(Delivery, 推广)
- 这一款软件是生产实习的作业,将会提交到WINDOWS AppStore
- 朋友之间的推广将会成为本游戏的第一批用户,这或许是我们的软件进入AppStore排行榜的关键
- 免费促销活动,将会吸引一批尝鲜的用户
- 我们没钱打广告
电梯演说
各位领导/投资人/合作伙伴: 我们的产品 <几何迷城 geomystery> 是为了解决N <游戏与学习不能兼得> 的痛苦, 他们需要C<通过游戏打发无聊的时间,同时还能兼顾学习>, 但是现有的方案并没有很好地解决这些需求,我们有独特的办法A,<例如尺规作图实践与游戏闯关结合>, 它能给用户带来好处B,<难易结合,定义严格,使用户着迷而不沉迷>, 远远超过竞争对手C<“欧几里得”>. 同时,我们有高效率的推广D方法:<发布到商店,限时免费>,能很快地让大部分用户知道我们的产品,并进一步传播。