目录
之前一直没有写博客的想法,以学习这次课为契机,想把自己的学习化为留存更长久的笔记,不仅方便日后回顾查阅,也可以与大家一起交流。
我学习的是清华大学开设的《软件工程》网课,具体链接可以看:软件工程 - 清华大学 - 学堂在线
1.1 软件无处不在
如今已经成为软件无处不在的时代,软件不仅是商业决策的引擎,也是解决现代科学和解决工程问题的基础。
1.2 软件的本质特性
什么是软件?
在用户看来,软件是一系列实现各种功能的图形化界面。但其实,软件 = 程序+数据+文档,软件的行为只有通过运行才能呈现出来。
有一个惊人的事实:
我们可以看出,软件开发具有难以预料的困难性,这即是由软件的复杂性、一致性、可变性和不可见性等造成的。
- 复杂性
在互联网的集群环境下,系统规模更庞大复杂,这就使得需要的服务器总量也很大,复杂性提高
- 一致性
- 可变性
- 不可见性
1.3 软件工程的产生和发展
软件开发一直面临着诸多挑战,主要表现在:
无论哪个方面出现问题都可能造成严重的失败。
软件工程就是为了探索软件开发问题的解决之道。软件工程的历史分为四个阶段:软件工程史前阶段、使用瀑布过程模型阶段、提出质量标准体系阶段、互联网阶段。
1.4 软件工程基本概念
什么是软件工程?
软件工程的目标是开发出足够好的软件,足够好的软件应有如下要求:
软件开发的过程:
软件开发方法的发展:面向过程-->面向对象-->面向构建-->面向服务(软件的复用程度逐渐提高,开发效率也越来越高
面向过程:以算法作为基本构造单元,强调自顶向下 的功能分解,将功能和数据进行一定程度的分离。
面向对象:以类为基本程序单元,对象是类的实例化, 对象之间以消息传递为基本手段。
面向构建:寻求比类的粒度更大的且易于复用的构件, 期望实现软件的再工程。
面向服务:在应用表现层次上将软件构件化,即应用 业务过程由服务组成,而服务由构件组装而成。
需要用到的一些工具:
软件开发是个循序渐进的过程,应该按照步骤一步一步进行。
对软件工程较重要的技术:
1.5 软件质量实现
如何定义软件的质量?
每种人员对软件质量的要求侧重点不同,用户更重视功能质量,投资者更重视过程质量,开发人员更注重结构质量。
对好的软件的要求: 既要正确的,又要运行正确的
评价软件质量的模型ISO9126:
如何提高软件质量?
高质量的设计 + 规范的编码 + 有效的测试
但要注意,商业目标决定质量目标,企业需要衡量质量、成本和效益。
总结:
软件工程是一个复杂并且循序渐进的过程,需要通过科学的使用相同的设计模式来让每个开发人员的代码具有同样的规则,其中需要有很多的代码或任务方面的管理,并且必须要进行不断测试,目的就是做出好的健康的软件。