计算机导论第8章-软件工程_第1页
计算机导论第8章-软件工程_第2页
计算机导论第8章-软件工程_第3页
计算机导论第8章-软件工程_第4页
计算机导论第8章-软件工程_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机导论学习目标: 为后续计算机类专业课程奠定基础;培养计算思维,掌握计算技能。参考教材:计算机导论,清华大学出版社,2017.7第1章:计算机概述第2章:计算机中的数据第3章:计算机系统组成第4章:操作系统第5章:程序设计基础第6章:数据结构*第7章:数据库系统教学内容:计算机导论第8章:软件工程*第9章:计算机网络第10章:计算机网络安全第11章:Windows 7操作与应用第12章:Office 2010操作与应用第13章:网页设计与制作【学习目标】1.了解软件生命周期的概念2.了解系统分析、系统设计、系统实现及系统测试的基本概念3.了解软件文档编写知识4.了解软件项目管理工具及基本概

2、念5.掌握软件生命周期、系统测试等软件工程的必备知识第8章 软件工程【学习内容】8.1 软件生命周期8.2 系统分析8.3 系统设计8.4 系统实现8.5 系统测试8.6 软件文档8.7 软件项目管理第8章 软件工程8.1 软件生命周期8.1.1 软件的概念一般来讲,计算机软件有三部分组成:程序、数据结构和文档。(1)程序是指为进行某项活动或过程所规定的执行途径,即数据与指令的集合;(2)数据结构是指数据元素的集合和数据元素之间的关系的集合,是计算机存储、组织数据的方式;(3)文档则是描述程序开发过程、开发方法及使用说明等资料的集合。8.1.1 软件的概念按功能分计算机软件可分为系统软件、支撑

3、软件和应用软件三大类。 按规模分计算机软件又可分为:微型、小型、中型、大型和超大型软件; 按工作方式分计算机软件可分:实时处理软件、分时处理软件、交互式处理软件和批处理软件。8.1 软件生命周期8.1.2 软件工程的含义1 . 软件工程的基本原理中大型软件开发过程本身就是一项复杂的工程活动,需要投入大量的人力、物力和财力,就像建筑工程一样,必须按照工程方法学来标准化管理。一般来讲,软件工程应该遵循以下七条基本原理:(1)用分阶段的生存周期计划严格管理 (2)坚持进行阶段评审(3)实行严格的产品控制 (4)采用现代程序设计方法(5)结果应能清楚地审查 (6)开发小组的人员应该少而精(7)不断改进

4、软件工程实践的必要性8.1 软件生命周期8.1.2 软件工程的含义2 . 软件生命周期软件的生命周期,亦称软件的生存周期。是按开发软件的规模和复杂程度,从时间上把软件开发的整个过程(从计划开发开始到软件报废为止的整个历史阶段)进行分解,形成相对独立的几个阶段,每个阶段又分解成几个具体的任务,然后按规定顺序依次完成阶段的任务并规定一套标准的文档作为各个阶段的开发成果,最后生产出高质量的软件。根据我国现行信息技术国家标准规定(国标名:信息技术 软件生存周期过程,国标号:GB/T 8566-2007) ,把软件生存周期中可能执行的活动分为5个基本过程、9个支持过程和7个组织过程。8.1 软件生命周期

5、图8-1 国标GB/T 8566-2007的结构8.1.3 软件工程的三要素通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(Methodology),软件工程方法学包含3个要素:方法、工具和过程。方法是完成软件开发的各项任务的技术方法,是回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。8.1 软件生命周期8.1.3 软件工程的三要素目前,最广泛应用的软件工程方法学分别是传统方法学(面向过程方法学)和面向对象方法学。8.1 软件生命周期1传统方法学传统方法学也

6、称面向过程方法学,它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程来支持结构化技术的运用。传统方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。采用此方法开发软件,从对问题的抽象逻辑分析开始,逐阶段地按顺序进行开发。8.1.3 软件工程的三要素2面向对象方法学与传统方法学相反,面向对象方法学则把数据和行为看成同等重要,它是一种以数据为主线,把数据和行为紧密地结合起来的方法。概括地说,面向对象方法学具有下述4个要点:(1)把对象(object)作为融合了数据和行为的软件构件。(2)把所有的对象都划分成类(

7、class)。(3)按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。(4)对象彼此间仅能通过发送消息互相联系。8.1 软件生命周期8.2.1 面向过程分析如果实现阶段使用过程式语言,那么面向过程分析就是分析阶段使用的方法。面向过程分析方法,就是将整个系统分成为若干个功能上独立的模块,然后针对每个模块自顶向下、逐步求精地分析每一个层次的各个功能的实现步骤。这种情况下的规格说明可以使用多种建模工具,如数据流图、实体联系图、程序流程图等。8.2 系统分析8.2.1 面向过程分析1 . 数据流图数据流图是结构化分析方法中使用的工具,是从数据传递

