什么是软件工程?定义、基础、特征
什么是软件工程?
软件工程被定义为一个分析用户需求,然后设计、构建和测试能够满足这些需求的软件应用程序的过程。
让我们来看一下软件工程的各种定义
- IEEE在其标准610.12-1990中将软件工程定义为“一种系统化、有条理、可计算的方法论在软件开发、运行和维护中的应用。”
- Fritz Bauer将其定义为“建立和使用标准的工程原理。它能帮助你经济高效地获得可靠且能在真实机器上高效运行的软件。”
- Boehm将软件工程定义为“将科学知识创造性地应用于计算机程序的设计和构建。它还包括开发、运行和维护它们所需的配套文档。”
为何需要软件工程?软件危机及其解决方案
什么是软件危机?
- 在20世纪60年代末,许多软件项目都失败了。
- 许多软件项目超出了预算。产出的是不可靠且维护成本高昂的软件。
- 大型软件难以维护且成本高昂。
- 很多软件无法满足客户日益增长的需求。
- 随着硬件能力的提高,软件项目的复杂性也随之增加。
- 新软件的需求增长速度快于生成新软件的能力。
以上所有问题都导致了“软件危机”。
解决方案
解决方案是将无组织的编码工作转化为软件工程学科。这些工程模型帮助公司理顺运营流程,并交付满足客户需求的软件。
- 20世纪70年代后期,软件工程原理得到了广泛应用。
- 20世纪80年代见证了软件工程过程的自动化以及(CASE)计算机辅助软件工程的兴起。
- 20世纪90年代,项目“管理”方面、质量标准和流程(如ISO 9001)得到了更大的重视。
为何软件工程如此流行?
以下是软件工程受欢迎的重要原因
- 大型软件 – 在我们的现实生活中,建造一堵墙比建造一栋房屋或一栋建筑要容易得多。同样,随着软件规模的增大,软件工程可以帮助您构建软件。
- 可扩展性 - 如果软件开发过程基于科学和工程概念,那么更容易重新创建新软件来扩展现有软件。
- 适应性:当软件过程基于科学和工程时,借助软件工程可以轻松地重新创建新软件。
- 成本 - 硬件行业已经展示了它的技能,大规模生产降低了计算机和电子硬件的成本。
- 动态性– 软件不断增长和适应的性质。它取决于用户工作的环境。
- 质量管理:提供更好的软件开发方法,以提供高质量的软件产品。
软件工程与其他学科的关系
软件工程与其他学科是如何关联的
- 计算机科学:为软件提供科学基础,正如电气工程主要依赖于物理学一样。
- 管理科学:软件工程是一项劳动密集型工作,需要技术和管理上的双重控制。因此,它被广泛应用于管理科学。
- 经济学:在该领域,软件工程可以帮助您进行资源估算和成本控制。计算系统必须在既定预算内开发,并且数据必须定期维护。
- 系统工程:大多数软件是一个更大系统的一部分。例如,工业监控系统中的软件或飞机上的飞行软件。应将软件工程方法应用于这类系统的研究。
软件工程的挑战
以下是软件工程师面临的一些关键挑战
- 在安全关键领域,如航空航天、航空、核电站等,软件故障的代价可能非常高昂,因为生命处于危险之中。
- 市场对快速周转时间的需求不断增加。
- 应对日益复杂的软件需求,需要开发新应用程序。
- 软件系统应该相互通信的多样性。
软件产品的属性
任何软件产品的特性包括产品安装和使用时所显示的特征。
它们不是产品提供的服务。相反,它们与产品的动态行为和产品的使用方式有关。
这些属性的例子包括
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) 维护性。