什么是软件工程?其特点和定义

⚡ 智能摘要

软件工程是一门严谨的学科,它包括分析需求,然后设计、构建和测试满足这些需求的软件。本文阐述了软件工程的定义、催生软件工程的软件危机、其普及程度、相关学科、面临的挑战以及优秀软件的特征。

  • 📘 核心定义: 软件工程运用系统化、规范化的工程原理来开发、运行和维护可靠的软件。
  • ⚠️ 软件危机: 20 世纪 60 年代末的项目失败和成本上升,使得建立结构化的工程学科变得必要。
  • 📈 为何重要: 它能够实现大型、可扩展、适应性强且经济高效的软件,并保持一致的质量管理。
  • 🔗 相关学科: 它融合了计算机科学、管理科学、经济学和系统工程。
  • 优秀软件: 高质量的软件能够在不断变化的环境中运行、过渡和维护。

什么是软件工程

什么是软件工程?

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

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

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

为什么要进行软件工程?软件危机及其解决方案

什么是软件危机?

  • 1960 世纪 XNUMX 年代末,许多软件项目失败了。
  • 许多软件的开发都超出了预算。最终交付的软件既不可靠,维护成本又很高。
  • 较大的软件很难维护并且维护成本相当高。
  • 很多软件都无法满足客户日益增长的需求。
  • 软件项目的复杂性会随着硬件性能的提升而增加。
  • 与生成新软件的能力相比,对新软件的需求增长更快。

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

解决方案

解决该问题的方案是将杂乱无章的编码工作转变为软件工程规范。这些工程模型帮助公司简化运营流程,并交付满足客户需求的软件。

  • 20世纪70年代末,软件工程原理得到了广泛应用。
  • 20 世纪 80 年代见证了软件工程过程的自动化和计算机辅助软件工程 (CASE) 的发展。
  • 20 世纪 90 年代,人们越来越重视项目的“管理”方面以及质量和流程标准,就像 ISO 9001 一样。

软件工程为何如此受欢迎?

以下是软件工程流行的重要原因:

为什么软件工程如此受欢迎

  • 大型软件 现实生活中,砌墙比盖房子或楼房容易得多。同样,随着软件规模的扩大,软件工程可以帮助你构建软件。
  • 可扩展性 – 如果软件开发过程基于科学和工程概念,那么重新创建新软件以扩展现有软件就更容易。
  • 适应性 – 当软件开发过程基于科学和工程原理时,借助软件工程就很容易重新创建新软件。
  • Cost 硬件行业展现了自身的实力,大规模生产降低了计算机和电子硬件的成本。
  • 动态自然 软件具有不断发展和适应的特性,并且会随着用户的工作环境而变化。
  • 质量管理 – 提供了一种更好的软件开发方法,以提供高质量的软件产品。

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

以下是软件工程与其他学科的关系:

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

软件工程的挑战

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

  • 在航天、航空和核电站等安全攸关的领域,软件故障的代价可能非常巨大,因为这关系到生命安全。
  • 市场对快速周转时间的需求不断增加。
  • 应对新应用所需的日益复杂的软件。
  • 需要相互通信的软件系统的多样性。

软件产品的属性

任何软件产品的特性都包括该产品在安装并投入使用时所显示的功能。

它们并非产品提供的服务,而是与产品的动态行为和用户对产品的使用方式相关的。

这些属性的示例如下:

Efficiency, reliability, robustness, maintainability, etc.

然而,这些特性的相对重要性在不同的软件系统之间是不同的。

产品特性 描述
可维护性 软件应该不断发展以满足客户不断变化的需求。
责任感 可靠性包括多种特性。可靠的软件在系统发生故障时不应该造成任何物理或经济损失。
高效 软件应用程序不应过度占用系统资源,例如内存和处理器周期。
可用性 该软件应用程序应具备合适的用户界面和文档。

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

好软件的特点

评判任何软件都应该看它提供的功能以及帮助你使用它的方法。

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

  • Opera周志武
  • 过渡期的
  • 维护

以下是软件专业人员开发的优秀软件的一些重要特征。

Opera周志武

这一特性让我们了解软件在实际运行中的性能,可以通过以下方式衡量:

  • 预算
  • 高效
  • 可用性
  • 责任感
  • 正确性
  • Functionality
  • 安全
  • 安保防护

过渡期的

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

  • 互操作性
  • 雷乌斯能力
  • 便携性
  • 适应性

维护

这方面主要讨论软件在快速变化的环境中自我适应的能力:

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

常见问题

人工智能可以辅助代码生成、自动化测试和缺陷检测。它处理日常任务,使工程师能够专注于设计、架构和复杂问题的解决,同时仍然需要人工审核以确保质量和正确性。

不。人工智能可以提高生产力,但无法取代人类在需求收集、架构设计、权衡伦理利弊以及做出复杂决策方面的判断。工程师越来越多地参与到人工智能工具的输出结果的指导和验证工作中。

编程侧重于编写代码。软件工程则在整个生命周期中应用严谨的流程,包括需求分析、设计、测试和维护,以在预算和时间限制内大规模交付可靠的软件。

核心生命周期包括需求分析、设计、编码、测试、部署和维护。每个阶段都以前一个阶段为基础,以确保最终软件可靠、易于维护并满足用户需求。

总结一下这篇文章: