第1章软件工程的基本概念_第1页
第1章软件工程的基本概念_第2页
第1章软件工程的基本概念_第3页
第1章软件工程的基本概念_第4页
第1章软件工程的基本概念_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、珠海市软件行业协会专家委员会主任珠海市软件行业协会专家委员会主任吉林大学珠海学院计算机系教授吉林大学珠海学院计算机系教授2345l程序:按事先设计的功能和性能要求执行的指令序列程序:按事先设计的功能和性能要求执行的指令序列 l数据:为进行通信、解释和处理而使用的信息的形式数据:为进行通信、解释和处理而使用的信息的形式 化表现形式化表现形式 l文档:与程序开发、维护和使用有关的图文材料文档:与程序开发、维护和使用有关的图文材料 程序、软件与软件产品程序、软件与软件产品 独唱独唱-小合唱小合唱-合唱合唱-万人大合唱万人大合唱 | | | 简单程序简单程序 较复杂程序较复杂程序 软件软件软件定义:软

2、件定义: 软件软件=程序程序+数据数据+文档文档678失效率失效率时间时间失效率失效率时间时间910差距差距11软件的开发研制成本高,年软件的开发研制成本高,年代以来,已大大超过硬件成本。代以来,已大大超过硬件成本。年份年份60 70 80 90 2000 200510080604020成本成本1213按功能按功能按规模按规模按工作方式按工作方式按使用频度按使用频度按失效影响按失效影响按服务对象按服务对象1415161718按软件结构和使用方式分类192021第一代第一代 算法技术算法技术第二代第二代 结构化软件技术结构化软件技术第三代第三代 面向对象技术面向对象技术第四代第四代 分布式面向对

3、象技术分布式面向对象技术第五代第五代 软件构件技术软件构件技术2223 软件开发进度难以预测软件开发进度难以预测软件开发成本难以控制软件开发成本难以控制用户对产品功能难以满足用户对产品功能难以满足软件产品质量无法保证软件产品质量无法保证软件产品难以维护软件产品难以维护24用户需求不明确用户需求不明确缺乏正确的理论指导缺乏正确的理论指导软件开发规模越来越大软件开发规模越来越大软件开发复杂度越来越高软件开发复杂度越来越高开发方法不正确逻辑部件规模庞大25 项目管理方法项目管理方法 软件工程学软件工程学 软件标准化软件标准化软件开发技术与方法软件开发技术与方法软件开发工具软件开发工具可重用性可重用性

4、软件工程正软件工程正是从管理和是从管理和技术两个方技术两个方面研究如何面研究如何更好地开发更好地开发和维护计算和维护计算机软件的学机软件的学科。科。26计算机计算机应用应用发展发展软件软件数量多数量多规模大规模大软件软件成本高成本高质量低质量低2728工程工程-将理论和所学的知识应用于实践的科学。将理论和所学的知识应用于实践的科学。软件工程软件工程-应用计算机科学、数学及管理科学等原应用计算机科学、数学及管理科学等原理,开发软件的工程。理,开发软件的工程。借鉴传统工程的原则、方法,以提高质量,降低成本借鉴传统工程的原则、方法,以提高质量,降低成本为目的。为目的。其中:其中: 软件工程是一门交叉

5、性学科。软件工程是一门交叉性学科。计算机科学、数学用于构造模型与算法;计算机科学、数学用于构造模型与算法;工程科学用于制定规范、设计模型、评估成本;工程科学用于制定规范、设计模型、评估成本;管理科学用于计划、资源、质量、成本等的管理。管理科学用于计划、资源、质量、成本等的管理。29软件工程是指导计算机软件开发和维软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法术和当前能够得到的最好的技术方

