zoukankan      html  css  js  c++  java
  • [2017BUAA软工]提问回顾

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

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

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

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

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

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

    问题四:关于代码规范

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

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

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

    知识点

    1. 需求阶段

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

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

    2. 设计阶段

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

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

    3. 实现阶段

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

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

    4. 测试阶段

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

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

    5. 发布阶段

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

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

    6. 维护阶段

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

    • 我们建立了用户群,用户遇到问题可以和开发人员一对一进行沟通,这为用户反馈提供了不少便利,同时我们也能更清晰地了解到用户的真实想法。
  • 相关阅读:
    AS将一个项目导入到另一个项目中
    Android Studio出现:Cause: unable to find valid certification path to requested target
    小米手机Toast带app名称
    PopupWindow 点击外部区域无法关闭的问题
    EditText inputType类型整理
    Fragment通过接口回调向父Activity传值
    Android selector一些坑
    Installation failed with message Failed to commit install session 634765663 with command cmd package
    旷视上海研究院机器人方向招聘
    语义SLAM的数据关联和语义定位(四)多目标测量概率模型
  • 原文地址:https://www.cnblogs.com/slontia/p/8284335.html
Copyright © 2011-2022 走看看