软件工程是建造软件的学问。软件在我们的生活里很常见。手机里的程序是软件。电脑上的系统是软件。超市的收银机器也有软件。软件工程就是研究如何做出好软件的方法。做软件不是随便写几行代码。它需要计划、设计、测试和维护。这个过程就像盖房子。盖房子要先画图纸。做软件也要先想清楚要做什么。画图纸是设计。写代码是施工。测试是检查房子牢不牢。维护是房子旧了要修理。软件工程关注整个盖房子的过程。
参考文献是软件工程的重要部分。参考文献是别人写的书和文章。这些书和文章记录了做软件的经验和方法。学习软件工程一定要看参考文献。不看参考文献就像盖房子不看图纸。你会犯别人犯过的错误。你会走别人走过的弯路。参考文献告诉你什么方法好用。什么方法不好用。它节省你的时间。它提高你的效率。
最早的软件工程参考文献出现在二十世纪六十年代。那时候的电脑很大。软件很小。但是软件问题已经出现。软件常常出错。软件很难修改。软件成本很高。一九六八年的一次会议提出了“软件工程”这个词。人们希望用工程的方法管理软件。工程的方法就是系统的方法。就是有步骤的方法。就是可重复的方法。从那以后很多人开始研究软件工程。他们写了很多书和文章。这些文献成了软件工程的基础。
软件工程参考文献有很多种类。第一类是教科书。教科书介绍软件工程的基本知识。比如需求分析是什么。设计模式是什么。测试方法有哪些。教科书是给学生看的。它讲得比较全面。也比较简单。第二类是研究论文。研究论文发表在学术会议上。发表在学术期刊上。研究论文讲新的想法。新的技术。新的工具。研究论文是给研究人员看的。它讲得比较深。比较专。第三类是实践指南。实践指南是公司或专家写的。它讲实际做项目的经验。比如怎么管理团队。怎么控制进度。怎么保证质量。实践指南是给工程师看的。它讲得比较实用。比较直接。
看参考文献要有选择。软件工程发展很快。有些旧的方法已经过时。比如瀑布模型。瀑布模型要求按顺序做软件。先完成需求。再完成设计。然后写代码。最后测试。每一步不能回头。这种方法现在用得少了。因为软件需求经常变化。需求变了就要改设计。设计改了就要改代码。瀑布模型改起来很麻烦。现在流行敏捷方法。敏捷方法把软件分成很多小部分。一部分一部分地做。做完一部分就交给用户看。用户提意见。马上修改。这样软件更符合用户的需要。看参考文献要看新的。看经典的。经典的书和文章经过时间考验。它们讲的是根本的道理。根本的道理不会过时。
参考文献帮助解决实际问题。做软件的时候会遇到困难。比如用户说不清想要什么。这是需求问题。参考文献告诉你怎么办。你可以和用户多聊天。你可以画原型图给用户看。你可以先做一个小版本让用户试用。这些方法都是参考文献里写的。又比如代码很乱很难改。这是设计问题。参考文献告诉你要模块化。模块化就是把软件分成小块。每一块负责一个功能。块与块之间接口清楚。这样修改一块不影响其他块。还比如软件总是有漏洞。这是测试问题。参考文献告诉你要多测试。要早测试。要写测试用例。要用工具测试。要请用户一起测试。
参考文献也帮助学习新东西。软件技术一直在更新。新的编程语言出现。新的开发工具出现。新的框架出现。学习这些新东西要看文档。文档也是参考文献的一种。好的文档讲得清楚。有例子。有步骤。照着做就能学会。除了文档还有技术博客。技术博客是工程师写的经验分享。它们讲得更生动。更有细节。看技术博客可以学到小技巧。可以避开常见的坑。
软件工程的参考文献很多。一个人不可能全部看完。要学会查找参考文献。图书馆有软件工程的书。互联网有软件工程的资料。学术网站有研究论文。技术网站有实践文章。查找参考文献要用关键词。比如你想学设计模式。你就搜索“设计模式”。你会找到很多资料。你要判断资料的质量。看作者是不是专家。看出版社是不是可靠。看日期是不是最近。看内容是不是正确。看别人的评价好不好。
参考文献需要批判地看。不是书里写的都是对的。不同的书有不同的观点。有的书说这种方法好。有的书说这种方法不好。你要思考为什么。你要结合自己的情况。你的项目是大项目还是小项目。你的团队是熟手还是新手。你的时间是很紧还是宽松。条件不同方法就不同。参考文献给你选择。你自己做决定。
写软件工程的文章也要用参考文献。你提出一个观点。最好引用参考文献。这样你的观点更有力。别人可以查到你观点的来源。引用要规范。要写明作者、书名、出版时间、页码。规范引用是对原作者的尊重。也是对自己工作的负责。
软件工程离不开参考文献。新手通过参考文献入门。高手通过参考文献提高。项目通过参考文献成功。软件工程是一个积累的学科。前人总结经验。后人学习经验。再总结新的经验。这样软件才能越做越好。软件才能更好地服务我们的生活。