我是上海海洋大学的一名学生,专业是软件工程。软件工程对于我来说,是比较模糊的一个概念,大一下的时候学习了一门课程:软件工程,在这课上我学到的都是一些概念上的东西,记住了还是不太明白具体的用处,没有实际操作。希望读了《构建之法》这本书后,能有所收获吧,有一天能做出一个真正的软件。
构建之法,听起来挺无聊的一本书,在老师的要求下,我翻开了第一页。作为一个软件工程的学生,我觉得还是有必要看一看这本书。书的封面是鲁班锁,这倒是挺有意思的,鲁班锁从外部看,是严丝合缝的十字立方体,但各个部件在内部凹凸部分相互啮合,也是一种有意思的“构建之法”。
这周看了第一章:概论。一开始,书中就给出了一个观念,软件=程序+软件工程,程序=数据结构+算法。程序我倒是有点体会,从入学到现在,就是不停地在程序中度过,先是初步的学习算法,然后数据结构,但是这些东西让我觉得没什么用处,都是别人实现的东西,自己无法创造什么。软件应该是程序的放大版,程序是一行行的代码,而一个复杂的软件不但要有合理的架构、软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数等等,这些都是构建的过程。软件工程的核心部分有:构建管理、源代码管理、软件设计、软件测试、项目管理。所以就有了:软件=程序+软件工程,一个扩展的推论是:软件企业=软件+商业模式。
程序(算法、数据结构)是基本功,在算法和数据结构之上,软件工程决定了软件的质量。
“写程序”相当于是在构建软件。如同所有事物的发展,软件开发也有不同的阶段,从懵懵懂懂到逐步完善,从一开始的一个幻想到功能的实现。书中讲了一个例子很有意思,一个功能使用率是百万分之一,那么还需要做这个功能吗?这是飞机的安全功能,意外发生的概率很小,但我们还是需要做好对应措施,谁也不想自己的生命有危险。同样,在软件中,发生异常也需要相应的安全保护措施,保障我们的数据不被破坏。可见,做程序需要细心严谨、考虑周全。
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件是可以运行在计算机及电子设备中的指令和数据的有序集合。软件开发过程有几个难题:复杂性、不可见性、易变性、服从性、非连续性。软件工程的研究目标应该是人,这些人可以是项目需求的提供者,可以是软件的开发人员,还可以是软件的用户。
软件工程的目标:创造“足够好”的软件。希望在学习完这本书后,能够足够好。