Skip to content

软件危机 ​

1.1 引言 ​

  1. 软件工程诞生背景 软件行业发展迅速,但软件开发仍停留在手工制作模式,开发人员对软件开发认知存在偏差,制约软件行业发展。 行业学者将其他成熟工程领域的标准化方法引入软件开发,由此诞生软件工程。

  2. 软件开发完整流程 以教员学生成绩管理系统为例,完整开发流程:

  3. 确定系统各模块功能;

  4. 模块详细设计:功能、性能、数据结构、交互界面;

  5. 程序编码、软件测试;

  6. 交付用户投入使用;

  7. 持续迭代完善、修改程序,适配用户实际需求。

  8. 示例业务流程(教员成绩系统)

  • 教员三类操作:查询要求、编辑数据、统计数据
  • 查询要求 → 查询学生成绩 → 输出查询结果
  • 编辑数据 → 编辑学生成绩
  • 统计数据 → 统计学生成绩 → 生成统计报表 所有操作均依赖「学生成绩表」底层数据。

1.2 软件与软件危机 ​

1.2.1 软件的定义 ​

软件是和硬件相互依存的计算机组成部分,完整公式:

软件=程序+数据+文档
  1. 程序:按照预设功能、性能编写的指令序列;
  2. 数据:程序运行、处理业务所需的数据与数据结构;
  3. 文档:支撑程序运行、后期维护的图文配套资料。

考点提示:该定义常出现在选择题、填空题。

1.2.2 软件五大核心特点 ​

  1. 抽象特征:无实体物理形态;
  2. 无明显制造过程:复制无生产加工流程;
  3. 无备件特征:不存在零件替换概念;
  4. 手工制作特征:早期开发高度依赖人工;
  5. 成本昂贵特征:人力、时间成本高。

1.2.3 软件的两种分类方式 ​

按功能划分 ​

  1. 系统软件
  2. 支撑软件
  3. 应用软件

按开发规模划分 ​

依据参与人数、开发周期、源代码行数分为6类:

类别参加人员数研制期限产品规模(源程序行数)
微型11~4周0.5k
小型11~6月1k~2k
中型2~51~2年5k~50k
大型5~202~3年50k~100k
甚大型100~10004~5年1M(1000k)
极大型2000~50005~10年1M~10M

1.2.4 软件危机 ​

1. 软件危机起源 ​

20世纪60年代中期,大型软件系统开发需求爆发,但软件技术跟不上业务需求,大型项目普遍存在复杂度高、周期长、正确性难保障三大难题,问题持续堆积无法解决,最终形成软件危机。

经典事故案例:1963年火星探测器,软件中逗号符号书写错误,探测器升空后爆炸,造成数亿美元经济损失。

2. 软件危机定义与表现形式 ​

软件危机指软件开发、维护阶段出现的一系列严重问题,核心两大痛点:如何高效开发满足用户需求的软件;如何维护存量大量旧软件。 主要表现:

  1. 用户需求模糊、需求频繁变更;
  2. 软件开发成本持续上涨;
  3. 项目开发进度无法管控;
  4. 交付软件质量差,缺陷多;
  5. 后期软件维护难度极大。

3. 软件危机产生原因 ​

  1. 开发过程缺乏完整规划;
  2. 前期需求调研不充分、不完整;
  3. 全开发流程无标准化规范约束;
  4. 缺少成熟、标准化的软件评测手段。

4. 解决软件危机三大途径 ​

  1. 强化软件开发全流程规范化管理;
  2. 普及经过验证、成熟高效的软件开发技术与方法论;
  3. 研发、落地标准化、自动化软件开发工具。

Powered by VitePress 1.6.4 | 持续更新中