构建之法-阅读笔记1
什么是好的软件?一些同学认为,所谓好软件,就是软件没有缺陷(Bug),所谓软件工程,就是把软件中的Bug都消灭掉的过程。这的确是抓住了软件工程的一个要素。和软件打交道的专业人士都知道软件有“Bug”(缺陷),软件团队的很多人都整天和Bug打交道,Bug的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。 ——P15 很多人认为有Bug就是质量不合格,没有Bug就是质量完美,其实这也未必。我们在大街上看到很多小汽车,这些汽车出厂时都通过了各自的质量检测,符合行业的质量标准。但是你问路人哪些车的“质量好”,很多人会告诉你有些车的质量大大好于另外一些车,那为什么还有人买那些质量“不够好”的汽车呢?对于某些顾客来说,某一类的汽车满足了他们的需求,他们就会买。如果销售人员不经市场调研胡乱推销自己公司的汽车,最后销量未必理想。 市面上有这么多不完美的产品,软件团队为什么还要把这些不完美的软件发布出来呢?为什么不能等到它们完美之后再发布?**软件工程的一个重要任务,就是要决定一个软件在什么时候能“足够好”,可以发布。
①软件=程序+软件工程:正是因为对软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理)相关的内容的完成,才能完成把整个程序转化成为一个可用的软件的过程。
扩展的推论:软件企业=软件+商业模式
②软件开发的不同阶段:玩具阶段→业余爱好阶段→探索阶段→成熟的产业阶段
③软件所具有的特殊性:复杂性、不可见性、易变性、服从性、非连续性(由软件的本质所决定的)
软件还有其他特性:
·有许多不同的程序设计语言、软件工具和软件开发平台
·存在许多不同的软件开发流程
·软件团队中存在许多不同的角色
·软件通常既可以存储在磁带上,也可以存储在CD/DVD上
④作者邹欣总结的自己做过的项目的各自特点:
• Build To Learn:开发软件,构建系统的目的是做进一步的试验,试图发现客观规律或某个试验方法的优点与缺点。这些项目经常是科研论文的基础工作。
• Build To Show:为了突出地展现某个技术的作用,开发一些演示为目的的软件,这些项目很吸引眼球,经常获得新闻报道,但是功能未必全面。
• Build To Serve:为了服务一定范围的目标用户而构建的工具等,有时以公开的SDK形式发布。
• Build To Win:以在市场上赢得用户为目标而构建的软件。这也是种种科学发现,技术突破最好的试金石。这是我在研究院之外的十余年中做的最多的项目类型,也是这本书的英文名字。

浙公网安备 33010602011771号