第1章软件开发过程与方法课件.ppt

上传人(卖家):晟晟文业 文档编号:3860744 上传时间:2022-10-19 格式:PPT 页数:41 大小:125.73KB
下载 相关 举报
第1章软件开发过程与方法课件.ppt_第1页
第1页 / 共41页
第1章软件开发过程与方法课件.ppt_第2页
第2页 / 共41页
第1章软件开发过程与方法课件.ppt_第3页
第3页 / 共41页
第1章软件开发过程与方法课件.ppt_第4页
第4页 / 共41页
第1章软件开发过程与方法课件.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、VC+程序设计项目实践 贾振华贾振华第第1 1章章 软件开发过程与方法软件开发过程与方法学习目标:学习目标:了解软件的开发过程了解软件的开发过程了解软件的开发方法了解软件的开发方法理解编码实现的规则理解编码实现的规则熟悉测试方法熟悉测试方法1.11.1软件开发过程软件开发过程软件开发过程是按照软件工业化的标准定义的在软件开发过程是按照软件工业化的标准定义的在软件开发中必须具有的一系列过程规范。软件开发中必须具有的一系列过程规范。软件开发过程是定义软件中的软件需求、软件设软件开发过程是定义软件中的软件需求、软件设计,软件编码、软件测试、软件部署的实现目标计,软件编码、软件测试、软件部署的实现目标

2、和规范化的管理方法论。和规范化的管理方法论。软件开发过程是保证软件高质量完成的一系列任软件开发过程是保证软件高质量完成的一系列任务的框架,它规定了完成各项任务的工作步骤。务的框架,它规定了完成各项任务的工作步骤。1.11.1软件开发过程软件开发过程1.1.11.1.1需求分析需求分析需求分析阶段研究的对象是软件项目的用户要求。需求分析阶段研究的对象是软件项目的用户要求。一方面,必须全面理解用户的各项要求,但又不一方面,必须全面理解用户的各项要求,但又不能全盘接受所有的要求,因为并非所有的用户要能全盘接受所有的要求,因为并非所有的用户要求都是合理的,对其中模糊的要求还需要澄清,求都是合理的,对其

3、中模糊的要求还需要澄清,然后才能决定是否可以采纳。对于那些无法实现然后才能决定是否可以采纳。对于那些无法实现的要求,应向用户做充分的解释,以求得谅解。的要求,应向用户做充分的解释,以求得谅解。另一方面,要准确地表达已经接受的用户要求。另一方面,要准确地表达已经接受的用户要求。只有经过确切描述的软件需求才能成为软件设计只有经过确切描述的软件需求才能成为软件设计的基础。的基础。1.11.1软件开发过程软件开发过程1.1.11.1.1需求分析需求分析软件需求分析的目标是准确理解用户的要求,进软件需求分析的目标是准确理解用户的要求,进行细致的调查分析,将用户的非形式的要求转化行细致的调查分析,将用户的

4、非形式的要求转化为完整的需求定义,再将需求定义转换为相应的为完整的需求定义,再将需求定义转换为相应的形式的规格说明。形式的规格说明。1.11.1软件开发过程软件开发过程1.1.11.1.1需求分析需求分析制定软件的需求规格说明不仅仅是软件开发人员制定软件的需求规格说明不仅仅是软件开发人员的事,用户也起着至关重要的作用。用户必须对的事,用户也起着至关重要的作用。用户必须对软件功能和性能提出初步要求,并澄清一些模糊软件功能和性能提出初步要求,并澄清一些模糊概念。而软件分析人员则要认真了解用户的要求,概念。而软件分析人员则要认真了解用户的要求,细致地进行调查分析,把用户细致地进行调查分析,把用户“做

5、什么做什么”的要求的要求最终转换成一个完全的、精细的软件逻辑模型并最终转换成一个完全的、精细的软件逻辑模型并写出软件的需求规格说明,准确地表达用户的要写出软件的需求规格说明,准确地表达用户的要求。包括的内容有:求。包括的内容有:1.11.1软件开发过程软件开发过程1.1.11.1.1需求分析需求分析1 1)功能需求)功能需求 2 2)性能需求)性能需求 3 3)可靠性和可用性需求)可靠性和可用性需求4 4)出错性处理需求)出错性处理需求5 5)接口需求)接口需求6 6)界面需求)界面需求7 7)其他需求)其他需求1.11.1软件开发过程软件开发过程1.1.21.1.2系统分析与设计系统分析与设

6、计系统分析与设计可以分为总体设计和详细设计。系统分析与设计可以分为总体设计和详细设计。总体设计的基本目的是:从整体角度上来说,系总体设计的基本目的是:从整体角度上来说,系统该如何实现;总体设计称为概要设计或初步设统该如何实现;总体设计称为概要设计或初步设计。这个阶段工作将划分出系统的组成:程序、计。这个阶段工作将划分出系统的组成:程序、文件、数据库、人工过程和文档等,另外就是设文件、数据库、人工过程和文档等,另外就是设计软件的结构,即确定系统由哪些功能模块组成,计软件的结构,即确定系统由哪些功能模块组成,以及相互之间的关系。以及相互之间的关系。详细设计的根本目标是确定怎样具体实现所要求详细设计

7、的根本目标是确定怎样具体实现所要求的系统,即能够对系统进行精确描述,为编码打的系统,即能够对系统进行精确描述,为编码打下基础。详细设计还没有编写具体代码,只是设下基础。详细设计还没有编写具体代码,只是设计出计出“程序蓝图程序蓝图”,程序员根据这个蓝图编写出,程序员根据这个蓝图编写出实际的程序代码。详细设计的结果决定了程序代实际的程序代码。详细设计的结果决定了程序代码的质量。码的质量。1.11.1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现编码实现是把系统分析与设计结果转换成某种程编码实现是把系统分析与设计结果转换成某种程序设计语言代码的过程。程序的质量主要取决于序设计语言代码的

8、过程。程序的质量主要取决于软件的设计质量。但是,所选用的程序设计语言软件的设计质量。但是,所选用的程序设计语言的特点及编程风格也对程序的可靠性、可读性、的特点及编程风格也对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。可测试性和可维护性产生深远的影响。在编写代码过程中,注意编码风格,要求源代码在编写代码过程中,注意编码风格,要求源代码的逻辑简明清晰、易读易懂,为达到这个目的,的逻辑简明清晰、易读易懂,为达到这个目的,应该遵循下述规则:应该遵循下述规则:1.11.1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现1 1)程序内部文档)程序内部文档程序内部文档包括恰当的标识符

9、、适当的注释和程序内部文档包括恰当的标识符、适当的注释和程序的组织风格等。程序的组织风格等。选取含义鲜明的标识符,能够正确提示程序对象选取含义鲜明的标识符,能够正确提示程序对象所代表的实体,有助于对程序的理解。如果使用所代表的实体,有助于对程序的理解。如果使用缩写,缩写规则应该一致,并给每个标志符加上缩写,缩写规则应该一致,并给每个标志符加上注释。注释。1.11.1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现1 1)程序内部文档(续)程序内部文档(续)注释是阅读和理解程序的重要手段,通常在每个注释是阅读和理解程序的重要手段,通常在每个模块的开始有一段序言性注释,简要说明模块的模

10、块的开始有一段序言性注释,简要说明模块的功能、主要算法、接口情况、重要数据说明以及功能、主要算法、接口情况、重要数据说明以及开发人员、时间、版本等内容。注释的内容一定开发人员、时间、版本等内容。注释的内容一定要正确,错误的注释不仅不对理解程序起帮助,要正确,错误的注释不仅不对理解程序起帮助,反而错误的引导对程序的理解。反而错误的引导对程序的理解。程序源代码的组织对于程序的可读性影响很大,程序源代码的组织对于程序的可读性影响很大,利用适当的空白改善程序的视觉反应,使程序的利用适当的空白改善程序的视觉反应,使程序的层次结构清晰明显。层次结构清晰明显。1.11.1软件开发过程软件开发过程1.1.31

11、.1.3编码实现编码实现2 2)数据说明)数据说明数据说明的次序标准化,可按照数据结构或数据数据说明的次序标准化,可按照数据结构或数据类型确定的次序。当多个变量名在一个说明语句类型确定的次序。当多个变量名在一个说明语句中,应按照字母顺序排列这些变量。在说明一个中,应按照字母顺序排列这些变量。在说明一个复杂的数据结构时,应加注释说明方法和特点。复杂的数据结构时,应加注释说明方法和特点。不同数据类型应按存储空间的大小顺序说明。不同数据类型应按存储空间的大小顺序说明。1.11.1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现3 3)语句构造)语句构造在构造语句时,应遵循的原则是简单而直

12、接,不在构造语句时,应遵循的原则是简单而直接,不能为了提高效率而使程序变得过分复杂。具体规能为了提高效率而使程序变得过分复杂。具体规则如下:则如下:在一行内只写一条语句,并采取适当的缩进格式,在一行内只写一条语句,并采取适当的缩进格式,使程序的逻辑和功能变得更加明确;使程序的逻辑和功能变得更加明确;1.11.1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现3 3)语句构造(续)语句构造(续)尽量避免复杂的条件;尽量避免复杂的条件;尽量减少非操作的条件语句;尽量减少非操作的条件语句;避免大量使用循环嵌套或条件嵌套;避免大量使用循环嵌套或条件嵌套;使用括号来表达逻辑表达式或算术表达式

13、的运算使用括号来表达逻辑表达式或算术表达式的运算顺序。顺序。1.11.1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现4 4)输入输出)输入输出在设计和编写程序时应考虑如下规则:在设计和编写程序时应考虑如下规则:对所有输入的数据都进行验证,从而识别错误的对所有输入的数据都进行验证,从而识别错误的输入,以保证每个数据的有效性;输入,以保证每个数据的有效性;对所有输入数据进行输入提示,详细说明可用的对所有输入数据进行输入提示,详细说明可用的选择或边界值;选择或边界值;1.11.1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现4 4)输入输出(续)输入输出(续)检查输入项

14、重要组合的合法性,必要时报告输入检查输入项重要组合的合法性,必要时报告输入状态信息;状态信息;使得输入的步骤和操作尽可能简单,并保持简单使得输入的步骤和操作尽可能简单,并保持简单的输入格式;的输入格式;输入一批数据时,最好使用数据结束标志,而不输入一批数据时,最好使用数据结束标志,而不要由用户指定输入数据数目;要由用户指定输入数据数目;输入数据时,应允许使用自由格式输入,应允许输入数据时,应允许使用自由格式输入,应允许有缺省值;有缺省值;1.11.1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现4 4)输入输出(续)输入输出(续)在以交互式输入在以交互式输入/输出方式进行输入时,

15、要在屏幕输出方式进行输入时,要在屏幕上使用提示符明确提示交互输入的请求,指明可上使用提示符明确提示交互输入的请求,指明可使用选择项的种类和取值范围。同时,在数据输使用选择项的种类和取值范围。同时,在数据输入的过程中和输入结束时,也要在屏幕上给出状入的过程中和输入结束时,也要在屏幕上给出状态信息;态信息;当程序语言对输入格式有严格要求时,应保持输当程序语言对输入格式有严格要求时,应保持输入格式与输入语句要求的一致性;入格式与输入语句要求的一致性;给所有的输出加注解,并设计输出报表格式。给所有的输出加注解,并设计输出报表格式。1.11.1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现

16、5 5)效率)效率(1 1)有关程序效率的几条准则)有关程序效率的几条准则效率是一个性能要求,目标值应当在需求分析阶效率是一个性能要求,目标值应当在需求分析阶段给出。软件效率以需求为准,不应以人力所及段给出。软件效率以需求为准,不应以人力所及为准。为准。好的设计可以提高效率。好的设计可以提高效率。程序的效率与程序的简单性相关,不要牺牲程序程序的效率与程序的简单性相关,不要牺牲程序的清晰性和可读性来不必要地提高效率。的清晰性和可读性来不必要地提高效率。1.11.1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现5 5)效率(续)效率(续)(2 2)算法对效率的影响)算法对效率的影响在

17、编程序前,尽可能化简有关的算术表达式和逻在编程序前,尽可能化简有关的算术表达式和逻辑表达式;辑表达式;仔细检查算法中的嵌套的循环,尽可能将某些语仔细检查算法中的嵌套的循环,尽可能将某些语句或表达式移到循环外面;句或表达式移到循环外面;尽量避免使用多维数组;尽量避免使用多维数组;尽量避免使用指针和复杂的表达式;尽量避免使用指针和复杂的表达式;采用快速的算术运算;采用快速的算术运算;不要混淆数据类型,避免在表达式中出现类型混不要混淆数据类型,避免在表达式中出现类型混杂;杂;尽量采用整数算术表达式和布尔表达式;尽量采用整数算术表达式和布尔表达式;选用等效的高效率算法。选用等效的高效率算法。1.11.

