📜  软件工程概述

📅  最后修改于: 2021-01-07 06:19:28             🧑  作者: Mango


首先让我们了解软件工程的含义。该术语由软件和工程两个词组成。

软件不仅仅是一个程序代码。程序是可执行代码,可用于某些计算目的。软件被视为可执行程序代码,相关库和文档的集合。根据特定要求制作的软件称为软件产品。

另一方面,工程就是使用明确的科学原理和方法开发产品。

软件工程

软件工程是与使用明确的科学原理,方法和程序开发软件产品相关的工程分支。软件工程的结果是一种高效且可靠的软件产品。

定义

IEEE将软件工程定义为:

(1)在软件的开发,操作和维护中应用系统的,有条理的,可量化的方法;即工程学在软件中的应用。

(2)对上述方法的研究。

德国计算机科学家Fritz Bauer将软件工程定义为:

软件工程是建立和使用合理的工程原理,以便经济地获得可靠的软件,并在实际机器上有效地工作。

软件演进

使用软件工程原理和方法开发软件产品的过程称为软件演化。这包括软件的初始开发及其维护和更新,直到开发出满足预期要求的所需软件产品为止。

软件演进

演化从需求收集过程开始。之后,开发人员将创建预期软件的原型,并将其展示给用户,以在软件产品开发的早期阶段获得他们的反馈。用户建议更改,在此之后,几个连续的更新和维护也将继续更改。此过程将更改为原始软件,直到完成所需的软件为止。

即使在用户拥有所需的软件之后,先进的技术和不断变化的要求也迫使软件产品也相应地变化。从头开始重新创建软件并与需求一对一地进行是不可行的。唯一可行且经济的解决方案是更新现有软件,使其符合最新要求。

软件演化定律

雷曼兄弟为软件发展制定了法律。他将软件分为三类:

  • S型(静态型)-这是一个软件,严格按照定义的规格和解决方案工作。在编码之前,立即了解解决方案和实现该方法的方法。 s型软件的更改最少,因此这是最简单的。例如,用于数学计算的计算器程序。
  • P型(实用型)-这是一个具有一系列步骤的软件这完全由程序可以执行的操作来定义。在该软件中,可以描述规格,但解决方案并非立即可见。例如,游戏软件。
  • E型(嵌入式)-该软件可根据实际环境的要求紧密工作该软件具有高度的发展性,因为在现实世界中,法律,税收等都有各种变化。例如,在线交易软件。

E型软件演变

雷曼兄弟给出了E型软件发展的八条定律-

  • 持续变化-E型软件系统必须继续适应现实世界的变化,否则它将变得越来越有用。
  • 日益增加的复杂性-随着E型软件系统的发展,除非进行维护或降低工作,否则其复杂性趋于增加。
  • 保持熟悉度-必须不惜一切代价,保持对软件的熟悉度或有关软件开发方式的知识,为什么以这种特定方式开发软件等,以实施系统更改。
  • 持续增长-为了实现旨在解决某些业务问题的E型系统,根据业务生活方式的变化,实现更改的规模也会随之增加。
  • 降低质量-除非严格维护并适应不断变化的操作环境,否则E型软件系统的质量将下降。
  • 反馈系统-E型软件系统构成了多环,多级反馈系统,必须将其视作能够成功修改或改进的系统。
  • 自我调节-E型系统的演变过程是自我调节的,产品和过程度量的分布接近正常水平。
  • 组织稳定性-不断发展的E型系统中的平均有效全球活动率在产品的生命周期内是不变的。

软件范例

软件范例是指设计软件时采用的方法和步骤。今天提出了许多方法,并且正在使用,但是我们需要了解这些范例在软件工程中的地位。尽管它们彼此包含在一起,但它们可以组合成不同的类别:

软件演进

编程范例是软件设计范例的子集,而软件设计范例又是软件开发范例的子集。

软件开发范例

这种范例被称为软件工程范例,其中应用了与软件开发有关的所有工程概念。它包括有助于软件产品构建的各种研究和需求收集。它包括 –

  • 需求收集
  • 软件设计
  • 程式设计

软件设计范例

此范例是软件开发的一部分,包括–

  • 设计
  • 保养
  • 程式设计

编程范例

该范例与软件开发的编程方面紧密相关。这包括 –

  • 编码
  • 测试中
  • 积分

软件工程需求

由于用户需求和软件运行环境的变化率较高,因此需要进行软件工程。

  • 大型软件-同样,建造墙壁要比房屋或建筑物容易,因为软件的规模越来越大,因此工程人员必须采取步骤才能使其科学化。
  • 可扩展性-如果软件过程不基于科学和工程概念,那么重新创建新软件要比扩展现有软件容易。
  • 成本-硬件行业已显示出其技能,而庞大的制造业降低了计算机和电子硬件的价格。但是,如果不采用适当的流程,软件成本仍然很高。
  • 动态特性-软件的不断增长和适应性在很大程度上取决于用户的工作环境。如果软件的性质总是在变化,则需要在现有软件中进行新的增强。这是软件工程发挥重要作用的地方。
  • 质量管理-更好的软件开发过程可提供更好和高质量的软件产品。

优秀软件的特点

可以通过软件产品的功能和使用程度来判断软件产品。该软件必须满足以下要求:

  • 操作
  • 过渡性的
  • 保养

经过精心设计和制作的软件有望具有以下特征:

操作

这告诉我们软件在操作中的运作情况。可以通过以下方式测量:

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

过渡性的

当软件从一个平台迁移到另一个平台时,此方面很重要:

  • 可移植性
  • 互通性
  • 可重用性
  • 适应性

保养

此方面简要介绍了软件在不断变化的环境中能够自我维护的能力:

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

简而言之,软件工程是计算机科学的一个分支,它使用定义明确的工程概念来生成高效,持久,可伸缩的预算内和按时软件产品。