很多程序员都知道一句名言:“程序=数据结构+算法”,其实还有很重要的后半句,即:“软件=程序+软件工程”。
如果把开发程序作为安身立命的手段,那么就需要知道,仅程序本身不能成为一个具有商业价值的产品,需要形成一个完整的软件产品。除了能够正确运行并得到预期结果的程序以外,还需要对应的说明文档,以及一系列的后续服务,比如修复原有Bug,应对新的需求等。凡此种种,都需要一个合理的工程化手段去保证执行,即软件工程。
第1章,概述了什么是软件工程,以及为什么需要软件工程,提纲挈领地做了指引。
软件开发的不同阶段:玩具阶段→业余爱好阶段→探索阶段→成熟的产业阶段
软件所具有的特殊性:复杂性、不可见性、易变性、服从性、非连续性(由软件的本质所决定的)
软件还有其他特性:
有许多不同的程序设计语言、软件工具和软件开发平台
存在许多不同的软件开发流程
软件团队中存在许多不同的角色
软件通常既可以存储在磁带上,也可以存储在CD/DVD上
作者邹欣总结的自己做过的项目的各自特点:
Build To Learn:开发软件,构建系统的目的是做进一步的试验,试图发现客观规律或某个试验方法的优点与缺点。这些项目经常是科研论文的基础工作。
Build To Show:为了突出地展现某个技术的作用,开发一些演示为目的的软件,这些项目很吸引眼球,经常获得新闻报道,但是功能未必全面。
Build To Serve:为了服务一定范围的目标用户而构建的工具等,有时以公开的SDK形式发布。
Build To Win:以在市场上赢得用户为目标而构建的软件。这也是种种科学发现,技术突破最好的试金石。这是我在研究院之外的十余年中做的最多的项目类型,也是这本书的英文名字。