6、法结合起来结合起来即软件工程。即软件工程。30 用分阶段的生命周期严格管理;用分阶段的生命周期严格管理; 坚持进行阶段评审;坚持进行阶段评审; 实行严格的产品控制;实行严格的产品控制; 采用现代程序设计技术;采用现代程序设计技术; 结果应能清楚地审查;结果应能清楚地审查; 开发小组人员应少而精;开发小组人员应少而精; 承认不断改进软件工程实践的必要性。承认不断改进软件工程实践的必要性。31提供一系列软件开发技提供一系列软件开发技术。包括完成开发过程术。包括完成开发过程中各方面任务的方法并中各方面任务的方法并用某种特殊的语言或图用某种特殊的语言或图形来描述。形来描述。为软件开发提供为软件开发提供

7、“如何做如何做”的技术的技术32软件工具为软件方法提软件工具为软件方法提供了自动的或半自动的供了自动的或半自动的支撑环境。将多种工具支撑环境。将多种工具集成在一起可构成计算集成在一起可构成计算机辅助软件工程机辅助软件工程( CASE )的软件开发的软件开发支撑系统。支撑系统。为软件工程方法提供为软件工程方法提供支撑环境支撑环境33软件过程是将软件工程软件过程是将软件工程的方法和工具综合起来,的方法和工具综合起来,进行软件开发。进行软件开发。l方法使用的顺序方法使用的顺序l要求交付的文档资料要求交付的文档资料l为保证质量和适应变化所需要的管理为保证质量和适应变化所需要的管理l软件开发各个阶段完成

8、的里程碑软件开发各个阶段完成的里程碑定义了定义了: 34 付出较低的开发成本付出较低的开发成本 达到要求的软件功能达到要求的软件功能 取得较好的软件性能取得较好的软件性能 开发的软件易于移植开发的软件易于移植 需要较低的维护费用需要较低的维护费用 能按时完成开发工作,及时交付使用能按时完成开发工作,及时交付使用35采用分层次抽象,自顶向下、逐层细化的采用分层次抽象,自顶向下、逐层细化的办法控制软件开发过程的复杂性。办法控制软件开发过程的复杂性。将模块设计成将模块设计成“黑箱黑箱”,实现的细节,实现的细节隐藏在模块内部,不让模块的使用者直接访问。隐藏在模块内部,不让模块的使用者直接访问。这就是信

9、息封装,使用与实现分离的原则。这就是信息封装,使用与实现分离的原则。如如C C语言程序中的函数过程,语言程序中的函数过程,C+ C+ 语言语言程序中的类。模块化有助于信息隐蔽和抽象,有程序中的类。模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。助于表示复杂的系统。36要求在一个物理模块内集中逻辑上相互关要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,联的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的内聚。这有助于控制解的复杂模块内部具有较强的内聚。这有助于控制解的复杂性。性。软件开发过程中所有概念的表达应是确定软件开发过程中所有概念的表达应是确定的

10、、无歧义性的、规范的。的、无歧义性的、规范的。整个软件系统的各个模块应使用一致的概整个软件系统的各个模块应使用一致的概念、符号和术语。程序内部接口应保持一致。软件念、符号和术语。程序内部接口应保持一致。软件和硬件、操作系统的接口应保持一致。系统规格说和硬件、操作系统的接口应保持一致。系统规格说明与系统行为应保持一致。用于形式化规格说明的明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一致。公理系统应保持一致。37软件系统不丢失任何重要成分,可以完软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。为了保证系统的全实现系统所要求功能的程度。为了保证系统的完备性,在软件开发和运

11、行过程中需要严格的技完备性,在软件开发和运行过程中需要严格的技术评审。术评审。开发大型的软件系统需要对系统自顶开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统易于检查、向下、逐层分解。系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。测试、评审的原则,以确保系统的正确性。383940结构化开发方法结构化开发方法软件工程的研究课题软件工程的研究课题4142E.YourdonL.Constantine4344它以功能分解为基础,而用户的它以功能分解为基础,而用户的功能是经常改变的,必然导致系功能是经常改变的,必然导致系统的统的。 从数据流程图到软件结构图之间从数据

