2018-2019-1 20189206 《构建之法》第一章 学习笔记
概论
主要内容:软件工程和计算机科学之间的关系,计算机科学领域
程序和软件的关系
- 软件 = 程序 + 软件工程
- 程序 = 数据结构 + 算法
- 程序 是指源程序,是一行行的代码,是建立在数据结构上的代码,程序还需要对数据进行操作。
- 构建 包括了合理的软件架构、软件设计与实现等
- 配置管理 用于解决源代码管理的问题
- 软件测试 用于保证开发出来的软件的质量
- 需求分析 从需求分析开始,把合适的需求梳理出来,以便开展后续工作
- 软件维护 软件在运行过程中还会出现各种问题,需要给软件打补丁,维护众多服务等
以上的一系列过程就是软件开发活动的相关内容,广义上的软件工程也包括用户体验、用户界面设计等。
所以 软件 = 程序 + 软件工程 软件企业 = 软件 +商业模式
程序和软件的关系就是,程序是基本功,软件工程则决定了软件的质量,商业模式决定了一个企业的成败。
软件工程
- 软件工程定义
- 软件工程就是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程就是把人们在开发、运营、维护软件的过程中很多技术、做法、习惯和思想体系统一到同一个体系中,也成为“软件开发流程”。
- 软件的分类
- 系统软件 操作系统、设备驱动程序、工具软件等
- 应用软件 通信、游戏、浏览网页、播放视频等功能供用户使用
- 恶意软件 软件病毒等
- 软件的特殊性
- 复杂性
- 不可见性
- 易变性
- 服从性
- 非连续性
这些非本质、临时的特性并不能决定软件工程的本质问题。总的来说,软件的这些本质使得做好一个软件变得很难
软件工程和计算机科学的关系
- 计算机科学的理论研究多与数学、离散数学、数理逻辑密切相关;计算机科学中与实践相关的部分,都和数据以及其他学科相关。软件工程则多与人的行为、社会需求相关
- 计算机理论会帮助软件工程;软件工程的进展则会帮助计算机科学家更有效的地进行实验和探索。
- 不同项目的不同特点
- BUild To Learn 开发软件,构建系统的目的是为了进一步试验。
- Build To Show 为了突出某个技术的作用,开发一些以演示为目的的软件,这些软件功能未必全面或实用。
- Build To Serve 为了服务一定范围的目标用户而构建的工具。
- Build To Win 以在市场上赢得用户为目标而构建的软件。
软件工程的目标
- 用户满意度 如果一个软件有很多问题,会影响用户使用软件的效率
- 可靠性 一个软件经常会崩溃,某个操作系统时不时司机,某个网站在最需要的时候无法登陆
- 软件流程的质量 软件团队和开发流程问题太多,导致团队成员无法相互协作,按时交付软件
- 可维护性 某个软件太难以维护,没有足够的文档,维护人员需要更多的时间和资金来维护这个软件
通过具体而理论学习和项目练习,做到:
- 研发出符合用户需求的软件
- 通过一定的软件流程,在预计时间内发布“足够好”的软件
- 能证明开发软件是可以维护和继续发展的