当前位置: 主页 > 建站知识 > 软件开发

软件工程经济学-工程经济 中大网校

发布时间:2023-03-25 16:13   浏览次数:次   作者:佚名

软件危机

软件危机的介绍

软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机的典型表现

对软件开发成本和进度的估计常常很不准确。

用户对“已完成的”软件系统不满意的现象经常发生。

软件产品的质量往往靠不住。

软件常常是不可维护的。

软件通常没有适当的文档资料。

软件成本在计算机系统总成本中所占的比例逐年上升。

软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

产生软件危机的原因

与软件本身特点有关

软件不同于硬件,管理和控制软件开发过程相当困难。

软件在运行过程中不会因为使用时间过长而被 “用坏 “如果运行中发现了错误,很可能是遇到了一个在开发时期引入的在测试阶段没能检测出来的错误。

软件不同于一般程序 ,它的一个显著特点是规模庞大 ,而且程序复杂性将随着程序规模的增加而呈指数上升。

管理经济·工程经济·技术经济研究_软件工程经济学_工程经济 中大网校

事实上,对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一。

目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念 。在实践过程中或多或少地采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因。

错误的认识和做法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等

软件开发与维护的方法不正确有关

只重视程序而忽视软件配置其余成分的糊涂观念。

软件开发人员在定义时期没有正确全面地理解用户需求,直到测试阶段或软件交付使用后才发现 “已完成的 ”软件不完全符合用户的需要。

严重的问题是在软件开发的不同阶段进行修改需要付出的代价是很不相同的,如下图所示。

image-20211213204240838

在软件开发的不同阶段进行修改需要付出的代价

消除软件危机的途径

首先应该对计算机软件有一个正确的认识。

充分认识到软件开发不是某种个体劳动的神秘技巧 ,而应该是各类人员协同配合,共同完成的工程项目。

推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法。

应该开发和使用更好的软件工具。

工程经济 中大网校_管理经济·工程经济·技术经济研究_软件工程经济学

软件工程软件工程的介绍

软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

1968年在第一届NATO会议上曾经给出了软件工程的一个早期定义:“软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。”

1993年IEEE进一步给出了一个更全面更具体的定义:“软件工程是: ①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件; ②研究①中提到的途径。

软件具有的本质特性

软件工程的基本原理

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

坚持进行阶段评审

实行严格的产品控制

采用现代程序设计技术

结果应能清楚地审查

开发小组的人员应该少而精

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

软件工程方法学

工程经济 中大网校_管理经济·工程经济·技术经济研究_软件工程经济学

方法:完成软件开发的各项任务的技术方法,回答“怎样做”的问题。

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

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

传统方法学

传统方法学也称为生命周期方法学或结构化范型。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。

传统方法学的特点

传统方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。

每个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。

在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审。

审查的一条主要标准就是每个阶段都应该交出“最新式的”(即和所开发的软件完全一致的)高质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置交付使用。

采用生命周期方法学可以大大提高软件开发的成功率,软件开发的生产率也能明显提高。

目前,传统方法学仍然是人们在开发软件时使用得十分广泛的软件工程方法学。

面向对象方法学

与传统方法相反,面向对象方法把数据和行为看成是同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。

管理经济·工程经济·技术经济研究_软件工程经济学_工程经济 中大网校

四个要点

优点:

降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。

面向对象方法特有的继承性和多态性,进一步提高了面向对象软件的可重用性。

软件生命周期

软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。

软件定义时期的任务是: 确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。

软件定义时期通常进一步划分成3个阶段软件工程经济学,即问题定义、可行性研究和需求分析。

开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计软件工程经济学,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。

维护时期的主要任务是使软件持久地满足用户的需要。

问题定义

可行性研究

需求分析

总体设计

软件工程经济学_工程经济 中大网校_管理经济·工程经济·技术经济研究

详细设计

编码和单元测试

综合测试

软件维护

软件过程

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

软件过程描述为了开发出客户需要的软件,什么人(who)、在什么时候(when)、做什么事(what)以及怎样(how)做这些事以实现某一个特定的具体目标。

瀑布模型

瀑布模型一直是唯一被广泛采用的生命周期模型,现在它仍然是软件工程中应用得最广泛的过程模型。如下图所示为传统的瀑布模型。

image-20211213210246727

传统的瀑布模型

按照传统的瀑布模型开发软件,有下述的几个特点。

两重含义: ①必须等前一阶段的工作完成之后,才能开始后一阶段的工作; ②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。

瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。

传统的瀑布模型过于理想化了,事实上,人在工作过程中不可能不犯错误。实际的瀑布模型是带“反馈环”的,如系统图1.3所示。

image-20211213210508642