需求分析(软件设计)
算法 ↓
}程序(源代码)→软件→服务
数据结构 ↑ ↑
源代码管理 软件测试(质量保障)
软件维护
软件开发阶段:玩具阶段,业余爱好阶段,探索阶段,成熟的产业阶段
软件的特殊性:复杂性(代码量,模块依赖关系),不可见性(执行过程不透明),易变性(易修改),服从性(运行需要满足各种条件),非连续性(变动大)