[2017BUAA软工]提问回顾

问题一:开发成本和产品安全性之间应该如何抉择?

  我在提问中曾经认为,是否实现某个功能是要根据其价值期望(被使用的概率 * 它的重要性)来决定,这也体现在了这学期的团队项目中。我们最终没有实现修改密码的功能,因为它对用户的重要性并不大,尽管不实现修改密码的功能会为账号带来一定风险,但其实一些核心功能不需要登录也可以使用,账户的价值并没有那么高,用户修改密码的可能性很低。于是我们计划将精力主要放在对原有功能的扩展,已达到提高用户量的目的。但我们并不是完全忽视了用户账号的安全性,而是先采取了一种成本较低的处理方式,简单实现一个邮箱认证的功能,若有需要再进行扩展,算是平衡了开发成本与产品安全性。
  

问题二:单元测试的正确性应该如何保证?是否还需要写一个单元测试去检测单元测试呢?

  测试应该和需求联系在一起,需求是怎样的,就应该怎样进行测试,不应该涉及过多实现过程中的逻辑部分。
  

问题三:程序的可扩展性与运行效率应当如何取舍?

  跑得快不一定跑得稳。软件工程不是仅仅做一个小程序,而是会涉及大量的需求变动,因此良好的可扩展性是十分必要的,只要不是严重影响性能,还是应该尽量保证结构的清晰性和灵活性。
  

问题四:关于代码规范

  我认为代码规范主要在于保持代码风格的一致性,提高代码的阅读性,而不是提高编码的效率。如果是个人项目,自然是可以选用一种舒服的代码风格,包括goto语句,只要遵循自己的代码规范就可以。然而在团队项目中,个性的代码风格会导致不习惯于该风格的人阅读体验的下降,影响团队开发的效率。对于问题中提到的goto语句,虽然正确的使用方式也许不会对破坏代码的结构,但并不是所有人都习惯于这种书写方式。因此在个人项目中,是否使用goto语句属于个人的喜好,但是在团队项目中就必须要考虑所有组员的情况,采用最普遍的编码风格。
  

问题五:是不是一个非团队,如果能够实现利益的共同化,就可以变成一个团队呢?

  我认为并不是,因为利益(目标)一致不是维持一个团队的充分条件,而是必要条件,因为实现同一个目标是有多种途径的。我认为一个团队还需要每名成员有着良好的责任感,以及对彼此的信任、帮助与支持,虽然这些都是建立在目标一致的基础上,但是要做到却很困难。
  

知识点

1. 需求阶段

通过调研等方式了解用户的需求,同时要着重考虑痛点是什么,与其它主流软件的区别是什么,不然很难取得竞争的优势。

  • 团队项目开始前的选题阶段就在思考用户使用我们产品的理由,一个课程资源发布的网站相比于课程中心、QQ群等到底好在哪里。经过了一些思考之后,感觉最需要注重的地方就是“方便”,课程中心需要登录,QQ群中的文件有时不是永久的资源,而最终实现的资源共享平台无需登录就可以下载,并且也包含了大部分课程的资源,后来还添加了“课程收藏”等功能,相比于课程中心和QQ群确实方便了一些。

2. 设计阶段

通过说明文档与原型图将脑海中的设计落实到文字与图像,使思路更佳清晰,同时也为实现做好准备。

  • 在个人项目和结对项目中,所有的设计基本都是靠凭空想象,明显感觉到这种设计方式太耗费精力和时间了。其实设计的过程也是思考的过程,涉及到很多选择和否定,而将设计落实到文字与图像其实也是思维过程的具现化,可以提高不少效率。

3. 实现阶段

保证文档的可靠性十分重要,齐全的文档可以作为实现的依据,提高软件工程的效率。在分配任务的时候也应当明确说明输入和输出的格式,明确需求。

  • Alpha阶段我们分配任务的效率非常低,主要原因是需求的不明确,而且有时候想要确定某一功能的具体作用,需要阅读代码才能明白一些细节,十分麻烦。Beta阶段中在分配任务之前都会补充文档,供开发人员参考,效率确实提高了。

4. 测试阶段

针对功能进行单元测试,并通过回归测试验证是否存在“倒退”的现象。

  • 在上学期的OO课程中,单元测试是在最后几周讲的。此前若干次作业都是把测试样例记在一个txt上,时不时就自己测一遍,十分花费时间,以至于到了后来干脆直接整个做完之后再一起测试,导致不能及时定位bug出现的原因。在编写数独的时候,明显感受到单元测试是多么方便,每一次优化之后都能检测是否影响了正确性,减少了处理bug的花销。

5. 发布阶段

发布应当及时,且应当多渠道推广

  • Beta阶段相比于Alpha阶段用户量上涨的原因之一就是发布渠道增多了,不单单是在朋友圈中发布,依靠用户去推广,而是通过同袍、微信公众号等平台去推广,推广后的几天里用户量增长十分明显。这让我感觉到推广有时并不完全依靠自己的力量,和其它平台进行合作也是很重要的,比如同袍网站,我们使用同袍第三方登录的接口,其实是在帮助同袍进行宣传,而同时同袍也会向用户宣传iCourse,双方都实现了宣传的目的。

6. 维护阶段

通过建立用户群和发布调查问卷获取用户反馈

  • 我们建立了用户群,用户遇到问题可以和开发人员一对一进行沟通,这为用户反馈提供了不少便利,同时我们也能更清晰地了解到用户的真实想法。
posted @ 2018-01-14 20:59  森高Slontia  阅读(157)  评论(2编辑  收藏  举报