软件工程0-绪论

绪论

软件

1946年,世界上第一台计算机诞生;

1958年,John Wilder Tukey正式提出软件的概念;

软件是指计算机程序及其相关文档的集合。它是由一系列指令和数据组成,用于实现特定的功能或解决特定的问题

软件可以运行在计算机上,通过执行程序中的指令来完成各种任务。

  • 程序:按事先设计的功能和性能需求执行序列
  • 数据:程序能正常操作信息的数据结构;
  • 文档:与程序开发、维护和使用有关的图文材料

软件的特点

  1. 软件是开发的或者是工程化的,并不是制造的
  2. 软件生产是简单的拷贝
  3. 会多次修改
  4. 软件开发环境影响较大
  5. 开发时间和工作量难以估计
  6. 几乎没有客观衡量标准
  7. 测试困难
  8. 不会磨损和老化
  9. 维护易带来新的问题

软件的双重作用

  1. 提供计算能力的一种产品,产生、管理、获取、修改、显示或传输信息;
  2. 开发其他软件产品的工具

软件的分类

  1. 软件功能分类:系统软件,支撑软件,应用软件;
  2. 服务对象分类:项目软件,产品软件;

软件的发展

软件迅速发展的原因:计算需求, 嵌入需求,业务需求,架构需求;

  1. 个体化:1950s-1960s;
  2. 作坊式:1960s-1970s;
  3. 工程化:1970s-1980s;
  4. 产业化:至今;

软件危机

软件危机是指计算机软件开发和维护过程中所遇到的一系列严重问题

1968年 NATO 会议提出“软件危机;

软件危机具体表现

  1. 项目超出预算
  2. 项目超过计划完成时间
  3. 软件运行效率很低
  4. 软件质量差
  5. 软件通常不符合要求
  6. 项目难以管理并且代码难以维护
  7. 软件不能交付

软件危机发生原因

  1. 客观上:软件本身特点
    • 逻辑部件多
    • 规模庞大
  2. 主观上:不正确的开发方法
    • 忽视需求分析
    • 错误认为软件开发等于程序编写
    • 轻视软件维护

软件工程

消除软件危机的解决方案是采用软件工程的方法:用现代工程的概念原理、技术和方法去指导软件的开发、管理和维护;

IEEE将软件工程定义为

  1. 实践上:应用系统化的 、 学科化的 、 定量的方法 来开发 、 运行和维护软件 ;
  2. 研究上:对上述各种方法的研究 ;

软件工程的目标是在给定的时间和预算内,按照用户的需求,开发易修改、高效、可靠、可维护、适应力强、可移动、可重用的软件 。

软件工程的三要素

  1. 工具:它为软件工程的过程和方法提供自动化或半自动化的工具支持。
  2. 方法:软件工程方法是完成软件工程项目的技术手段。
  3. 过程:过程贯穿软件开发的各个环节,在各环节之间建立里程碑;

软件工程的四个阶段

  1. 传统的软件工程;
  2. 对象工程;
  3. 过程工程;
  4. 构件工程;

软件工程的基本原则

  1. 使用阶段性生命周期计划的管理
  2. 进行连续的验证
  3. 保证严格的产品控制
  4. 使用现代编程工具 工程实践
  5. 保持清晰的责任分配
  6. 用更好更少的人
  7. 保持过程改进