18、1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现5 5)效率(续)效率(续)(3 3)影响存储器效率的因素)影响存储器效率的因素在大型计算机中必须考虑操作系统页式调度的特在大型计算机中必须考虑操作系统页式调度的特点,一般来说,使用能保持功能的结构化控制结点,一般来说,使用能保持功能的结构化控制结构,是提高效率的有效方法。构,是提高效率的有效方法。在微处理器中如果要求使用最少的存储单元,则在微处理器中如果要求使用最少的存储单元,则应选用紧缩存储器特性的编译程序,在非常必要应选用紧缩存储器特性的编译程序,在非常必要时可以使用汇编语言。时可以使用汇编语言。提高执行效率的技术通常也能提高

19、存储器效率。提高执行效率的技术通常也能提高存储器效率。提高存储器的关键是简单。提高存储器的关键是简单。1.11.1软件开发过程软件开发过程1.1.31.1.3编码实现编码实现5 5)效率(续)效率(续)(4 4)影响输入)影响输入/输出的因素输出的因素对所有的输入对所有的输入/输出操作,安排适当的缓冲区,以输出操作,安排适当的缓冲区,以减少频繁的信息交换。减少频繁的信息交换。对辅助存储(例如磁盘),选择尽可能简单的,对辅助存储(例如磁盘),选择尽可能简单的,可接受的存取方法;可接受的存取方法;对辅助存储的输入对辅助存储的输入/输出,应当成块传送;输出,应当成块传送;对终端或打印机的输入对终端或

20、打印机的输入/输出,应考虑设备特性,输出,应考虑设备特性,改善输入改善输入/输出的质量和速度;输出的质量和速度;任何不易理解的,对改善输入任何不易理解的,对改善输入/输出效果关系不大输出效果关系不大的措施都是不可取的;的措施都是不可取的;不应该为追求所谓超高效的输入不应该为追求所谓超高效的输入/输出,进而损害输出,进而损害程序的可理解性;程序的可理解性;良好的输入良好的输入/输出程序设计风格对提高输入输出程序设计风格对提高输入/输出输出效率会有明显的效果。效率会有明显的效果。1.11.1软件开发过程软件开发过程1.1.41.1.4测试测试软件测试按阶段划分为两种,一种是在编写出每软件测试按阶段

21、划分为两种,一种是在编写出每个模块之后就进行的测试,称为单元测试。一种个模块之后就进行的测试,称为单元测试。一种是编码阶段结束后的系统测试。是编码阶段结束后的系统测试。1 1)首先了解软件测试的目的,)首先了解软件测试的目的,G.J.MYERSG.J.MYERS对软件测对软件测试的目的提出的观点:试的目的提出的观点:软件测试是为了发现错误而执行程序的过程。软件测试是为了发现错误而执行程序的过程。一个好的测试用例能够发现至今尚未发现的错误。一个好的测试用例能够发现至今尚未发现的错误。一个成功的测试是发现了至今尚未发现的错误的一个成功的测试是发现了至今尚未发现的错误的测试。测试。1.11.1软件开

22、发过程软件开发过程1.1.41.1.4测试测试2 2)软件测试的一些指导原则:)软件测试的一些指导原则:测试用例应由输入数据和预期的输出数据两部分测试用例应由输入数据和预期的输出数据两部分组成。组成。测试用例不仅选用合理的输入数据,还要选择不测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。合理的输入数据。除了检查程序是否做了它应该做的事,还应该检除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。查程序是否做了它不应该做的事。应制定测试计划并严格执行,排除随意性。应制定测试计划并严格执行,排除随意性。长期保留测试用例。长期保留测试用例。对发现错误较多的程序段,应进

23、行更深入的测试。对发现错误较多的程序段,应进行更深入的测试。程序员避免测试自己的程序。程序员避免测试自己的程序。1.11.1软件开发过程软件开发过程1.1.41.1.4测试测试3 3)测试方法一般分为两大类:动态测试方法和静态)测试方法一般分为两大类:动态测试方法和静态测试方法,而动态测试方法又分为测试方法,而动态测试方法又分为:黑盒测试黑盒测试 白盒测试白盒测试1.11.1软件开发过程软件开发过程1.1.41.1.4测试测试(1 1)黑盒测试)黑盒测试黑盒测试又称为功能测试或数据驱动测试。该方黑盒测试又称为功能测试或数据驱动测试。该方法把被测试对象看成一个黑盒子,测试人员完全法把被测试对象看

