导论
一、软件定义与构成
软件是由程序/指令、数据和描述三部分构成的产品。程序/指令是可执行部分,包含源码和程序;数据涵盖输入、内部、输出及配置信息,存储于内存、文件或数据库;描述则是专业化软件开发必需的部分,用于说明开发和使用方法。考勤记录表不属于软件构成内容。
二、软件特性
- 智力密集型:软件开发全程依赖人工,缺乏标准化流水线,管理难度大,高度依赖人员、产品和过程。
- 易变性磨损:软件修改会导致潜在缺陷积累,与物理产品磨损机制不同,需低成本变更策略。
- 高度定制化:用户需求多样,如Hub系统、电量预测系统等,装配式开发面临挑战。
三、软件分类
- 按产品性质
- 通用软件:面向大众销售,如操作系统、办公软件,需求由开发方定义。
- 定制软件:按合同为特定客户开发,如企业信息系统,需求由客户主导。
- 按应用领域
- 系统软件:为其他软件提供基础服务,如操作系统、编译器。
- 交互式事务处理:支持实时交互,如企业管理系统、电商平台。
- 嵌入式软件:集成于硬件设备,如工业控制系统、智能家居。
- 批处理软件:后台处理大规模数据,如银行结算、工资发放系统。
- 工程/科学软件:用于数值计算与仿真,如气象预测、航空模拟。
- 娱乐软件:以游戏为代表,强调艺术创意与用户体验。
四、软件工程核心框架
- 定义:系统化、规范化、可量化的方法应用于软件开发、运行和维护,以及对这些方法的研究。
- 系统化:全流程覆盖工程方法。
- 规范化:遵循成熟方法论与纪律。
- 可量化:通过数据监控质量与过程。
- 关键内容
- 基础概念:构成软件的基本要素。
- 原则:指导开发各环节的准则。
- 方法:具体活动的实施路径。
- 工具:支撑开发与管理的技术手段。
- 质量关注点:贯穿全生命周期的质量控制。
五、软件工程基本方法
- 理解问题:明确需求、范围、约束条件。
- 计划方案:设计技术路线与资源分配。
- 方案实施:将设计转化为可运行产品。
- 结果检查:验证是否符合需求与质量标准。
软件工程通过系统化方法应对软件复杂性,平衡效率、质量与成本,是现代软件开发的核心方法论。