软件
软件=程序+数据+文档
软件=模块(组件)+数据/控制流
库
- 库是自己存储的不确定文件,收集一组代码函数,这些函数可以跨多种程序使用。
- 在构建时,可以将库函数视为标准语言的扩展,并已于开发人员编写的函数相同的方式使用。
集成方式
- 动态链接
不将对象文件复制到可执行程序中,而是记录所需要的库,在程序开始运行时,所需的库单独加载到内存上 - 静态链接
单个对象文件的集合,链接器确定需要某一个函数,从集合中提取复制到可执行程序中
版本控制
可执行文件程序
- cpu执行的机器可读指令序列,以及相关的数据值
- 库不能直接在目标计算机上加载和执行,必须首先和可执行程序链接。
软件的五个质量目标
- 易懂
- 可变:可维护性和适应性
- 开发成本低:可复用性
- 安全无漏洞:健壮性
- 高效运行
影响因素
- 外部
- 正确性
防御式编程,一开始就尽可能的不让他出现错误 - 鲁棒性(健壮性)
对异常情况做出适当反应的能力 - 可扩展性
易与调整以适应变化的能力,与规模密切相关,越大,可扩展性越低 - 可复用性
利用共性,避免重复实现 - 兼容性
使用协议来约束软件 - 效率
对硬件资源尽可能少的需求的能力 - 可移植性
转移到各种硬件和软件环境 - 易用性
用户可以轻松掌握软件的使用,包括安装,运行和监控的容易度 - 功能性
过多的功能会影响易用性 - 时效性
是否能够及时发布
- 正确性
- 内部
- 圈复杂度
用来衡量一个模块判定结构的复杂程度 - 耦合度,内聚度
设计中追求高内聚,低耦合
- 圈复杂度