24、成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,检查程序是否满足功能要求。接口处进行测试,检查程序是否满足功能要求。黑盒测试主要发现以下错误:黑盒测试主要发现以下错误:是否有不正确或遗漏了的功能。是否有不正确或遗漏了的功能。在接口上,能否正确地接受输入数据,能否产生在接口上,能否正确地接受输入数据,能否产生正确的输出信息。正确的输出信息。访问外部信息是否有错。访问外部信息是否有错。性能上是否满足要求等。性能上是否满足要求等。注意:穷举地输入测试数据进行黑盒测试是不可注意:穷举地输入测试数据进行黑盒测试是不可能的。能的

25、。1.11.1软件开发过程软件开发过程1.1.41.1.4测试测试(2 2)白盒测试)白盒测试 此方法把测试对象看作一个打开的盒子,测试人员须了解此方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。态是否一致。一般情况下,系统测试应测试以下几个部分:一般情况下,系统测试应测试以下几个部分:

26、系统是否实现了需求分析阶段要求实现的所有功能;系统是否实现了需求分析阶段要求实现的所有功能;在正常条件下,系统运行是否正常;在正常条件下,系统运行是否正常;在非正常条件下,系统运行是否正常;在非正常条件下,系统运行是否正常;1.11.1软件开发过程软件开发过程1.1.51.1.5部署部署简单地讲,部署就是安装,就是把软件放置到相简单地讲,部署就是安装,就是把软件放置到相应的地方,并且进行相应的配置(一般称作部署应的地方,并且进行相应的配置(一般称作部署描述),让软件能够正常运行起来。描述),让软件能够正常运行起来。部署阶段中的任务和活动包括通知用户部署情况、部署阶段中的任务和活动包括通知用户部

27、署情况、执行培训计划、执行数据输入或转换、安装系统、执行培训计划、执行数据输入或转换、安装系统、运行部署后评审、修订先前的文档。运行部署后评审、修订先前的文档。1.11.1软件开发过程软件开发过程1.1.61.1.6维护维护软件维护是在软件已经交付使用之后,为了改正软件维护是在软件已经交付使用之后,为了改正错误或满足新的要求而对软件进行修改的过程。错误或满足新的要求而对软件进行修改的过程。软件维护通常包括软件维护通常包括4 4类活动:为纠正错误而进行的类活动:为纠正错误而进行的改正性维护;为适应外部环境变化而进行的适应改正性维护;为适应外部环境变化而进行的适应性维护;为改进原有软件而进行的完善

28、性维护;性维护;为改进原有软件而进行的完善性维护;为改进将来的可维护性和可靠性而进行的预防性为改进将来的可维护性和可靠性而进行的预防性维护。维护。决定软件的可维护性的因素有:软件的可理解性、决定软件的可维护性的因素有:软件的可理解性、可测试性、可修改性、可移植性和可重用性。软可测试性、可修改性、可移植性和可重用性。软件重用技术是从根本上提高软件可维护性的重要件重用技术是从根本上提高软件可维护性的重要技术。技术。1.21.2软件开发方法软件开发方法在在2020世纪世纪6060年代中期,计算机软件的开发和维护年代中期,计算机软件的开发和维护遇到了一系列严重的问题,即软件危机,这些严遇到了一系列严重

29、的问题,即软件危机,这些严重的问题不仅与软件本身的特点有关,还和软件重的问题不仅与软件本身的特点有关,还和软件开发与维护的方法不正确有关。为解决软件危机,开发与维护的方法不正确有关。为解决软件危机,19681968年在第一届年在第一届NATONATO会议上提出了软件工程的思会议上提出了软件工程的思想,并不断地得到发展和完善。同时,也在不断想,并不断地得到发展和完善。同时,也在不断地探索新的软件开发设计方法,提出许多开发方地探索新的软件开发设计方法,提出许多开发方法,包括面向数据流的开发设计方法、结构化软法,包括面向数据流的开发设计方法、结构化软件开发方法、面向数据结构的软件开发方法、面件开发方

30、法、面向数据结构的软件开发方法、面向问题的分析方法、面向对象的软件开发方法、向问题的分析方法、面向对象的软件开发方法、原型化方法等。原型化方法等。下面对这些软件开发方法做以简单介绍。下面对这些软件开发方法做以简单介绍。1.21.2软件开发方法软件开发方法1.2.11.2.1面向数据流的开发设计方法面向数据流的开发设计方法 面向数据流的设计方法的目标是给出设计软件结构的一个面向数据流的设计方法的目标是给出设计软件结构的一个系统化途径。在软件开发的需求分析阶段,重点考虑信息系统化途径。在软件开发的需求分析阶段,重点考虑信息流,通常用数据流图描述信息在系统中的加工和流动情况。流,通常用数据流图描述信

