软件的特征
- 抽象: 不可触摸,逻辑实体,可记录,但看不到
- 复制成本低:不受物质材料的限制,不受物理定律或加工过程的制约,与开发成本相比,复制成本很低无折旧、受硬件制约、未完全摆脱手工工艺开发费用高
- 软件是开发出来的,不是制造出来的
- 软件可能被“废弃”,但不会“用坏”
- 软件大部分是定制的,而不是装配的
软件复杂度
- 计数复杂度
- 管理复杂度
IEEE对软件的定义
软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。
- 计算机程序是计算机设备可以接受的一系列指令和说明,为计算机执行提供所需的功能和性能。
- 数据是事实、概念或指令的结构化表示,能够被计算机设备接收、理解或处理。
- 文档是描述程序研制过程、方法及使用的图文材料
IEEE 对软件工程的定义
软件工程是:
- 将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。
- 对(1)中所述方法的研究。
什么是软件工程
- 软件工程是一项建模活动
- 软件工程是一项解决问题活动
- 软件工程是一项受事物基本原理指导的活动、
什么是建模
- 对系统抽象的表示,可以了解未知的系统和领域。
为什么需要建模
- 系统太大、太小、太复杂或体验代价太高时,需要模型。
应用域模型
从用户角度去描述的系统
解答域模型
从开发者的角度去描述的系统,评估具体实现时不同的方案
面向对象的方法将应用域建模和解答域建模合二为一,
面向对象方法的思想:解答域模型就是从应用域模型转化过来的。
采用UML对应用域及解答域建模,然后将其转化为具体实现
软件工程概念
功能性需求
系统必须支持功能的规格说明
非功能性需求
是对系统运行的一些约束,指导着系统如何去实现
软件工程开发活动
- 需求获取
- 分析
- 系统设计
- 对象设计
- 实现
- 测试
需求获取
客户和开发者定义系统目标,其结果是使用参与者和用 例来描述系统,包括功能性需求和非功能性需求
分析
将需求分析中产生的用例转化顺序图和状态图