第一章:概论
身为一个已经学了一年半计算机的软件工程专业的学生,从大一的C++课开始,老师就教导我们,程序=数据结构+算法。这个名言被一遍一遍地提到,以至于让我们产生一种错觉,好像我们只要搞懂数据结构和算法,所有程序就都不在话下了。但是,当我们看到我们前辈出现的一些疑问时,却让我们起了疑心:数据结构中常用的指针,在Java和其他的一些语言中似乎并没有;所有算法早就被你的前辈们写好了,你所要做的就是维护和调用,等等。
这都是我们就业后所要面临的问题,因此,软件工程概论这门课就显得尤为重要了,它可以帮助我们了解软件工程整体结构,了解其中的各个流程,使我们能够了解到我们今后将会遇到的问题,提前让我们熟悉这个行业,意识到自身所学真正的作用。
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。它包含多个领域,和多个学科相关。软件又有许多特性:复杂性、不可见性、易变性、服从性、非连续性。之后又给我们讲解了软件工程和计算机科学的不同之处。一个是偏理论,一个偏实践,两者并非水火不容,而是互相促进,共同发展的。而软件工程最主要的目标便是让我们学着去创造足够好的软件——用户满意度高,可靠性好,流程质量高,可维护性好。如果能知道了解这些,我们算是大体上认识了软件工程。
第二章:个人技术和流程
为了更好地开发软件,我们需要了解PSP(个人软件开发流程)。首先就是单元测试,软件是有多人合作完成的,我们写的模块不是仅仅为我们所用的,而是需要被其他人调用的。所以,在此过程中便容易会出现一些误解,进而产生一些错误。这时,为了保证模块的质量,单元测试就显得极为重要了。单元测试存在一系列标准:能测试一些最基本的功能和参数,测试应该交给熟悉了解此程序的人来完成,速度快,产生可重复一致的结果,独立,能覆盖所有的代码路径,可以进行保存和维护。还要记录自己的开发流程,以用来为以后提供经验和借鉴,并可以审视自己是否有所进步。
第三章:软件工程师的成长
软件开发流程不光是仅仅指团队整体,还包括个人开发。因为尽管软件是由团体整体完成的,但是软体总归是由个人组成,在团队的大流程中,其分成细节就是团队中每一个成员做开发、测试、用户界面设计、管理、交流等。把个人的工作有序组织起来就是团队的流程。
软件工程师有高级初级之分,而初级软件工程师不是一时半会儿就可以成长起来的,需要经过多方面的训练:相关知识的积累、提升技术技能、对开发平台的掌握、经验、对用用的软件设计思想和软件工程思想的理解、提升职业技能(自我管理、表达和交流、与人合作的能力、执行力)、还有实际成果。之后就需要衡量自身开发软件的工作量和质量,主要通过①代码行数②时间③质量④是否按时交付 这四个方面来评价。软件工程师的职业发展有许多方面,例如计算机的考级,职业成长级别,可以胜任更高异能的职位,影响力扩大,同时还需要自我的评估,
个人感受:
原来只是普普通通的来把每次作业仅仅当做写作业,只是为了写而写,为了完成这项任务而已。在读了这几章之后,我认识到了写代码,并不仅仅是写代码这么简单,如果这样下去,我每一次的作业仅仅是流于形式,不会有一点点的收获,有的只是说,哦,这次作业好难啊,别的也就没什么了。我们所要做的,在这个过程中还需要做一些别的东西,总结每一次编程,看看自己在哪些地方会出现错误,在哪些地方不够用心,在哪些地方还有欠缺,多做记录,记录下每次编程中遇到的各种亮点和错误,还可以从网上查找更多的算法,来开阔自己的眼界,意识到还能有什么更好的方法来优化自己的程序。通过这一点点的积累,我们的经验才会增加,我们才会有一些收获,得到一些进步。