31、息在系统中的加工和流动情况。面向数据流的设计方法定义了一些不同的面向数据流的设计方法定义了一些不同的“映射映射”,利用,利用这些映射可以把数据流变换成软件结构。数据流有两种类这些映射可以把数据流变换成软件结构。数据流有两种类型:一是交换流,一些数据信息沿输入路径进入系统,通型:一是交换流,一些数据信息沿输入路径进入系统,通过变换中心,加工处理后沿输出路径输出,离开系统。另过变换中心,加工处理后沿输出路径输出,离开系统。另一种是事务流,这种数据流以事务为中心,数据沿输入路一种是事务流,这种数据流以事务为中心,数据沿输入路径到达一个处理,这个处理根据数据的类型在若干个动作径到达一个处理,这个处理根

32、据数据的类型在若干个动作序列中选出一个来执行。序列中选出一个来执行。变换分析是一系列设计步骤的总称,经过这些步骤把具有变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。变换流特点的数据流图按预先确定的模式映射成软件结构。1.21.2软件开发方法软件开发方法1.2.11.2.1面向数据流的开发设计方法面向数据流的开发设计方法这种方法的设计步骤有:这种方法的设计步骤有:第一步:复查基本系统模型,确保系统的输入数第一步:复查基本系统模型,确保系统的输入数据和输出数据符合实际需要。据和输出数据符合实际需要。第二步:复查和精化数据流图,确保数据流图给第

33、二步:复查和精化数据流图,确保数据流图给出的目标系统是正确的逻辑模型,而且应该使数出的目标系统是正确的逻辑模型,而且应该使数据流图中每个处理都代表一个规模适中相对独立据流图中每个处理都代表一个规模适中相对独立的子功能。的子功能。第三步:确定数据流图具有变换特性还是事务特第三步:确定数据流图具有变换特性还是事务特性。性。第四步:确定输入和输出流的边界,从而孤立出第四步:确定输入和输出流的边界,从而孤立出变换中心。变换中心。1.21.2软件开发方法软件开发方法1.2.11.2.1面向数据流的开发设计方法面向数据流的开发设计方法第五步:完成第五步:完成“第一级分解第一级分解”,所谓分解就是分,所谓分

34、解就是分配控制的过程,软件结构代表对控制的自顶向下配控制的过程,软件结构代表对控制的自顶向下的分配。的分配。第六步:完成第六步:完成“第二级分解第二级分解”,所谓第二级分解,所谓第二级分解就是把数据流图中的每个处理映射成软件结构中就是把数据流图中的每个处理映射成软件结构中一个适当的模块。应根据实际情况和标准规则,一个适当的模块。应根据实际情况和标准规则,进行第二级分解。进行第二级分解。第七步:使用设计度量和启发式规则对第一次分第七步:使用设计度量和启发式规则对第一次分割得到的软件结构进行精化。割得到的软件结构进行精化。经过上述的步骤,开发出软件的整体表示。经过上述的步骤,开发出软件的整体表示。

