《《软件开发方法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软件开发方法》PPT课件.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第 6 6 章章 软件开发方法软件开发方法6.1 6.1 软件软件6.2 6.2 软件生存周期软件生存周期6.3 6.3 软件开发模型软件开发模型1计算机语言的发展计算机语言的发展 第一代语言第一代语言 机器语言机器语言第二代语言第二代语言 汇编语言汇编语言第三代语言第三代语言 高级语言高级语言,亦称过程语言亦称过程语言 FORTRAN、COBOL、C、PASCAL 第四代语言第四代语言 非过程化语言非过程化语言 SQL第五代语言第五代语言 智能性语言智能性语言2软件软件=程序程序+文档文档程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵的信息的数据结构文档是与程序开发、
2、维护和使用有关的图文材料3软件的特征1.软件开发不同于硬件设计2.软件生产不同于硬件制造3.软件维护不同于硬件维修4软件危机定义定义 软件开发和维护过程中遇到的一系列严重问题表现表现e用户很不满意e质量很不可靠(产品无评价手段)e软件不可维护e对软件开发成本和进度的估算很不准确e没有适当的文档e软件成本比重上升e软件供不应求5软件危机产生的原因:产生的原因:(1)软件是逻辑的系统部件不是物理的系软件是逻辑的系统部件不是物理的系 统部件,以程序和文档形式存在统部件,以程序和文档形式存在 (2)软件规模越来越大,功能越来越强,软件规模越来越大,功能越来越强,软件结构非常复杂软件结构非常复杂结论:结
3、论:软件危机产生的根本原因与软件产品的特软件危机产生的根本原因与软件产品的特征和软件产品开发与维护的方法不正确有关征和软件产品开发与维护的方法不正确有关 解决软件危机的根本出路:解决软件危机的根本出路:(1)认识问题的原因所在,吸取前人的经验认识问题的原因所在,吸取前人的经验 (2)要有相应的理论、技术、工具要有相应的理论、技术、工具6软件工程软件工程软件工程的目的在于获得廉价的、能在软件工程的目的在于获得廉价的、能在实际机器上高效和可靠地工作的软件。实际机器上高效和可靠地工作的软件。为此需要建立并应用牢固的为此需要建立并应用牢固的工程工程准则准则和和方法方法软件工程软件工程定义很多,其定义很
4、多,其核心思想核心思想是:是:“采用工程化的原理和方法对软件进行计采用工程化的原理和方法对软件进行计划、开发和维护划、开发和维护”,因此需要建立和应,因此需要建立和应用用工程工程准则准则和和方法方法7软件生存周期软件生存周期软件生存周期一般划分为计划、开发、运行三个时期,每一时期又区分为若干阶段。e计划(定义)时期有问题定义和可行性研究两个阶段 e开发时期有需求分析、系统设计、编码和测试四个阶段 e运行时期主要是系统维护阶段 8问题定义可行性研究需求分析软件设计编码测试维护典型的软件生存周期 开发阶段维护阶段(软件系统目标与范围说明书)(可行性论证报告)(需求说明书)定义阶段(设计说明书)(程
5、序)(测试报告)(软件维护报告)9计划时期计划时期计划时期的主要任务:调查和分析调查用户需求分析新系统的主要目标,分析开发该系统的可行性。计划时期还应制定出人力、资源及进度计划。10开发时期开发时期开发时期的任务 设计和实现设计包括:需求分析、软件设计实现包括:编码和测试 把设计和实现分成两步走,目的是在开发初期让程序人员集中全力搞好软件的逻辑结构,避免过早地为实现的细节分散精力。11需求分析其任务在于弄清用户对软件系统的全部需求,并用“需求规格说明书”的形式准确地表达出来。12软件设计主要任务是将需求转变为软件的表示形式,有时又可细分为总体设计和详细设计。设计阶段要编写设计文档。13编码即按
6、照选定的语言编码即按照选定的语言,把设计的过程性描述翻译为源,把设计的过程性描述翻译为源程程序序。与与“需需求求分分析析”或或“设设计计”相相比比,“编编码码”要要简简单单得得多多,所所以以通通常由编码员(常由编码员(codercoder)或初级程)或初级程序员担任。序员担任。14测试是开发时期最后一个阶段。测试是开发时期最后一个阶段。按照不同的层次,又可细分为单元测试按照不同的层次,又可细分为单元测试 、综合测试、确认测试和系统测试等步、综合测试、确认测试和系统测试等步 骤。测试是保证软件质量的重要手段。骤。测试是保证软件质量的重要手段。测试阶段的文档称为“测试报告”,包括测试计划、测试用例
7、与测试结果等内容。15运行时期运行时期运行时期是软件生存周期的最后一个时期。软件人员在这一时期的工作,主要是做好软件维护。16软件开发模型软件开发模型传统的软件开发模型 瀑布模型 基于生存期的开发范型基于生存期的开发范型自顶向下,逐步细化自顶向下,逐步细化每一步都要求给出相每一步都要求给出相应的技术文档应的技术文档17主要特点主要特点坚持坚持结构化结构化(将逻辑实现与物理实现分开)思想和强调思想和强调文档文档齐齐套,是瀑布开发模型的两条重套,是瀑布开发模型的两条重要准则。要准则。瀑布模型瀑布模型 Waterfall Model(1976)18 传统的软件开发模型快速原型模型需求分析需求分析原型
8、开发原型开发最终系统设计最终系统设计原型评价原型评价最终系统实现最终系统实现用户用户反馈反馈19快速原型范型快速原型范型Rapid Prototyping Paradigm (1)建立原型建立原型 (2)实现最终软件实现最终软件原型开发范型的最大原型开发范型的最大优点优点:用户的用户的早期介入早期介入20面向对象开发模型面向对象开发模型面向对象思想的最重要特征,是在解题空间中引入了“对象”的概念,使之逼真地模拟问题空间中的客观实体,从而达到与人类的思维习惯相一致。21两种程序设计方法两种程序设计方法程序设计的两次飞跃结构化程序设计e程序=数据结构+算法面向对象程序设计e程序=对象+消息 22两
9、类软件工程方法两类软件工程方法传统软件工程e软件分析 总体设计 详细设计 面向过程的编码 测试 面向对象软件工程e软件分析与对象抽取 对象详细设计 面向对象的编码 测试 23结构化开发方法结构化开发方法基本思路:把整个系统开发过程分成若干阶段,每个阶段进行若干活动,每项活动应用一系列标准、规范、方法和技术,完成一个或者多个任务,形成符合给定规范的产品。分而治之“结构化”的含义:用一组规范的步骤、准则和工具来进行某项工作。24核心思想核心思想:自顶向下和逐步求精自顶向下和逐步求精SASA方法的特点方法的特点使使用用描描述述需需求求说说明明书书的的规规范范工工具具(数数据据流流图图、数数据据词词典
10、典、小小说说明明(加加工逻辑的描述工逻辑的描述)),使文档规范化使文档规范化 基本手段基本手段:分解和抽象分解和抽象 分解分解:大问题分割成小问题大问题分割成小问题,分别解决分别解决 抽象抽象:把细节略去把细节略去,先考虑最本质属性先考虑最本质属性25SASA方法方法分析步骤:分析步骤:e建立建立当前系统的当前系统的具体模型具体模型e抽象抽象出当前系统的出当前系统的逻辑模型逻辑模型e建立建立目标系统的目标系统的逻辑模型逻辑模型e对对目目标标系系统统做做完完整整的的描描述述。考考虑虑人人机机界界面和其它一些问题面和其它一些问题主要描述工具:主要描述工具:e 数据流图数据流图 表达需求表达需求 e
11、 数据词典数据词典 记录数据的逻辑定义记录数据的逻辑定义 26数据流图数据流图(DFD)(DFD)数据流图(数据流图(Data Flow DiagramData Flow Diagram)是描述系统)是描述系统中数据流程的图形工具。它标识了一个系统中数据流程的图形工具。它标识了一个系统的的逻辑输入逻辑输入和和逻辑输出逻辑输出以及把逻辑输入转换以及把逻辑输入转换为逻辑输出所需要的为逻辑输出所需要的加工处理加工处理 帐卡帐卡存折存折取取 款款 信信 息息存折存折核查核查付款付款登录登录无余拒付无余拒付储户储户付款信息付款信息可行性可行性27数据流图数据流图(DFD)(DFD)数据流图以图形的方式表
12、达了系统中的信息数据流图以图形的方式表达了系统中的信息变换和传递的过程变换和传递的过程基本符号:基本符号:数据流数据流 加工加工 数据存储数据存储 数据源点或数据源点或 终点终点28付款信息付款信息取取 款款 信信 息息无余拒付无余拒付取款单取款单 存折存折取款过程的数据流图核查核查付款付款登录登录存折存折储户储户 帐卡帐卡29数据流图数据流图(DFD)(DFD)SA方法要求:先全局后局部、先整体后细方法要求:先全局后局部、先整体后细 节、先抽象后具体节、先抽象后具体 总体数据流图总体数据流图 局部数据流图局部数据流图逐步细化逐步细化30数据流图数据流图(DFD)(DFD)一个复杂的软件其数据
13、流图通常分为顶层、中间层和底层e顶层:顶层:是一个高度抽象的软件系统的逻是一个高度抽象的软件系统的逻辑模型辑模型 e中间层:中间层:它既是上一层的加工的分解结它既是上一层的加工的分解结果,又是下一层若干加工的抽象果,又是下一层若干加工的抽象e底层:底层:由基本加工构成。所谓基本加工由基本加工构成。所谓基本加工是指不能再进行分解的加工是指不能再进行分解的加工313233数据词典数据词典(DD)(DD)SASA方法方法使用使用数据词典数据词典(Data Dictionary)对数据流名、数据存储名、)对数据流名、数据存储名、数据项名、基本加工名进行详细说明数据项名、基本加工名进行详细说明 数据流图
14、中包含的所有元素定义数据流图中包含的所有元素定义的集合构成了数据词典的集合构成了数据词典 DD是是SA方法的主要工具方法的主要工具34数据词典数据词典(DD)(DD)数据词典中条目类型数据词典中条目类型e数据流条目数据流条目常用符号常用符号=+|()e文件条目文件条目 列出文件记录的组成数据项组织方式列出文件记录的组成数据项组织方式e数据项条目数据项条目 数据单项定义,包括类型、取值范围数据单项定义,包括类型、取值范围e加工条目加工条目 加工的精确描述,小说明加工说明加工的精确描述,小说明加工说明35结构化设计(结构化设计(SDSD)在软件需求分析阶段,已搞清楚了软件在软件需求分析阶段,已搞清
15、楚了软件“做什做什么么”的问题,需求通过规格说明书描述,这也的问题,需求通过规格说明书描述,这也是目标系统的逻辑模型。是目标系统的逻辑模型。进入了设计阶段,要把软件进入了设计阶段,要把软件“做什么做什么”的逻辑的逻辑模型变换为模型变换为“怎么做怎么做”的物理模型,设计的结的物理模型,设计的结果反映在果反映在“设计规格说明书设计规格说明书”文档中。文档中。描述了软件的总体的体系结构,称为软件总体描述了软件的总体的体系结构,称为软件总体设计或结构设计。对结构进一步细化,称为详设计或结构设计。对结构进一步细化,称为详细设计或结构设计。细设计或结构设计。36SD方法的基本思想根据根据SASA方法中的数
16、据流图建立一个良好方法中的数据流图建立一个良好的模块结构图的模块结构图运用模块化的设计原理控制系统的复杂运用模块化的设计原理控制系统的复杂性,即设计出模块相对独立的,模块结性,即设计出模块相对独立的,模块结构图深度、宽度都适当的,单入口单出构图深度、宽度都适当的,单入口单出口的,单一功能的模块结构的软件结构口的,单一功能的模块结构的软件结构图。图。评价模块结构图质量的标准:评价模块结构图质量的标准:模块之间模块之间的联系越松散越好,而模块内各成分之的联系越松散越好,而模块内各成分之间的联系越紧凑越好间的联系越紧凑越好37SDSD方法的设计原理方法的设计原理l模块化模块化 指解决一个复杂问题时自
17、顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。模块化是软件解决复杂问题所具备的手段,为了说明这一点,可将问题的复杂性和工作量的关系进行推理l抽象抽象l模块独立模块独立38 模块化(module)模块:模块:在程序中是数据说明、可执行语句在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数、址的元素,如高级语言中的过程、函数、子程序等等。在软件的体系结构中,模块子程序等等。在软件的体系结构中,模块是可组合、分解和更换的
18、单元。模块具有是可组合、分解和更换的单元。模块具有以下几种基本属性:以下几种基本属性:接口:接口:指模块的输入与输出。指模块的输入与输出。功能:功能:指模块实现什么功能。指模块实现什么功能。逻辑:逻辑:描述内部如何实现要求的功能及所描述内部如何实现要求的功能及所需的数据。需的数据。39模块独立性(module independence)模块独立性:每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。模块独立性有两个定性的度量标准:内聚(模块内部各成分之间的联系模块内部各成分之间的联系模块内部各成分之间的联系模块内部各成分之间的联系)和耦合(模块之间的联系模块之间的联系模块
19、之间的联系模块之间的联系)模块间耦合性越小越好模块内聚性越大越好40模块的设计准则模块的设计准则通过模块的分解和合并,提高模块独立性通过模块的分解和合并,提高模块独立性模块调用个数最好不要超过模块调用个数最好不要超过5个个降低模块接口的复杂性降低模块接口的复杂性模块的作用域应该在控制域之内模块的作用域应该在控制域之内模块应该设计成单入口单出口模块应该设计成单入口单出口模块的大小要适中,一般在模块的大小要适中,一般在50条语句左右条语句左右41详细设计和编码详细设计和编码三种基本控制结构顺序结构选择结构循环结构42详细设计的描述工具:程序流程图方框图(N-S图)问题分析图(PAD图)伪码(PDL
20、语言)43程序流程图程序流程图44N-S图图N-SN-S图也叫做盒图。45问题分析图问题分析图(PAD)46过程设计语言过程设计语言(Process Design Language,PDL)也称程序描述语言(Program Description Language),又称为伪码(pseudo code)。属于文字形式的表达工具。它并非真正的代码,也不能在计算机上执行,但形式上与代码相似。它是一种用于描述模块算法设计和处理细节的语言。PDL具有严格的关键字外层语法,用于定义控制结构、数据结构和模块接口,而它表示实际操作和条件的内层语法又是灵活自由的,使用自然语言的词汇。47结构化编码方法结构化编码方法程序的正确性可读性、可理解性、可测试性、可维护性49面向对象开发方法面向对象开发方法 OOSD一、面向对象分析一、面向对象分析(OOA)二、面向对象设计二、面向对象设计(OOD)三、面向对象编程三、面向对象编程(OOP)O Object-bject-O Oriented riented D DesignesignO Object-bject-O Oriented riented P Programingrograming O Object-bject-O Oriented riented A Analysisnalysis 50