8、和加工角度,以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它只是一种功能模型。在面向过程开发方法中,数据流图是需求分析阶段产生的结果,它们使用4种符号,如图8-2所示:8.2 系统分析图8-2 数据流图的基本符8.2.1 面向过程分析8.2 系统分析8.2.1 面向过程分析【例】下图是数据流图,反映了仓库管理员在接收事务(如出库事务)后接下来必须完成的事务的过程,并且体现了过程中产生的数据清单(如:库存清单、定货报表)的流向和处理过程。8.2 系统分析8.2.1 面向过程分析2 . 实体关系图实体关系图,即E-R图。提供了表示实体、属性和联系的方法,用来

9、描述现实世界的概念模型。E-R图用矩形表示实体,矩形框内写明实体名;E-R图用椭圆表示属性(实体所具有的某一特性),并用无向边将其与相应的实体连接起来;E-R图用菱形表示实体之间的联系,在菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n),8.2 系统分析8.2.1 面向过程分析【例】下图是反映教师、课程、学生三个实体之间关系的ER图。教师与课程之间是多对多的关系,学生与课程之间是多对多的关系。8.2 系统分析8.2.1 面向过程分析3 . 程序流程图程序流程图(也称框图)是程序分析中最基本、最重要的分析技术,也是进行程序流程分析的最基

10、本的工具。程序流程图用一组框图符号来表示程序中的各种操作,它是人们对解决问题的方法、思路或算法的一种描述。程序流程图的基本符号及符号的意义如下图所示:8.2 系统分析8.2.1 面向过程分析高级程序设计语言中,通常有三种不同的程序结构,即:顺序结构、选择结构和循环结构,它们的流程图如下。8.2 系统分析8.2.2 面向对象分析如果实现过程使用的是面向对象语言,那么分析过程就是面向对象分析过程。此情况下可以使用多种工具来编写规格说明文档,例如用例图、类图、状态图等。1 . 用例图用例图(User Case)是指由参与者(Actor)、用例(Use Case)以及它们之间的关系构成,用于描述系统功

11、能的视图。用例图主要用于对系统、子系统或类的功能行为进行建模。8.2 系统分析8.2.2 面向对象分析1 . 用例图用例图由参与者(Actor)、用例(Use Case)、系统边界和箭头组成。 矩形表示系统边界或系统; 圆角矩形表示用例的行动; 椭圆形表示用例; 线条人物表示参与者; 箭头表示参与者和系统间的关联关系。箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方。8.2 系统分析8.2.2 面向对象分析1 . 用例图【例】老式电梯的用例图。图中的系统是电梯,动作者是电梯的使用者。这里有两个用例:按电梯按钮(在每层的大厅)和在电梯内按楼层按钮。8.2 系统分析8.2.2 面向对象

12、分析2. 类图类图是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图由许多说明性的模型元素组成,例如类、包和它们之间的关系,这些元素和它们的内容互相连接。类图最常用的是UML图,显示类、接口以及它们之间的静态结构和关系,它用于描述系统的结构化设计。8.2 系统分析8.2.2 面向对象分析2. 类图【例】电梯的一个类图。8.2 系统分析8.2.2 面向对象分析3 . 状态图状态图是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应。通常,UML状态图可用于表示类、角色、子系统或组件的复杂行为。8.2 系统分析在设计阶段

13、,系统所有的组成部分都被定义。系统设计内容主要包括:确定设计方针和方法;将系统分解为若干子系统;确定各子系统的目标、功能及其相互关系;决定对子系统的管理体制和控制方式;对各子系统进行技术设计和评价;对全系统进行技术设计和评价等。8.3 系统设计8.3.1 面向过程设计1. 结构图在面向过程设计中,说明模块间关系的常用工具是结构图。结构图是指以模块的调用关系为线索,自上而下的连线表示调用关系并注明参数传递的方向和内容,从宏观上反映软件层次结构的图形。8.3 系统设计8.3.1 面向过程设计1. 结构图 结构图的基本图形符号如下图所示。8.3 系统设计8.3.1 面向过程设计1. 结构图 【例】结