35、1.21.2软件开发方法软件开发方法1.2.21.2.2结构化软件开发方法结构化软件开发方法 结构化开发方法是由结构化开发方法是由E.Yourdon E.Yourdon 和和 L.L.Constantine L.L.Constantine 共共同提出的,即所谓的同提出的,即所谓的SASD SASD 方方 法,法,也可称为面向功能的也可称为面向功能的软件开发方法或面向数据流的软件开发方法。软件开发方法或面向数据流的软件开发方法。YourdonYourdon方法是方法是8080年代使用最广泛的软件开发方法。它首年代使用最广泛的软件开发方法。它首先用结构化分析(先用结构化分析(SASA)对软件进行需

36、求分析,然后用结构)对软件进行需求分析,然后用结构化设计(化设计(SDSD)方法进行总体设计,最后是结构化编程)方法进行总体设计,最后是结构化编程(SPSP)。它给出了两类典型的软件结构(变换型和事务型)。它给出了两类典型的软件结构(变换型和事务型)使软件开发的成功率大大提高。使软件开发的成功率大大提高。结构化分析方法结构化分析方法(Structured Method(Structured Method,结构化方法,结构化方法)是强是强调开发方法的结构合理性以及所开发软件的结构合理性的调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。结构是指系统内各个组成要素之间的相互软件开发方

37、法。结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法提出了一组提高联系、相互作用的框架。结构化开发方法提出了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等。针对软件生存周期各个不同的阶段,它有结构息隐蔽等。针对软件生存周期各个不同的阶段,它有结构化分析化分析 (SA)(SA)、结构化设计、结构化设计(SD)(SD)和结构化程序设计和结构化程序设计(SP)(SP)等等方法。方法。1.21.2软件开发方法软件开发方法1.2.31.2.3面向数据结构的软件开发方法面向数据结构的软件开发方法 JacksonJ

38、ackson方法是最典型的面向数据结构的软件开发方法方法是最典型的面向数据结构的软件开发方法(简称(简称JSDJSD方法),方法),JacksonJackson方法把问题分解为可由三种基方法把问题分解为可由三种基本结构形式表示的各部分的层次结构。三种基本结构就是本结构形式表示的各部分的层次结构。三种基本结构就是顺序、选择和重复。三种基本结构可以进行组合,形成复顺序、选择和重复。三种基本结构可以进行组合,形成复杂的结构体系。这一方法从目标系统的输入、输出数据结杂的结构体系。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到构入手,导出程序框架结构,再补充其它细

39、节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确完整的程序结构图。这一方法对输入、输出数据结构明确的中小型系统非常有效,如商业应用中的文件表格处理。的中小型系统非常有效,如商业应用中的文件表格处理。该方法也可与其它方法结合,用于模块的具体设计。该方法也可与其它方法结合,用于模块的具体设计。JacksonJackson系统开发方法把分析的重点放在构造与系统相关系统开发方法把分析的重点放在构造与系统相关联的现实世界,并建立现实世界的信息域的模型上。它实联的现实世界,并建立现实世界的信息域的模型上。它实际上是支持软件分析与设计的一组连续的技术步骤。而且,际上是支持软件分析与设计的一组连

40、续的技术步骤。而且,JSDJSD方法的最终目标是生成软件的过程性描述,没有特别方法的最终目标是生成软件的过程性描述,没有特别考虑程序模块化结构,模块只是作为过程的副产品而出现,考虑程序模块化结构,模块只是作为过程的副产品而出现,没有特别强调模块独立性。没有特别强调模块独立性。1.21.2软件开发方法软件开发方法1.2.31.2.3面向数据结构的软件开发方法面向数据结构的软件开发方法 使用使用JSDJSD方法的步骤如下:方法的步骤如下:(1 1)实体动作分析)实体动作分析(2 2)实体结构分析)实体结构分析(3 3)定义初始模型)定义初始模型(4 4)功能描述)功能描述(5 5)决定系统时间特性

41、)决定系统时间特性(6 6)实现)实现1.21.2软件开发方法软件开发方法1.2.41.2.4面向问题的分析方法面向问题的分析方法 面向问题的分析方法面向问题的分析方法PAMPAM(Problem Analysis MethodProblem Analysis Method),),是是8080年代末由日立公司提出的一种软件开发方法。年代末由日立公司提出的一种软件开发方法。它的基本思想是考虑输入、输出数据结构,指导系统的它的基本思想是考虑输入、输出数据结构,指导系统的分解,在系统分析指导下逐步综合。这一方法的具体步骤分解,在系统分析指导下逐步综合。这一方法的具体步骤是:从输入、输出数据结构导出基

42、本处理框;分析这些处是:从输入、输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐步综合处理框,直到理框之间的先后关系;按先后关系逐步综合处理框,直到画出整个系统的画出整个系统的PADPAD图(问题分析图)。图(问题分析图)。这一方法本质上是综合的自底向上的方法,但在逐步综合这一方法本质上是综合的自底向上的方法,但在逐步综合之前已进行了有目的的分解,这个目的就是充分考虑系统之前已进行了有目的的分解,这个目的就是充分考虑系统的输入、输出数据结构。的输入、输出数据结构。PAMPAM方法的另一个优点是使用方法的另一个优点是使用PADPAD图。这是一种二维树形结构图,是到目前为止最

