软件工程学科的诞生

软件工程学科的诞生

软件工程学科的产生背景

软件工程学科的产生背景是为了应对解决软件危机。是在1968年召开的一个“软件工程”的会议上首次提出来的。由于当时单个的程序开发技术已经不能应用到大型、复杂的软件系统。导致花费时间长、预计的费用高、不可靠、难以维护。为了更加有效的解决质疑问题,从而形成了软件工程学科。

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

软件危机

定义:软件危机指的是计算机软件的开发和维护过程中所遇到的一系列的问题。

包含的问题:a.如何开发软件来满足日益增长的需求;b.如何维护数量不断增长的软件产品。

表现形式:

  1. 软件的开发成本和开发进度的估计常常很不准确;
  2. 用户对于“已完成”系统软件的不满意现象时常发生;
  3. 软件产品的质量往往靠不住;
  4. 软件通常没有适合的文档资料;
  5. 软件成本在计算机系统总成本中所占的比例逐年上升;
  6. 软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。解决软件危机问题的策略与途径

要想解决软件危机,就要对计算机软件有一个清楚正确的认识。要清楚知道导致产生软件危机的源头是什么才能够对症下药。更加精准有效的解决问题。

首先软件工程的目的是支持专业化的软件开发而不是个体编程。它包括支持程序描述、设计和进化的相关技术,而这些都不是个体软件开发所需要的。许多人把软件等同于程序,这种理解是十分狭隘的。我们必须充分认识到软件开发不是个体劳动的神秘技巧,而是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。由于产生软件危机的原因主要包含两个方面,其中一个是软件本身的特点——不具有直观可见性并且发展日益庞大,开发管理十分复杂。另一个原因是因为错误的软件开发和维护方法,长期以来忽视软件需求分析,轻视文档的重要性等。针对这两大产生软件危机的问题,我们从以下两个方面来解决软件危机。

技术层面

推广和使用在实践中总结出的好的软件开发技术和方法,并且不断探索和研究更有效的技术;开发和使用更好的软件工具,包括采用好的开发工具,系统分析和辅助设计工具等,以提高工作效率。

管理层面

吸收和借鉴人类长期以来从事各类工程项目所积累的行之有效的原理、概念、技术和方法。

软件工程学科的研究内容

       软件工程主要研究的内容是如何用系统规范的过程去开发和维护软件。以及如何用经过考验的正确的管理技术应用到当前的最好的管理技术中去。

软件工程学科的简介

(1)、定义:软件工程指的是采用工程的概念、原理、技术和方法来开发和维护软件,并且将证明过的正确的管理技术与当前能够得到的技术方法结合起来,来指导软件的开发和维护。

(2)、特点:文档化、规范化。

(3)、软件工程的目标:在给定成本和进度的前提下开发出具有适用性、正确性、可维护性的满足用户需求的软件产品。

              a、适用性:软件在不同的系统约束条件下,使用户需求得到满足的难易程度。

              b、正确性:软件产品达到预期的功能的程度。

              c、可维护性:软件交付使用后,能够对它进行修改,以改正潜伏的错误,改进性能和其它属性,使软件产品适应环境的变化等。软件维护费用在软件开发费用中占有很大的比重。可维护性是软件工程中一项十分重要的目标。

4)、软件工程活动:软件工程活动主要包括需求、设计、实现、确认、支持这几个活动。

              a、需求:包括问题分析和需求分析。问题分析指需求的获取和定义;需求分析指生成软件功能规约。

              b设计:包括概要设计和详细设计。概要设计是来建立软件的体系结构;详细设计是对每一模块中数据结构说明及加工描述。

              c实现:把设计结果转换为可执行的程序代码。

              d确认:每一个过程都需要进行确认,保证产品满足用户的要求。

              e支持:修改和完善活动。

5)、软件工程的基本原理:

              a用分阶段的生命周期计划严格管理;

              b坚持进行阶段性的评审工作;

              c实行严格的产品控制;

              d、采用现代的程序设计技术(结构化分析(SA)与设计(SD);面向对象的分析(OOA)和设计(OOD));

              e结果能够清楚的审查(规定开发组织的责任和产品标准);

              f开发小组的人员应该少而精,成员素质要好,人数不宜过多;

              g、承认不断改进软件工程实践的必要性。

 (6)、软件工程方法学:将使用在软件生命周期全过程中的一套方法的集合称为方法学。其中包含三个要素:方法、工具和过程。

              a方法:指的是完成软件开发的各项任务的技术方法,回答“怎么做”的问题;

              b、工具:为运用方法而提供的自动的或者半自动的软件工程支撑环境;

              c过程:为了获得高质量的软件所需完成的一系列任务的框架,规定了各项任务工作步骤。

 7)、阶段划分及基本任务:

              a、问题定义:通过访问调查,明确要解决问题性质、工程目标和规模;

              b、可行性研究:画出系统的数据流图,在此基础上更加准确具体的确定工程的目标和规模,更加准确地估计系统的成本和效益;

              c、需求分析:与用户密切配合交流,得到用户确认的系统逻辑模型;

              d、总体设计:提出几种可能的解决方案,权衡各种方案推荐出最佳方案;设计软件的结构,确定软件的模块构成模块之间的关系;

              e、详细设计:把解决问题的方案具体化,设计出程序的详细规格说明,包含必要的细节信息;

              f、编码和单元测试:将详细设计的结果翻译成高级程序设计语言的源程序,并且仔细测试编写的每一个模块;

              g综合测试:通过各类型的严格测试与调试,使软件达到预定的要求;

              h、软件维护:通过必要的维护工作使得系统永久的满足用户的需求(改正性维护、适应性维护、完善性维护、预防性维护)。

 8)、传统方法学(生命周期方法学):面向的是过程,从上而下,顺序地完成软件开发的各阶段任务。

              优点:把生命周期划分为若干个部分,每个部分相对独立,降低了软件开发的难度;每个过程中采用了科学的管理技术和良好的技术方法,提高了维护性。

              缺点:生产效率低,开发出来的软件不能满足用户需求。

 (9)、面向对象的方法学:面向的是对象。把所有的对象划分成类,按照父类与子类的关系,把若干个相关类组成一个层次结构的系统,对象彼此之间仅能通过发送消息互相联系。

              优点:维护性、稳定性好,面向对象的软件比较容易修改和理解。

              缺点:需要一定的软件支持环境,不太适用大型开发,只能实现在现有业务基础上进行分类整理,而不能从科学管理角度进行优化。

10)、软件工程越来越重要的原因:a个人和社会越来越依赖于先进的软件系统;b从长远来看,运用软件工程方法和技术去开发软件系统比单纯为个人程序项目写程序更加便宜。

11)、软件工程的应用类型:

              a、独立的应用。常见的有PC上的办公软件、CAD、图片处理软件

              b以交易为基础的交互式应用。Web应用、业务系统。

              c嵌入式控制系统。移动电话中使用的软件、汽车上控制防抱死的软件。

              d娱乐系统等。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值