14、构图的实例(“销售订单处理”功能结构图)如下图所示。8.3.1 面向过程设计2 . 模块化模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干子模块的过程,通过模块的不同组合得到不同品种、不同规格的产品。模块化意味着将大项目分解成较小的部分,以便能够容易理解和处理,换言之,模块化意味着将大程序分解成能相互通信的小程序。模块化是一种将复杂系统分解成多个更好管理的子模块的方式,当系统被分解成模块时,主要关心两点:耦合性和内聚性。8.3 系统设计8.3.1 面向过程设计2 . 模块化(1)耦合性 耦合性(Coupling),也叫耦合度,是对模块间互相绑定紧密程度的度量。也指模块之间的依赖关系,包

15、括控制关系、调用关系、数据传递关系等。 耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。 模块间联系越多,其耦合性越强,同时表明其独立性越差。划分模块的一个准则就是高内聚低耦合。 注意:软件系统中模块间的耦合必须最小化。8.3 系统设计8.3.1 面向过程设计2 . 模块化(2)内聚性 内聚性也称块内联系,是指模块之间的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。 模块中组成元素结合的越紧密,模块的内聚性就越高,模块的独立性也就越高。理想的内聚性要求模块的功能应明确、单一,即一个模块只做一件事情。 注意:软件系统模块间的内聚必须最大化。8.3

16、系统设计8.3.2 面向对象设计在面向对象设计中,设计阶段通过详细描述类的细节(列出类的属性和方法)来继续。在面向对象设计中,电梯设计中的4个类如下图所示。8.3 系统设计 在系统实现阶段,程序员为面向过程设计中的模块编写程序单元,或者实现面向对象设计中的类。8.4 系统实现8.4.1 语言选择在系统实现阶段,工程团队需要从面向过程语言中选择一种或一组语言。不同的编程语言有着不同的优势,要根据实际项目的特性去选择编程语言,而有的项目可能同时用到多种编程语言。8.4.2 软件质量一般来讲,软件质量可以用三个广义的属性来度量:可操作性、可维护性和可迁移性。每个属性还可以展开,如下图所示。8.4 系

17、统实现8.4.2 软件质量8.4.2 软件质量(1)可操作性度量软件的可操作性有多种方法:准确性、高效性、可靠性、安全性和适用性。(2)可维护性可维护性是指当环境改变或者软件发生错误时,软件产品可被修改的能力。(3)可迁移性可迁移性是指把数据或系统从一个平台移动到另一个平台并重用代码的能力。8.4 系统实现 软件测试是指在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 软件测试有两种基本的测试方法:白盒测试和黑盒测试。8.5 系统测试8.5.1 白盒测试 白盒测试(又称结构测试、玻璃盒测试)是基于了解软件内部结构的一种测试方法。白盒测试的目标

18、是检查软件所有的部分是否全部设计出来。 白盒测试假定测试者知道有关软件的一切,程序就像透明的玻璃盒子,其中的每件事都是可见的。 白盒测试是全面了解程序内部逻辑结构、对所有逻辑路径进行测试的一种测试方法。8.5 系统测试8.5.1 白盒测试 使用白盒测试方法需要满足以下4条标准: 保证每个模块中的所有独立的路径至少被测试过一次。 对所有的逻辑值均需要测试真、假两个分支。 每个循环都被测试。 所有的数据结构都被测试。8.5 系统测试8.5.1 白盒测试 根据测试程序是否运行,白盒测试分静态白盒测试和动态白盒测试两种。 静态白盒测试也称为结构分析,是指在不执行程序的条件下审查软件设计、体系结构和代码

19、,从而找出软件缺陷的过程。 静态白盒测试方法包括代码走查法、代码审查法、控制流分析法、数据流分析法等。 动态白盒测试也称逻辑覆盖,是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。 动态白盒测试包括逻辑驱动测试法(语句覆盖、分支覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)和基本路径测试法(路径覆盖)。8.5 系统测试8.5.1 白盒测试【例】白盒测试举例(基本路径测试)。假定系统只由一个程序构成,程序只有一个单循环,左边为程序的UML图,右边列出了它的独立路径数。8.5 系统测试8.5.2 黑盒测试黑盒测试(也称功能测试)就是将被测程序(软件)看作一

