第1章_软件工程学概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.系统程序阶段(20世纪60年代至70年代):随着规模迅速扩大, 软件不再为开发者个人使用,而是面向某一领域的通用软件产品。 多人分工的作坊式开发是软件开发的主要特点。
3.软件工程阶段(20世纪70年代之后):硬件技术的迅猛发展促使 软件的处理任务日趋复杂。“软件作坊”的开发效率低、软件产品 质量差。于是出现了“软件危机”。
《软件工程导论》 明廷堂 主讲
1.1 软件危机
1.1.3 消除软件危机的途径
1.为了消除软件危机,首先应该对计算机软件有一个正确的认 识。软件是程序、数据以及相关文档的完整集合;
2.必须充分认识到软件开发是一种组织良好、组织严密、团队协 作、共同完成的工程项目。必须充分吸收和借鉴人类在各种工程项 目中积累起来的有效的原理、技术和方法;
《软件工程导论》 明廷堂 主讲
1.1 软件危机
(4).软件的复杂性越来越大。软件处理问题的规模日趋庞大,处 理对象的类型由数值型发展成图像、音频、视频等。产生了软件的 复杂性与软件技术发展的背离现象;
(5).大多数软件都是新开发的。软件复用的成功实现任重而道远; (6).软件工作涉及许多社会因素。如机构、体制、管理等。 2.主观因素:软件开发方法和技术 (1).对软件开发与维护存在诸多错误认识,主要表现在: ①软件与程序的概念不清,认为“软件开发就是编写程序并使之 成功运行”;②忽视软件开发前期的调研和需求分析工作,认为 “有一个对目标的概括描述就可以着手编码了,许多细节可以在以 后补充”;③开发过程没有统一的、规范的方法论的指导;④轻视软 件的维护,认为“软件投入生产性运行后需要的维护工作并不多, 而且维护是一件很容易的事”。 (2).软件开发与维护的方法不正确。
《软件工程导论》 明廷堂 主讲
1.2 软件工程
1.面向过程方法学 传统方法学也称为生命周期方法学或结构化范型。它采用结构化 技术来完成软件开发的各项任务,并使用适当的软件工具或工程环 境来支持结构化技术的运用。 这种方法学将软件生命周期的全过程依次划分成若干个阶段,然 后顺序地完成每个阶段的任务。每个任务相对独立,而且比较简单, 便于人员分工协作,降低了工程难度;每个阶段采用科学的管理技 术和开发方法,并且在每个阶段末期对技术和管理进行严格的审查, 合格之后才开始下一阶段的工作,全部开发过程有条不紊地进行, 既保证了软件质量,又提高了软件的可维护性。
5.软件通常没有适当的文档资料; 6.软件成本在计算机系统总成本中所占的比例逐年上升; 7.软件开发生产率提高的速度,既跟不上硬件的发展速度,也远 远跟不上计算机应用迅速普及深入的趋势。
《软件工程导论》 明廷堂 主讲
1.1 软件危机
1.1.2 软件危机的成因
软件危机产生的原因一方面与软件本身的固有特性等客观因素 有关,另一方面也和软件开发与维护的方法不正确等主观因素有关。
《软件工程导论》 明廷堂 主讲
1.2 软件工程
1.2.1 软件工程简介
概括地说,软件工程是一门指导计算机软件开发和维护的工程 学科。采用工程的概念、原理、技术和方法来开发与维护软件,把 经过时间考验而且证明正确的管理技术和当前能够得到的最好的技 术方法结合起来,以便经济地开发出高质量的软件并有效地维护它, 这就是软件工程。软件工程具有下述本质特性:
软件工程方法学包括三个要素,它们是方法、工具和过程。其中, 方法是完成软件开发的各项任务的技术方法;工具是为方法的运用 提供自动的或半自动的软件支撑环境;过程是为了获得高质量的软 件所需要完成的一系列任务的框架,它规定了完成各项任务的工作
目前使用得最广泛的软件工程方法学,分别是面向过程方法学和 面向对象方法学。
1.客观因素:软件本身固有特性 (1).软件是一种逻辑实体,具有很强的抽象性。虽然可以将其记 录在各种介质上,但无法看到软件本身的形态,必须通过观察、分 析、思考才能了解其功能和性能。 (2).软件是由开发或工程化而形成的,没有明显的传统意义上的 制造过程。其生产过程主要表现为人脑的思维过程。 (3).软件在运行和使用期间,不存在机械磨损或老化等问题,然 而它存在退化问题。为了适应硬件支撑环境及应用需求的变化,需 要多次修改或维护软件,从而不可避免地引入新的错误,导致软件 的失效率升高、可靠性下降。
1.软件工程关注大型程序的构造; 2.软件工程的中心思想是控制复杂性; 3.软件需求动态变化; 4.软件开发效率至关重要; 5.和谐合作是软件开发的关键; 6.软件必须有效地支持其用户; 7.在软件工程领域通常由具Hale Waihona Puke Baidu一种文化背景的人替具有另一种文 化背景的人创造产品。
《软件工程导论》 明廷堂 主讲
1.2 软件工程
1.2.2 软件工程的基本原理
1. 2. 3. 4. 5. 6. 7.承认不断改进软件工程实践的必要性。
《软件工程导论》 明廷堂 主讲
1.2 软件工程
1.2.2 软件工程方法学
通常把在软件生命周期全过程中使用的一整套技术的集合称为 方法学(methodology),也称为范型(paradigm)。在软件工程范
3.应该推广使用在实践中总结出来的开发软件的成功的技术和方 法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系 统早期发展阶段形成的一些错误概念和做法;
4.应该开发和使用更好的软件工具。
总之,了解产生软件危机的原因,澄清错误认识,建立起关于 软件开发和维护的正确概念,还仅仅是解决软件危机的开始,全面 解决软件危机需要一系列综合措施。既要有技术措施(方法和工具), 又要有必要的组织管理措施。软件工程正是从管理和技术两方面研 究如何更好地开发和维护计算机软件的一门新兴学科。
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列 严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实 际上,几乎所有软件都不同程度地存在这些问题。
《软件工程导论》 明廷堂 主讲
1.1 软件危机
具体来说,软件危机主要有以下一些典型表现: 1.对软件开发成本和进度的估计常常很不准确; 2.用户对“已完成的”软件系统不满意的现象经常发生; 3.软件产品的质量往往靠不住; 4.软件常常是不可维护的;
第1章 软件工程学概述
1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 本章小结
《软件工程导论》 明廷堂 主讲
1.1 软件危机
1.1.1 软件危机简介
从20世纪40年代第一台计算机诞生到现在,软件技术的发展大 致可分为三个阶段:
1.程序设计阶段(20世纪40年代至60年代):计算机应用于一些专 业领域,比如数值计算和电气工程。当时的软件开发就是编写程序。 软件的开发者、使用者和维护者往往是同一个人。
3.软件工程阶段(20世纪70年代之后):硬件技术的迅猛发展促使 软件的处理任务日趋复杂。“软件作坊”的开发效率低、软件产品 质量差。于是出现了“软件危机”。
《软件工程导论》 明廷堂 主讲
1.1 软件危机
1.1.3 消除软件危机的途径
1.为了消除软件危机,首先应该对计算机软件有一个正确的认 识。软件是程序、数据以及相关文档的完整集合;
2.必须充分认识到软件开发是一种组织良好、组织严密、团队协 作、共同完成的工程项目。必须充分吸收和借鉴人类在各种工程项 目中积累起来的有效的原理、技术和方法;
《软件工程导论》 明廷堂 主讲
1.1 软件危机
(4).软件的复杂性越来越大。软件处理问题的规模日趋庞大,处 理对象的类型由数值型发展成图像、音频、视频等。产生了软件的 复杂性与软件技术发展的背离现象;
(5).大多数软件都是新开发的。软件复用的成功实现任重而道远; (6).软件工作涉及许多社会因素。如机构、体制、管理等。 2.主观因素:软件开发方法和技术 (1).对软件开发与维护存在诸多错误认识,主要表现在: ①软件与程序的概念不清,认为“软件开发就是编写程序并使之 成功运行”;②忽视软件开发前期的调研和需求分析工作,认为 “有一个对目标的概括描述就可以着手编码了,许多细节可以在以 后补充”;③开发过程没有统一的、规范的方法论的指导;④轻视软 件的维护,认为“软件投入生产性运行后需要的维护工作并不多, 而且维护是一件很容易的事”。 (2).软件开发与维护的方法不正确。
《软件工程导论》 明廷堂 主讲
1.2 软件工程
1.面向过程方法学 传统方法学也称为生命周期方法学或结构化范型。它采用结构化 技术来完成软件开发的各项任务,并使用适当的软件工具或工程环 境来支持结构化技术的运用。 这种方法学将软件生命周期的全过程依次划分成若干个阶段,然 后顺序地完成每个阶段的任务。每个任务相对独立,而且比较简单, 便于人员分工协作,降低了工程难度;每个阶段采用科学的管理技 术和开发方法,并且在每个阶段末期对技术和管理进行严格的审查, 合格之后才开始下一阶段的工作,全部开发过程有条不紊地进行, 既保证了软件质量,又提高了软件的可维护性。
5.软件通常没有适当的文档资料; 6.软件成本在计算机系统总成本中所占的比例逐年上升; 7.软件开发生产率提高的速度,既跟不上硬件的发展速度,也远 远跟不上计算机应用迅速普及深入的趋势。
《软件工程导论》 明廷堂 主讲
1.1 软件危机
1.1.2 软件危机的成因
软件危机产生的原因一方面与软件本身的固有特性等客观因素 有关,另一方面也和软件开发与维护的方法不正确等主观因素有关。
《软件工程导论》 明廷堂 主讲
1.2 软件工程
1.2.1 软件工程简介
概括地说,软件工程是一门指导计算机软件开发和维护的工程 学科。采用工程的概念、原理、技术和方法来开发与维护软件,把 经过时间考验而且证明正确的管理技术和当前能够得到的最好的技 术方法结合起来,以便经济地开发出高质量的软件并有效地维护它, 这就是软件工程。软件工程具有下述本质特性:
软件工程方法学包括三个要素,它们是方法、工具和过程。其中, 方法是完成软件开发的各项任务的技术方法;工具是为方法的运用 提供自动的或半自动的软件支撑环境;过程是为了获得高质量的软 件所需要完成的一系列任务的框架,它规定了完成各项任务的工作
目前使用得最广泛的软件工程方法学,分别是面向过程方法学和 面向对象方法学。
1.客观因素:软件本身固有特性 (1).软件是一种逻辑实体,具有很强的抽象性。虽然可以将其记 录在各种介质上,但无法看到软件本身的形态,必须通过观察、分 析、思考才能了解其功能和性能。 (2).软件是由开发或工程化而形成的,没有明显的传统意义上的 制造过程。其生产过程主要表现为人脑的思维过程。 (3).软件在运行和使用期间,不存在机械磨损或老化等问题,然 而它存在退化问题。为了适应硬件支撑环境及应用需求的变化,需 要多次修改或维护软件,从而不可避免地引入新的错误,导致软件 的失效率升高、可靠性下降。
1.软件工程关注大型程序的构造; 2.软件工程的中心思想是控制复杂性; 3.软件需求动态变化; 4.软件开发效率至关重要; 5.和谐合作是软件开发的关键; 6.软件必须有效地支持其用户; 7.在软件工程领域通常由具Hale Waihona Puke Baidu一种文化背景的人替具有另一种文 化背景的人创造产品。
《软件工程导论》 明廷堂 主讲
1.2 软件工程
1.2.2 软件工程的基本原理
1. 2. 3. 4. 5. 6. 7.承认不断改进软件工程实践的必要性。
《软件工程导论》 明廷堂 主讲
1.2 软件工程
1.2.2 软件工程方法学
通常把在软件生命周期全过程中使用的一整套技术的集合称为 方法学(methodology),也称为范型(paradigm)。在软件工程范
3.应该推广使用在实践中总结出来的开发软件的成功的技术和方 法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系 统早期发展阶段形成的一些错误概念和做法;
4.应该开发和使用更好的软件工具。
总之,了解产生软件危机的原因,澄清错误认识,建立起关于 软件开发和维护的正确概念,还仅仅是解决软件危机的开始,全面 解决软件危机需要一系列综合措施。既要有技术措施(方法和工具), 又要有必要的组织管理措施。软件工程正是从管理和技术两方面研 究如何更好地开发和维护计算机软件的一门新兴学科。
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列 严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实 际上,几乎所有软件都不同程度地存在这些问题。
《软件工程导论》 明廷堂 主讲
1.1 软件危机
具体来说,软件危机主要有以下一些典型表现: 1.对软件开发成本和进度的估计常常很不准确; 2.用户对“已完成的”软件系统不满意的现象经常发生; 3.软件产品的质量往往靠不住; 4.软件常常是不可维护的;
第1章 软件工程学概述
1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 本章小结
《软件工程导论》 明廷堂 主讲
1.1 软件危机
1.1.1 软件危机简介
从20世纪40年代第一台计算机诞生到现在,软件技术的发展大 致可分为三个阶段:
1.程序设计阶段(20世纪40年代至60年代):计算机应用于一些专 业领域,比如数值计算和电气工程。当时的软件开发就是编写程序。 软件的开发者、使用者和维护者往往是同一个人。