12、流程图到软件结构图之间的过渡有明显的断层,导致的过渡有明显的断层,导致。45该方法的分析能力较弱,是一种偏重设计的方法。该方法的分析能力较弱,是一种偏重设计的方法。通过建立对象模型、动态模型、功能模型,来实现对通过建立对象模型、动态模型、功能模型,来实现对整个系统分析和设计工作。整个系统分析和设计工作。最大特点是用用例(最大特点是用用例(UseUseCaseCase)与外部角色的交互与外部角色的交互来表示系统功能,用例贯穿于整个开发过程。来表示系统功能,用例贯穿于整个开发过程。的面向对象分析和设计方法:即的面向对象分析和设计方法:即OOAOOA和和OODOOD方法,方法,它是最早的面向对象的分

13、析和设计方法之一。它是最早的面向对象的分析和设计方法之一。 统一建模语言统一建模语言,国际对象管理组织国际对象管理组织OMGOMG已批准将已批准将UML1.1UML1.1作作为面向对象技术的标准建模语言。为面向对象技术的标准建模语言。4647可视化开发技术是随着图形用户界面的兴起而发展可视化开发技术是随着图形用户界面的兴起而发展起来的,是通过事件驱动实现应用软件的工作。起来的,是通过事件驱动实现应用软件的工作。简化了图形用户界面的设计和编码工作,将简化了图形用户界面的设计和编码工作,将开发的注意力主要集中在程序的执行逻辑和开发的注意力主要集中在程序的执行逻辑和工作流程上。工作流程上。软件开发简

14、单,易学、易上手。软件开发简单,易学、易上手。专业或非专业人员都能参与软件开发活动。专业或非专业人员都能参与软件开发活动。48495051 问题定义问题定义“要解决的问题是什么?要解决的问题是什么?”可行性研究可行性研究经济经济技术技术管理管理社会环境社会环境52确定系统逻辑模型确定系统逻辑模型确定目标系统必须具备的如下内容确定目标系统必须具备的如下内容 功能功能 性能性能 接口接口 约束、限制条件约束、限制条件 53软件设计软件设计 总体设计方案总体设计方案划分子系统功能划分子系统功能确定共享数据的组织确定共享数据的组织进行详细设计进行详细设计处理模块设计处理模块设计数据库系统设计数据库系统

15、设计输入输出界面设计输入输出界面设计编码的设计编码的设计 54 单元测试:测试模块单元测试:测试模块 集成测试:把经单元测试的模块按某种选定的集成测试:把经单元测试的模块按某种选定的策略装配起来,在装配过程中对程序进行必要策略装配起来,在装配过程中对程序进行必要的测试的测试验收测试:验收测试是按照需求规格说明书的验收测试:验收测试是按照需求规格说明书的规定,由用户对目标系统进行验收规定,由用户对目标系统进行验收通过各种类型的测试,使软件达到预定的要求通过各种类型的测试,使软件达到预定的要求55 日常运行管理日常运行管理根据一定的规格对系统进行必要的修改根据一定的规格对系统进行必要的修改评价系统

16、的运行效率、工作质量和经济效益评价系统的运行效率、工作质量和经济效益对运行费用和效果进行监理审计对运行费用和效果进行监理审计 56瀑布模型瀑布模型原型模型原型模型螺旋模型螺旋模型增量模型增量模型构件组装模型构件组装模型统一过程模型统一过程模型第四代技术第四代技术57 58 最早出现的软件开发模型,它提供了软件开发的基本最早出现的软件开发模型,它提供了软件开发的基本框架。框架。 瀑布模型的本质是一次通过,即每个活动只执行一次,瀑布模型的本质是一次通过,即每个活动只执行一次,最后得到软件产品。最后得到软件产品。 瀑布模型有利于大型软件开发过程中人员的组织及管瀑布模型有利于大型软件开发过程中人员的组

17、织及管理,有利于软件开发方法和工具的研究与使用,从而理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。提高了大型软件项目开发的质量和效率。 里程碑或基线驱动,或者说文档驱动;里程碑或基线驱动,或者说文档驱动;5960 用户满意?用户满意?软件维护与评价软件维护与评价YN构造初始模型构造初始模型确定用户基本要求确定用户基本要求评价、使用软件原型评价、使用软件原型修改、完善软件原型修改、完善软件原型原型是指模拟某种产品的原始模型。而原型是指模拟某种产品的原始模型。而在软件开发中,原型是软件的一个早期在软件开发中,原型是软件的一个早期可运行版本。快速原型法是根据软件需

18、可运行版本。快速原型法是根据软件需求迅速地产生软件产品的系统的一个原求迅速地产生软件产品的系统的一个原型,该原型能够表现出目标系统的功能型,该原型能够表现出目标系统的功能和行为特性,但不一定符合其全部的实和行为特性,但不一定符合其全部的实现需求。用户可通过原型作出评价,开现需求。用户可通过原型作出评价,开发者根据用户的意见对原型加以修改,发者根据用户的意见对原型加以修改,这样能够尽早的获得更完整、更准确的这样能够尽早的获得更完整、更准确的需求和设计。需求和设计。61 原型模型是软件工程的一个有效典范。原型模型是软件工程的一个有效典范。 建立原型仅仅是为了定义需求,之后就该抛弃,实际的建立原型仅

19、仅是为了定义需求,之后就该抛弃,实际的软件在充分考虑了质量和可维护性之后才被开发。软件在充分考虑了质量和可维护性之后才被开发。 它比线性模型更符合人们认识事物的过程和规律,是一它比线性模型更符合人们认识事物的过程和规律,是一种较实用的开发框架。种较实用的开发框架。 它适合于那些不能预先确切定义需求的软件系统的开发。它适合于那些不能预先确切定义需求的软件系统的开发。 62先构造一个功能简单而且质量要求不高的模先构造一个功能简单而且质量要求不高的模型系统,针对这个模型系统反复进行分析修改,形成型系统,针对这个模型系统反复进行分析修改,形成比较好的设计思想,据此设计出更加完整、准确、一比较好的设计思

20、想,据此设计出更加完整、准确、一致、可靠的最终系统。系统构造完成后,原来的模型致、可靠的最终系统。系统构造完成后,原来的模型系统就被废弃。系统就被废弃。先构造一个功能简单而且质量要求不高的模先构造一个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充型系统,作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,最后发展成为最终系统。修改,逐步追加新要求,最后发展成为最终系统。63 软件开发人员在与用户进行需求分析时,以软件开发人员在与用户进行需求分析时,以比较小的代价快速建立一个能够反映用户主要需比较小的代价快速建立一个能够反映用户主要需求的原型系统,让用户在计算

21、机上进行操作,在求的原型系统,让用户在计算机上进行操作,在实践过程中提出改进意见,开发人员根据用户的实践过程中提出改进意见,开发人员根据用户的意见,对原型进行补充和完善,然后再由用户试意见,对原型进行补充和完善,然后再由用户试用、评价、提出建议,重复这一过程,直到用户用、评价、提出建议,重复这一过程,直到用户对开发的原型系统满意为止。对开发的原型系统满意为止。 64 快速分析快速分析 构造原型构造原型 运行和评价原型运行和评价原型 修正和改进修正和改进 判定原型是否完成判定原型是否完成 判定原型细部是否说明判定原型细部是否说明 对原型细部说明对原型细部说明 判定原型效果判定原型效果 整理原型、

22、提供文档整理原型、提供文档65尽快向用户提供一个可在计算机尽快向用户提供一个可在计算机上运行的目标系统的模型,以便使用户和开上运行的目标系统的模型,以便使用户和开发者尽可能快地达成对目标系统发者尽可能快地达成对目标系统 “做什么做什么”的共识。的共识。 如果原型的第一版不是用户如果原型的第一版不是用户所需要的,就必须根据用户的意见迅速地修所需要的,就必须根据用户的意见迅速地修改它,构建出原型的第二版。改它,构建出原型的第二版。 66 用户看到的不是实际运行的系统。用户看到的不是实际运行的系统。 为了提高原型的开发速度,开发人员很可为了提高原型的开发速度,开发人员很可能采用不理想的选择。能采用不

23、理想的选择。67 68 融合了线性顺序模型的基本成份和原型实现模型的迭代融合了线性顺序模型的基本成份和原型实现模型的迭代特征。特征。 增量模型采用随着日程时间的进展而交错的线性序列。增量模型采用随着日程时间的进展而交错的线性序列。每一个线性序列产生软件的一个可发布的每一个线性序列产生软件的一个可发布的“增量增量”。 增量模型强调每一个增量均发布一个可操作产品。早期增量模型强调每一个增量均发布一个可操作产品。早期的增量是最终产品的的增量是最终产品的“可拆卸可拆卸”版本,但他们确实提供版本,但他们确实提供了给用户服务的功能,并且提供了给用户评估的平台。了给用户服务的功能,并且提供了给用户评估的平台

24、。697071螺旋模型螺旋模型确定软件目标,选定实施方案,弄清项目确定软件目标,选定实施方案,弄清项目 开发的限制,开发的限制,分析所选方案,考虑如何识别和消除风险分析所选方案,考虑如何识别和消除风险实施软件开发,实施软件开发,评价开发工作,提出修正建议评价开发工作,提出修正建议螺旋模型沿着螺线旋转,在四个象限上分别表螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:达四个方面的活动,即:72 保留了瀑布模型中系统地、按阶段逐步地进行软件保留了瀑布模型中系统地、按阶段逐步地进行软件开发和开发和“边开发、边评审边开发、边评审”的风格的风格 引入了风险分析,把制作原型作为风险分析的主要

25、引入了风险分析,把制作原型作为风险分析的主要措施。措施。 螺旋模型的使用需要具有相当丰富的风险评估经验螺旋模型的使用需要具有相当丰富的风险评估经验和专门知识,而且费用昂贵,所以只适合大型软件和专门知识,而且费用昂贵,所以只适合大型软件的开发。的开发。73 74可以勘探现有的数据,从中发现新的事实方法指可以勘探现有的数据,从中发现新的事实方法指导用户以专家的水平解决复杂的问题。导用户以专家的水平解决复杂的问题。以瀑布模型为基本框架,在不同开发阶段引入了以瀑布模型为基本框架,在不同开发阶段引入了原型实现方法和面向对象技术以克服瀑布模型的原型实现方法和面向对象技术以克服瀑布模型的缺点缺点适应于特定领

26、域软件和专家决策系统的开发。适应于特定领域软件和专家决策系统的开发。 75可以提高软件项目开发效率可以提高软件项目开发效率节省开发时间节省开发时间适应于面向对象的软件开发过程适应于面向对象的软件开发过程解决了代码结构经多次修改而变坏的问题解决了代码结构经多次修改而变坏的问题减少了许多中间步骤:如设计、编码和测试等减少了许多中间步骤:如设计、编码和测试等76在开发过程中需要大量的开发人员,不利于项目在开发过程中需要大量的开发人员,不利于项目的管理。的管理。要求严格管理文档,审核的难度加大要求严格管理文档,审核的难度加大。 变换模型有较大局限,以形式化开发方法为基础变换模型有较大局限,以形式化开发方法为基础的变换模型需要严格的数学理论和一整套开发环的变换模型需要严格的数学理论和一整套开发环境的支持,目前形式化开发方法在理论、实践和境的支持,目前形式化开发方法在理论、实践和人员培训方面距工程应用尚有一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论