文章目录
1、什么是软件工程
1.1、定义
最开始:为研究和克服软件危机而生;
官方定义:讲系统化、规范的、可度量的方法用于软件的开发、运行和维护的过程。
抓住定义的本质:用工程化方法去规范软件开发,让项目可以按时完成,成本可控、质量有保障。
一看定义就会觉得很枯燥,记得刚毕业的时候看过讲软件工程的书,开篇就是能看睡着的历史和严肃的定义。以后还是会有很多书会有这样的开场白,因为看历史是必要的,所以现在会转换心态和角度来看待这样的开场白。理解了作者想通过这样的开场白来表达什么,就理智很多啦~
想起来在读李智慧老师的《从0开始学大数据》专栏的时候,有一段话印象深刻
不管是学习某门技术,还是讨论某个事情,最好的方式一定不是一头扎到具体的细节里,而是应该从时空的角度先了解它的来龙去脉,以及它为什么会演进成为现在的状态。当你深刻理解了这些前因后果之后,再去看现状,就会明朗很多,也能更直接地看到现状背后的本质。
我也超喜欢李智慧老师!!!
![](https://i-blog.csdnimg.cn/blog_migrate/9fab75757b00ca244044c56cfb0e6494.png)
1.2、演化史
开发软件本质上就像是盖房子一样,是从无到有的创造过程。
工程化的方式,就是你分步骤(过程),采用科学的方法,借助工具来做产品。
于是,参考建筑工程,软件开发过程也被分成了几个阶段:需求定义与分析、设计、实现、测试、交付和维护。
呐呐~其实历史啥的我是一点不太感兴趣的,所以读到的重点就是,软件工程的过程划分是参考建筑工程的,所以嘛,对于需求分析就叫需求分析,我是一点意见没得的
1.3、软件工程的核心
一句话总结:软件工程 = 工具 + 方法 + 过程
刚开始看的时候我也只是象征性记了一下这个图和这几个字眼的。
![](https://i-blog.csdnimg.cn/blog_migrate/7617054eb2640106f4e0c24a76b89fcb.png)
经典教材里给的图,回过头来看真的是很经典的啦~软件工程是应对软件危机诞生的学科,目标就是为了要聚焦于治疗,构建和维护高质量的软件。软件工程的核心就是,围绕软件开发过程,产生的方法学和工具。方法学包含两个部分:过程和方法。
- 过程:在软件项目的生命周期内,要遵循的步骤。
- 方法:过程中的每个步骤要如何进行。
2、Everything is a project
专栏刚出的时候给朋友、同事、领导安利过,也曾在闲暇的时候,在公司内网上搭建了禅道、confluence这些来“方便”大家高效协作。大部分都是不了了之的,更多的时候收获鄙疑(可能不是很合适的词,但是感受是这样的啦~)。回复都是感觉这是”假把式“:
…哇,很棒啊,但是这是领导该做的事情啦…
…项目紧急的时候为啥要花时间在这个上面…
…excel就很好丫…
…学习成本太高…
…领导能力不行…(话题马上就会偏,捂脸)
嗯,我从没质疑过,刚工作的时候被不知所云随便去网上抄一下的概要设计文档折磨的时候,领导就拍肩说:文档的目的是让你把重点说清楚。人生的一道闪光啊!所以工作中更多是感受到工程化方法带来的好处(感谢DZQ)。宝玉老师在这里说到的“掌握工程思维,把每一件事都当作一个工程项目来推进。”给了我更多的向别人安利好用的工具,好的工程方法的理由。
2.1、什么是工程方法
有目的、有计划、有步骤地解决问题的方法就是工程方法。
![](https://i-blog.csdnimg.cn/blog_migrate/3e539d504a84682f93696b22f88e6c24.png)
工程