软件工程学科的诞生

Posted qthth

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程学科的诞生相关的知识,希望对你有一定的参考价值。

 

1.        软件工程学科的产生背景

关于软件工程产出的背景,首先我们要确定软件这一定义及其作用,软件:计算机程序及其说明程序的各种文档。“程序”是计算任务的处理对象和处理规则的描述。

软件的特点:

1 是一种逻辑产品,与物质产品有很大的区别。

2 软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。

3 软件产品不会用坏,不存在磨损,消耗。

4 生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是“定做”的。

5 开发软件的费用不断增加,致使生产成本相当昂贵

软件生产的发展:

1 程序设计时代 这个阶段生产方式是个体劳动,生产工具是机器语言,汇编语言。(1946-1956年)

2 程序系统时代 这个阶段生产方式是小集团合作生产,生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。(1956-1968年)

3 软件工程时代 这个阶段生产方式是工程化的生产,使用数据库,开发工具,开发环境,网络,分布式面向对象技术来开发软件。(1968年至今)

软件危机: 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。

软件危机的表现:

1 经费预算经常突破,完成时间一再拖延。

2 开发的软件不能满足用户要求。

3 开发的软件可维护性差。

4 开发的软件可靠性差。

软件危机产生原因:

1 软件规模越来越大,结构越来越复杂。

2 软件开发管理困难而复杂。

3 软件开发费用不断增加。

4 软件开发技术落后。

5 生产方式落后,仍采用手工方式。

6 开发工具落后,生产率提高缓慢。

在这种状况下,软件工程在1968年首次被提出,其目标便是付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。

2.        软件工程学科的解决软件危机问题的策略与途径

软件工程的管理,直接影响可用资源的有效利用,生产满足目标的软件产品,提高软件组织的生产能力等问题。因此,仅当软件过程得以有效管理时,才能实现有效的软件工程。 这一软件工程框架告诉我们,软件工程的目标是可用性、正确性和合算性;实施一个软件工程要选取适宜的开发范型,要采用合适的设计方法,要提供高质量的工程支撑,要实行开发过程的有效管理;软件工程活动主要包括需求、设计、实现、确认和支持等活动,每一活动可根据特定的软件工程,采用合适的开发范型、设计方法、支持过程以及过程管理。

1.问题定义:“要解决的问题什麽?”在问题定义阶段应提出。

① 问题性质报告② 工 程目标和规模报告③ 对系统的实际用户和使用部门进行访问调查,澄清含 糊不清的地方后得到双方满意的文档。                   

 2.可行性研究:关键问题“对于上一个阶段所确定的问题有行得通的解决办法”

① 确定工程规模和目标 ② 估计系统成本和效益。        

该阶段实际上是一个工程的核心阶段,对双方都是讨价还价的心理战,直接 关系到整个系统研发的成本与利益。

 3. 需求分析:解决的问题“为解决问题,目标系统必须做什麽?”

 系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出 经过用户确认的系统逻辑模型。通常用数据流程图,数据字典和简要的算法表示系统的逻辑模型。

 需求分析阶段必须交出完整准确的系统逻辑模型经用户确认后,再进入下 一个阶段,应防止和克服急于着手进行具体设计。

 4. 总体设计:“应该如何解决这个问题?”,应考虑几种可能的解决方案:

 (1)低成本的解决方案:系统只能完成最少必要的工作,不做额外工作。

(2)中等成本的解决方案:除很好地完成预定的任务,使用方便,而且还有附加的额外功能。

(3)高成本的“十全十美”的系统 :该系统具有用户可能希望有的所有功能和 特点。

5. 详细设计:总体设计以比较抽象概括的方式提出了解决问题的办法,详细设计的任务是把解法具体化。具体的任务是设计出程序的详细规格说明,通常用HIPO图(层次图加输入/处理/输出图)或PDL语言(过程设计语言)描述详细设计结果。

6. 编码和单元测试:程序员根据系统要求,选定开发平台把详细设计的结果翻译成选定的语言书写程序,并仔细测试编写的每个模块。

7.综合测试 :通过各种类型的测试使软件达到预定的要求。

             集成测试:根据软件结构,把模块按某种选定的策略装配起来, 装配过程中对程序进行必要测试。

  基本测试 :

             验收测试:按照规格说明书的规定,对目标系统进行验收。

8.软件维护:改正性维护、适应性维护、完善性维护、预防性维护

3.        软件工程学科的研究内容

根据软件工程这一框架,软件工程学科的研究内容主要包括:

软件架构

软件设计方法

软件领域建模

软件工程决策支持

软件工程教育

软件测试技术

自动化的软件设计和合成

基于组件的软件工程

计算机支持的协同工作

编程语言和软件工程

计算机网络

信息与通信安全

计算机图形学与人机交互

多媒体技术应用

人工智能与识别

嵌入式软件与应用

自动控制

分布式计算与网格计算

云计算技术

存储技术

数据库技术研究

计算机辅助设计与应用技术

大数据分析与处理

以上是关于软件工程学科的诞生的主要内容,如果未能解决你的问题,请参考以下文章

软件project之软件设计

软件工程之知识架构

《软件测试方法和技术》-读书笔记

对软件工程这门学科的理解

我对软件工程这学科的疑问

对于软件工程学科概况