43、好的具体图。这是一种二维树形结构图,是到目前为止最好的具体设计表示方法之一。当然由于在输入、输出数据结构与整设计表示方法之一。当然由于在输入、输出数据结构与整个系统之间同样存在着鸿沟,这一方法仍只适用于解决中个系统之间同样存在着鸿沟,这一方法仍只适用于解决中小型问题。小型问题。1.21.2软件开发方法软件开发方法1.2.51.2.5面向对象的软件开发方法面向对象的软件开发方法 随着随着OOPOOP(面向对象编程)向(面向对象编程)向OODOOD(面向对象设计)和(面向对象设计)和OOAOOA(面向对象分析)的发展,最终形成面向对象的软件开发(面向对象分析)的发展,最终形成面向对象的软件开发方法

44、方法OMT(Object Modeling TechniqueOMT(Object Modeling Technique)。这是一种自底)。这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。所以有对象的数据结构。所以OMTOMT彻底实现了彻底实现了PAMPAM没有完全实现没有完全实现的目标。不仅如此,的目标。不仅如此,OOOO技术在需求分析、可维护性和可靠技术在需求分析、可维护性和可靠性这三个软件开发的要害环节和

45、质量指标上有了实质性的性这三个软件开发的要害环节和质量指标上有了实质性的突破,基本地解决了在这些方面存在的严重问题。突破,基本地解决了在这些方面存在的严重问题。综上所述,面向对象系统采用了自底向上的归纳、自顶向综上所述,面向对象系统采用了自底向上的归纳、自顶向下的分解的方法,它通过对对象模型的建立,能够真正建下的分解的方法,它通过对对象模型的建立,能够真正建立基于用户的需求,而且系统的可维护性大大改善。当前立基于用户的需求,而且系统的可维护性大大改善。当前业界关于面向对象建模的标准是业界关于面向对象建模的标准是UMLUML(Unified Modeling Unified Modeling L

46、anguageLanguage)。)。1.21.2软件开发方法软件开发方法1.2.61.2.6原型化方法原型化方法产生原型化方法的原因很多,主要随着我们系统产生原型化方法的原因很多,主要随着我们系统开发经验的增多,我们也发现并非所有的需求都开发经验的增多,我们也发现并非所有的需求都能够预先定义,而且反复修改是不可避免的。能够预先定义,而且反复修改是不可避免的。当然能够采用原型化方法是因为开发工具的快速当然能够采用原型化方法是因为开发工具的快速发展,比如用发展,比如用VBVB,DelphiDelphi等工具,人等工具,人 们可以迅速们可以迅速的开发出一个可以让用户看的见、摸的着的系统的开发出一个

47、可以让用户看的见、摸的着的系统框架,这样,对于计算机不是很熟悉的用户就可框架,这样,对于计算机不是很熟悉的用户就可以根据这个样板提出自己的需求。以根据这个样板提出自己的需求。1.21.2软件开发方法软件开发方法1.2.61.2.6原型化方法原型化方法开发原型化系统一般由以下几个阶段:开发原型化系统一般由以下几个阶段:(1 1)确定用户需求确定用户需求 (2 2)开发原始模型开发原始模型 (3 3)征求用户对初始原型的改进意见征求用户对初始原型的改进意见 (4 4)修改原型。修改原型。原型化开发比较适合于用户需求不清、业务理论原型化开发比较适合于用户需求不清、业务理论不确定、需求经常变化的情况。

48、当系统规模不是不确定、需求经常变化的情况。当系统规模不是很大也不太复杂时采用该方法是比较好的。很大也不太复杂时采用该方法是比较好的。1.31.3本章小结本章小结本章按照软件生命周期过程中应完成的任务和性本章按照软件生命周期过程中应完成的任务和性质,在概念上把软件的开发过程划分为软件需求质,在概念上把软件的开发过程划分为软件需求分析、软件设计、软件编码、软件测试、软件部分析、软件设计、软件编码、软件测试、软件部署和维护过程。从整体上解决了软件的开发过程署和维护过程。从整体上解决了软件的开发过程问题。问题。针对复杂的用户需求以及需求多变的情况,概述针对复杂的用户需求以及需求多变的情况,概述了软件分析与设计的方法,包括面向数据流的开了软件分析与设计的方法,包括面向数据流的开发设计方法、结构化软件开发方法、面向数据结发设计方法、结构化软件开发方法、面向数据结构的软件开发方法、面向问题的分析方法、面向构的软件开发方法、面向问题的分析方法、面向对象的软件开发方法、原型化方法等。对象的软件开发方法、原型化方法等。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第1章软件开发过程与方法课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|