第一章
- 什么是软件?
软件是否与指令、代码/计算机程序相同?(×)
软件的定义是:
- 指令的集合(计算机程序),通过执行这些指令可以满足预期的特性、功能和性能需求;
- 数据结构:使得程序可以合理利用信息;
- 软件描述信息:(它以硬拷贝和虚拟形式存在),用来描述程序的操作和使用。
- 软件的发展
- 早期:用户<->计算机,软件=“将一系列的指令放在一起,让计算机做一些有用的事情”。
- 在20世纪50年代末:用户<—>程序员<—>计算机,计算机变得更便宜,更常见的高级语言被发明出来
- 在20世纪60年代早期:一些专家很少会完成大型的软件项目
- 今天,硬件性能的显著提高,计算体系结构的深刻变化,内存和存储容量的巨大增加,各种外来的输入和输出选项
- 软件的特点
- 软件是开发或设计出来的,而不是传统意义上的制造。
- 软件不会“磨损”。
- 尽管行业正在走向基于组件的构建,但大多数软件仍然是定制的。
- 软件与硬件的区别
- 定义:软件指的是计算机程序、数据及相关文档的集合,是计算机系统中可运行、可执行的部分。而硬件则是指计算机系统中的物理实体,包括计算机的各种组件和设备。
- 物质性质:软件是无形的、虚拟的,存在于计算机内部的编码形式,由计算机执行。而硬件是有形的,包括各种电子元件、器件和外部设备。它们可以被触摸、看到和感知。
- 可变性:软件相对于硬件更容易修改和更新。通过编程和算法设计,可以对软件进行调整、优化或增加新功能。而硬件一般需要重新设计、制造和替换才能进行改变。
- 抽象程度:软件是抽象的概念,通过代码表达和描述计算机操作和行为。它依赖于底层的硬件支持执行。硬件是更接近计算机的物理层面,执行和控制计算机的实际物理操作。
- 复杂性:软件通常比硬件更容易产生错误和问题,因为它有更多的逻辑和程序控制。修复软件问题一般只需要更新代码,而硬件问题可能需要更复杂的维修和替换。
- 软件实现曲线图
横轴是时间,纵轴是失效率,在软件完整的生命周期中,将会面临变更(change),就会由于(变更的)副作用而导致失效率突然提高。不断地变更是软件退化的根本原因。措施:“重构”,不改变外部使用功能情况下(交互UI,功能等),改变了内部设计和代码实现。
- 软件应用领域
- 系统软件、应用软件、工程/科学软件、嵌入式软件、产品线软件、Web/移动App、人工智能软件
- WebApp、移动应用程序、云计算、产品线软件