20、个打不开的黑盒子,测试人员并不知道程序的内部结构,只是根据规格说明文档了解程序的功能,根据功能需求设计测试用例,进行测试。常用的黑盒测试方法有:等价类测试法、边界值测试法、因果图测试法、决策表测试法等。1. 等价类测试法 等价类测试法是把所有可能的输入数据划分成若干部分,从每一部分中选取少数有代表性的数据作为测试用例。 等价类测试法适用于测试各种合法输入和非法输入是否能产生正确的输出结果。8.5 系统测试8.5.2 黑盒测试2. 边界值测试法长期的测试工作经验可以得到一个结论:大量缺陷发生在输入域或输出域的边界(即极值)上,而非输入或输出域的内部。例如:x=100被写成x100。3. 因果图测

21、试法程序规范的描述中,“原因”往往是输入条件或是输入条件的等价类,“结果”是输出条件。因果图测试法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的测试方法,它适合于检查程序输入条件的各种组合情况。8.5 系统测试软件的正确使用与有效维护离不开文档。文档是一个持续的过程。软件文档编制贯穿于软件产品开发的各个阶段,是提高软件产品开发效率、规范软件产品开发过程、保证软件产品质量的关键。软件通常有三种独立的文档:用户文档、系统文档和技术文档。8.6 软件文档8.6.1 用户文档为了能够正确使用软件,用户手册对用户来说是必不可少的。它告诉用户如何一步一步地使用软件系统。它通常包含一个教程,用来

22、指导用户熟悉软件系统的各项特性。8.6.2 系统文档系统文档定义软件本身。撰写系统文档的目的是为了让原始开发人员之外的人能够维护和修改软件系统。系统文档在系统开发的所有阶段都应该存在。8.6 软件文档8.6.3 技术文档技术文档描述了软件系统的安装和服务,包括安装文档和服务文档。安装文档描述系统软件如何安装在每台计算机上;服务文档则描述系统应该如何维护和更新。软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利地完成并且对人员、产品、过程和项目进行分析和管理的活动。8.7 软件项目管理8.7.1 软件项目管理的内容软件项目管理的内容主要包括如下几个方面:人员组织与管理、软件度量、计划

23、管理、风险管理、软件质量保证、软件过程能力评估、软件配置管理等。这几个方面都是贯穿、交织于整个软件开发过程中的。8.7.1 软件项目管理的内容 人员的组织与管理把注意力集中在项目组人员的构成、优化上; 软件度量是用量化的方法来评测软件开发中的费用、生产率、进度和产品质量等要素是否符合期望值; 软件项目计划主要包括工作量、成本、开发时间的估计; 风险管理预测未来可能出现的危害到软件产品质量的各种潜在因素; 质量保证是保证产品和服务充分满足消费者的要求而进行的有计划、有组织的活动; 软件过程能力评估是对软件开发能力的高低进行衡量;软件配置管理是针对开发过程中人员、工具配置、使用等的管理策略。8.7

24、 软件项目管理8.7.2 软件项目管理的原则在进行软件项目管理时,应该遵循以下七条原则:(1)用分阶段的生命周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)结果应能够清楚地审查;(6)开发小组的人员应该少而精;(7)承认不断改进软件工程实践的必要性。8.7 软件项目管理8.7.3 人员组织与管理软件开发过程中的开发人员是最大的资源。对人员的配置、调度安排贯穿于整个软件过程,人员的组织管理是否得当,是影响软件项目质量的决定性因素。8.7 软件项目管理(1)在软件开发的开始,要合理地配置人员,根据项目的工作量、所需要的专业技能,再参考各个人员的能力、性格、经验,组织一个高效、和谐的开发小组。(2)在选择人员的问题上,要结合实际情况来决定是否选入一个开发组员。(3)在决定一个开发组的开发人员数量时,除了考虑候选人素质以外,还要综合考虑项目规模、工期、预算、开发环境等因素的影响。8.7.4 计划管理软件项目计划是一个软件项目进入系统实施的启动阶段,主要进行的工作包括:确定详细的项目实施范围、定义递交的工作成果、评估实施过程中主要的风险、制定项目实施的时间计划、成本和预算计划、人力资源计划等。软件项目管理过程的第一项计划活动就是估算,估算项目周期、项目的工作量、以及人力资源计

温馨提示

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

评论

0/150

提交评论