结合软件工程课 谈谈最近阅读的所想所得 -- 个人阅读作业2

  最近读了老师推荐的一篇经典论文《没有银弹》,了解学习了网上关于相关内容的相关知识。同时读了关于产品方面的书籍《人人都是产品经理》。下面就写写我的学习笔记。

  首先,我来说说这篇《没有银弹》写了什么。首先,它指出了一个现实,那就是计算机软件的发展速度要远低于计算机硬件的更新速度,而这不是因为软件更新的太慢而是因为硬件太快了。而要让软件也快速发展,必须找到所谓的“银弹”。

  接着他将计算机软件工程中的困难分类:

  根本的:软件特性中固有的困难,次要的:出现在目前生产中,但是并非与生俱来的困难。他是这么描述这两种困难的:"我认为软件开发中困难的部分是规格说明、设计和测试这些概念上的结构,而不是对概念进行表达和对实现逼真程度进行验证。当然,我们还是会犯一些语法错误,但是与绝大多数系统中的概念错误相比,它们是微不足道的。"

  为什么根本困难无法规避呢?因为对于计算机软件,有着无法规避的内在特性:复杂度,一致性,可变性,不可见性。而这些,是通过一些规范化的方法无法克服的,他给出的解决办法是:培养优秀的设计人员。即人脑思维的问题,最终还是需要由人来解决。

  这篇论文的说法有人支持有人反对,无论怎样,事实是软件工程发展的这几年,我们尝试了不同的软件开发方式,可软件开发的进度像绝大多数的产业一样,确实没有像硬件一样飞速提高。在软件工程领域,我们形成了不同开发方法,下面介绍一下我理解的瀑布式开发和敏捷开发。

  瀑布式开发:流程性的开发模式,把项目分解为有限地阶段、估算时间,并按顺序执行。优点:对项目估计方便,项目的目的性明确。缺点:对开发人员要求过高,评估容易不准确。无法及时反馈与修改。

  敏捷开发:一种以人为本、拥抱变化、崇尚简单地开发方式。以迭代更新为基本流程,可以认为是将瀑布式开发分解为更小的迭代周期,实时更新实时运行。

  

  在我们这一周多完成软件工程作业的过程中,我们在老师的要求下也开始尝试使用敏捷开发的相关思想和流程。因为我们是有了一个比较完整的程序,所以不断地测试、完善功能就是我们的主要任务,而完成这个任务的过程中,敏捷开发的思想真的很适合我们。我们每两三天就要召集所有成员开一次会,讨论我们上一周的期的完成情况,同时探讨有什么需要更新的功能,在完成会议后,分配任务并且迅速进行下一轮的迭代,迅速高效,及时反馈任何BUG或新功能的问题,对我们的产品完善有很大的帮助。

  而作为我们小组的“产品经理”,我的感受是,在学校做软件和在企业做软件感觉是不一样的。首先,我们的爬虫系统更像是一个项目而非产品。因为它不是一个完整的可以供用户长期使用不断完善的产品,更像是一个有明确目的,实现爬虫功能的项目。同时,它不像产品一样有特定的用户需求,我们的用户只有下一个组的成员,而他们也是边学边了解边做,所以我们并不能完全地调查用户需求并改进我们的产品。所以我们的项目进行方式是凭我们对产品的了解,“臆想”出可能需要的产品需求,将产品做的更完善一些。这样的方法更适合我们现在的处境。

  我们的上课方式与前大班不一样,任务量更重更麻烦。虽然嘴上经常吐槽,但是心里感觉这样的上课方式还是挺好的,能让我对现在的产品开发方式,互联网公司的企业流程有一个直观的了解,对于我们今后工作有很大的帮助。

  所以,努力学习,加油!

posted @ 2014-11-12 17:08  不慎独不成活  阅读(167)  评论(0编辑  收藏  举报