什么是软件工程?定义、基础、特征

什么是软件工程?

软件工程被定义为一个分析用户需求,然后设计、构建和测试能够满足这些需求的软件应用程序的过程。

让我们来看一下软件工程的各种定义

  • IEEE在其标准610.12-1990中将软件工程定义为“一种系统化、有条理、可计算的方法论在软件开发、运行和维护中的应用。”
  • Fritz Bauer将其定义为“建立和使用标准的工程原理。它能帮助你经济高效地获得可靠且能在真实机器上高效运行的软件。”
  • Boehm将软件工程定义为“将科学知识创造性地应用于计算机程序的设计和构建。它还包括开发、运行和维护它们所需的配套文档。”

为何需要软件工程?软件危机及其解决方案

什么是软件危机?

  • 在20世纪60年代末,许多软件项目都失败了。
  • 许多软件项目超出了预算。产出的是不可靠且维护成本高昂的软件。
  • 大型软件难以维护且成本高昂。
  • 很多软件无法满足客户日益增长的需求。
  • 随着硬件能力的提高,软件项目的复杂性也随之增加。
  • 新软件的需求增长速度快于生成新软件的能力。

以上所有问题都导致了“软件危机”。

解决方案

解决方案是将无组织的编码工作转化为软件工程学科。这些工程模型帮助公司理顺运营流程,并交付满足客户需求的软件。

  • 20世纪70年代后期,软件工程原理得到了广泛应用。
  • 20世纪80年代见证了软件工程过程的自动化以及(CASE)计算机辅助软件工程的兴起。
  • 20世纪90年代,项目“管理”方面、质量标准和流程(如ISO 9001)得到了更大的重视。

为何软件工程如此流行?

以下是软件工程受欢迎的重要原因

Why Software Engineering is Popular

  • 大型软件 – 在我们的现实生活中,建造一堵墙比建造一栋房屋或一栋建筑要容易得多。同样,随着软件规模的增大,软件工程可以帮助您构建软件。
  • 可扩展性 - 如果软件开发过程基于科学和工程概念,那么更容易重新创建新软件来扩展现有软件。
  • 适应性:当软件过程基于科学和工程时,借助软件工程可以轻松地重新创建新软件。
  • 成本 - 硬件行业已经展示了它的技能,大规模生产降低了计算机和电子硬件的成本。
  • 动态性– 软件不断增长和适应的性质。它取决于用户工作的环境。
  • 质量管理:提供更好的软件开发方法,以提供高质量的软件产品。

软件工程与其他学科的关系

软件工程与其他学科是如何关联的

  • 计算机科学:为软件提供科学基础,正如电气工程主要依赖于物理学一样。
  • 管理科学:软件工程是一项劳动密集型工作,需要技术和管理上的双重控制。因此,它被广泛应用于管理科学。
  • 经济学:在该领域,软件工程可以帮助您进行资源估算和成本控制。计算系统必须在既定预算内开发,并且数据必须定期维护。
  • 系统工程:大多数软件是一个更大系统的一部分。例如,工业监控系统中的软件或飞机上的飞行软件。应将软件工程方法应用于这类系统的研究。

软件工程的挑战

以下是软件工程师面临的一些关键挑战

  • 在安全关键领域,如航空航天、航空、核电站等,软件故障的代价可能非常高昂,因为生命处于危险之中。
  • 市场对快速周转时间的需求不断增加。
  • 应对日益复杂的软件需求,需要开发新应用程序。
  • 软件系统应该相互通信的多样性。

软件产品的属性

任何软件产品的特性包括产品安装和使用时所显示的特征。

它们不是产品提供的服务。相反,它们与产品的动态行为和产品的使用方式有关。

这些属性的例子包括

Efficiency, reliability, robustness, maintainability, etc. 

然而,这些特征的相对重要性因软件系统而异。

产品特性 描述
可维护性 软件应不断发展以满足客户不断变化的需求。
可靠性 可靠性包含多种特征。可靠的软件在系统故障时绝不能造成任何物理或经济损害。
效率 软件应用程序应过度使用系统资源,如内存和处理器周期。
可用性 软件应用程序应具有特定的用户界面和文档。

优化上述属性非常具有挑战性。例如,提供更好的用户界面可能会降低系统效率。

优秀软件的特征

任何软件都应根据其提供的功能以及帮助您使用它的方法来评判。

每个软件都必须满足以下属性

  • 操作性
  • 过渡性
  • 维护

以下是软件专业人士开发的好软件的一些重要特征

操作性

此特性让我们了解软件在操作中的表现如何,并且可以在

  • 预算
  • 效率
  • 可用性
  • 可靠性
  • 正确性
  • 功能性
  • 安全性
  • 安全性

过渡性

当软件从一个平台迁移到另一个平台时,这是一个重要的方面

  • 互操作性
  • 可重用性
  • 可移植性
  • 适应性

维护

这一方面讨论了软件在快速变化的环境中适应自身的能力有多好

  • 灵活性
  • 可维护性
  • 模块化
  • 可扩展性

摘要

  • 软件工程是一个分析用户需求,然后设计、构建和测试能够满足这些需求的软件应用程序的过程。
  • 使用软件工程的重要原因包括:1) 大型软件,2) 可扩展性 3) 适应性 4) 成本和 5) 动态性。
  • 在20世纪60年代末,许多软件项目超出了预算。因此,它提供了维护成本高昂的不可靠软件。
  • 20世纪70年代后期,软件工程原理得到了广泛应用。
  • 软件工程概念包括 1) 计算机科学 2) 管理科学 3) 系统工程和 4) 经济学
  • 市场对快速周转时间的需求增加是软件工程领域最大的挑战。
  • 1) 可维护性,2) 可靠性,3) 效率和 4) 可用性是软件产品最重要的属性。
  • 优秀软件最重要的三个特征是 1) 操作性 2) 过渡性 3) 维护性。