
软件定义:软件是程序、数据及相关文档的集合,是计算机系统的逻辑部分。 组成结构:
案例代码:简单计算器程序(Python)
# 计算器程序:实现加减乘除功能
class Calculator:
def add(self, a, b):
"""加法运算"""
return a + b
def subtract(self, a, b):
"""减法运算"""
return a - b
def multiply(self, a, b):
"""乘法运算"""
return a * b
def divide(self, a, b):
"""除法运算(处理除零异常)"""
if b == 0:
raise ValueError("除数不能为零")
return a / b
# 示例用法
if __name__ == "__main__":
calc = Calculator()
print(f"5 + 3 = {calc.add(5, 3)}") # 输出:8
print(f"5 - 3 = {calc.subtract(5, 3)}") # 输出:2定义:软件从需求分析到退役的整个过程,通常包括以下阶段:
流程图:软件生存周期模型

特点 | 说明 |
|---|---|
逻辑实体 | 无形,依赖硬件运行(区别于物理产品)。 |
复杂性高 | 涉及算法、数据结构、用户需求等多维度复杂度(如操作系统内核)。 |
易修改性 | 通过版本控制工具(如 Git)支持迭代开发(见 1.6.1 软件工具)。 |
成本集中于开发 | 开发成本高,复制成本极低(如 App Store 应用分发)。 |
核心指标:
常见措施:
IEEE 定义:应用系统的、规范的、可量化的方法来开发、运行和维护软件。
阶段演进:
目标:在预算内按时交付高质量软件。 原则:
方法 | 核心思想 |
|---|---|
结构化方法 | 自顶向下、逐步求精(如数据流图 DFD 建模)。 |
面向对象方法 | 以对象为核心,封装数据与行为(如计算器类 Calculator)。 |
敏捷开发 | 快速迭代、响应变化(见 1.4 节详细解析)。 |
特点:阶段顺序执行,适用于需求明确的项目(如政府定制软件)。 流程图

特点:分批次交付功能(如第一阶段实现计算器基本运算,第二阶段增加历史记录功能)。
案例:用 Axure 快速设计计算器界面原型,收集用户反馈后再开发。
核心:引入风险评估,适用于高风险项目(如航天软件)。
实践:使用 Spring 框架的 Bean 组件快速搭建企业级应用。
模板:
核心价值观(《敏捷宣言》):
实践方法:
import unittest
from calculator import Calculator # 导入1.1.1中的计算器类
class TestCalculator(unittest.TestCase):
def setUp(self):
self.calc = Calculator()
def test_divide_normal(self):
"""测试正常除法"""
self.assertEqual(self.calc.divide(6, 3), 2)
def test_divide_by_zero(self):
"""测试除零异常"""
with self.assertRaises(ValueError):
self.calc.divide(5, 0)
if __name__ == "__main__":
unittest.main()工具链:
核心课程:
知识领域(SWEBOK 指南):
常用工具:
集成环境(IDE):
定义:由硬件、软件、人员、数据等要素组成的综合系统(如智能手表系统)。
组件 | 示例 |
|---|---|
硬件 | CPU、内存、传感器(如手机陀螺仪) |
软件 | 操作系统、应用程序(如 iOS 系统、微信 App) |
人员 | 用户、开发人员、维护人员 |
数据 | 用户信息、日志数据(如电商订单数据) |
步骤:
本文通过理论解析与代码案例结合的方式,系统介绍了软件工程的核心概念、过程模型及实践方法。读者可通过运行文中代码(如计算器程序、TDD 测试)加深理解,并结合 流程图梳理开发流程。后续章节将深入探讨需求分析、软件设计等专题,敬请关注!
