软件工程(一)—— 软件工程绪论

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Alexshi5/article/details/87955022

一、软件工程概念的提出与发展

1、软件工程的定义

        软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度满足用户要求的软件产品的工程,或以此为研究对象的学科。

2、软件工程的发展

        软件工程的发展大体可以分为两个时期:

① 20世纪60年代末到80年代初

        这一时期主要围绕软件项目,开展了有关开发模型、开发方法和支持工具的研究。主要成果体现为:提出了瀑布模型,试图为开发人员提供有关活动组织方面的指导;开发了诸多过程式语言(如C语言等)和开发方法(如结构化方法、Jackson方法等),试图为开发人员提供好的需求分析和设计手段,并开发了一些支持工具(如测试工具等);开始出现各种管理方法(如费用估算、文档审核等),开发了一些相应的支持工具(如计划工具、配置管理工具等)。

        这一时期的主要特征是:前期主要研究系统实现技术,后期则开始关注软件质量和软件工程管理。

② 20世纪80年代以来

        这一时期的主要成果是提出了《软件生存周期过程》等一系列软件工程标准;大力开展了计算机辅助软件工程的研究和实践,各类CASE产品相继问世;在工程技术方面,出现了最引人注目的面向对象语言(如C++),提出了面向对象软件开发方法;在工程管理方面,开展了一系列过程改进项目。

        这一时期的主要特征是:在软件产业的实践中,建立一种量化的评估程序,判定软件组织和过程的成熟度,提高组织的过程能力。

二、软件开发的本质

1、软件开发本质的概述

        计算机软件一般是指计算机系统中的程序及其文档。其中,程序是计算机任务的处理对象和处理规则的描述;文档是为了理解程序所需要的阐述性资料。所以,软件是对一个特定问题域的抽象,是被开发出的一种逻辑实体,而不是一种有形的物理部件。

        软件开发的目标是将问题域中的概念映射为运行平台层面上的概念,把问题域中的处理逻辑映射为运行平台层面上的处理逻辑,通过这种映射来弥补问题域与运行平台之间的距离。其中,运行平台是指可直接支持软件执行的系统软件、支撑软件以及硬件。

        如果按照自顶向下的途径进行软件开发的话,首先就是通过需求建模,把问题域的概念和处理逻辑向需求层映射,再把需求层的概念和处理逻辑向设计层映射,依次进行,直到映射到运行平台这一抽象层为止。

        综上所述,软件开发的本质可以概括为:不同抽象层术语之间的映射,以及不同抽象层处理逻辑之间的映射。

2、软件开发映射涉及的两个问题

① 如何实现这样的映射

        它涉及两个方面的内容:一是过程方向,即求解软件的开发逻辑;二是过程途径,即求解软件的开发手段。

        一般来说,软件开发领域的问题大部分是非结构化的问题,只有少量是人们已经认识的结构化问题,为了求解其中的非结构化和半结构化问题,其基本手段是问题建模。

        所谓问题建模是指运用所掌握的知识,通过抽象,给出该问题的一个结构。在软件开发领域,实际工程中采用的建模手段主要包括结构化方法、面向对象方法以及诸多面向数据结构方法等。

        建模之后所形成的结果,往往称为该问题的模型。所谓模型,是待建系统的任意抽象,其中包括所有的基本能力、特性或其他一些方面,而没有任何冗余的细节。

        在软件开发中,软件系统模型大体上可以分为两类:概念模型和软件模型。在需求层上创建的系统概念模型是对客观事件系统的抽象,即标识要解决的问题,或称问题定义;软件模型所依据的抽象层,可进一步分为设计模型、实现模型和部署模型等,给出需求层上概念模型的软件解决方案。

② 如何管理这样的映射

        关于如何管理这样的映射,是管理层面上的问题,其主要功能包括软件项目的规划、组织、人员安排、控制和领导等。

猜你喜欢

转载自blog.csdn.net/Alexshi5/article/details/87955022
今日推荐