构建之法阅读笔记01
有幸拜读邹欣老师的关于软件工程的数目--《构建之法》,感触颇多,做次阅读笔记以进行记录。
一、什么是软件工程
总所周知,“程序=数据+算法”,这是关于所有程序员的一个常识,那么,什么是一个软件呢?
这个问题是我在上软件工程这门课程时所存在的一个疑问。以前总是认为软件,就是一个可以供人们使用的可以解决我们生活中问题的简单方法的集合,来连接我们与虚拟世界的联系。但是,我们应该对软件有一个更加系统的认识--“软件=程序+软件工程”,那么,什么是软件工程呢?
在书中,邹欣老师对这个问题进行了回答:“软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。”它包括以下领域:“软件需求分析、软件设计、软件构建、软件测试和软件维护。”与他相关的学科有:“计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户界面设计。”在写一个软件的时候,我们是一定要与上述各方面所接触的,这是我原先始料未及的事情。如果要真正的做出一个软件,那么我们就一定要从各方面去考量我们需要的东西,这让我想起了我们以前做法,只是为了编程而去编程,根本没有区具体的分析我们写这个程序是为了干什么。以前想过做一个软件,但是,我们真的做好了做一个软件的准备了吗?
二、怎样开发一个个人软件
要想真正的开发一个软件,首先,你得是一个合格的软件工程师。每个工程师在软件开发的时候对其生命周期都有一个具体的流程,邹欣老师就在书中的第二章为我们介绍了PSP(Personal Software Pro-cess,个人软开发流程)。只有我们在能够独立的完成个人开发的流程,成为一个合格的软件工程师的时候,我们才可以参与到团队中,一同开发一个完整的优秀的项目。
在开发软软件的过程中,我们要做到实时测试,也就是单元测试,将目标程序分解成一点一点的小的部分,对每一部分进行测试,这对于我来说,当我拿到一个简单的代码的时候会不自觉去做的事情。首先,,我自我感觉自己的编程能力并不是很强,很多时候我会在编程的时候去在写一些输出语句来验证自己的程序在当前部分是正确的。虽然没有邹欣老师说的那样很严谨,但是我还是感觉这是一个比较好的习惯。
其次,我们要想做一个软件,要学会用一些工具,也要建立属于自己的工具库。开发一个软件是一个耗时耗力的工作,我们必须学会找到方便的工具去使我们在解决问题的时候更加的方便,同时,也要使自己的程序在性能方面更加的优越。
三、软件工程师的职业发展是什么
在《构建之法》中,邹欣老师给出了我们明确的指向。首先,要想成为一个合格的软件工程师,我们必须要走的就是考级之路。这点学长也给过我们这样的建议。其次,有Steve McConnell,大公司的培养,自我评估等。后面几项到现在为止也没有很深的接触过,会在这些方面做一些了解与学习。