第6章应用程序设计与开发技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章应用程序设计与开发技术
第六章应用软件设计与开发技术
6.1 软件工程概述
软件工程学:是指研究和探索软件开发过程的理论和方法的科学是研究软件开发和维护的普遍原理与技术的门工程软件工程:是指以计算机软件为对象,研究任何采用工程化的方法对软件进行计划、开发和维护。
或采用工程的概念、原理、技术和方法指导软件的开发与维护。
一、软件工程的概念
的科学,是研究软件开发和维护的普遍原理与技术的一门工程学科。
软件工程学的主要研究对象:软件开发与维护的技术、方法、工具和管理等。
软件工程学追求的目标:提高软件开发的成功率,减少软件开发和维护中出现的问题。
软件工程学的研究内容:软件开发技术和软件工程管理两个分支。
第六章应用软件设计与开发技术
6.1 软件工程概述
通常,软件生命周期包括8个阶段:问题定义、可行性研究、需求分析系统设计详细设计编码测试运行维护软件的生命周期:是指为了更有效、更科学地组织和管理软件生产,根据某一软件从被提出并着手开始实现,直到软件完成其使命为止的全过程。
二、软件生命周期
需求分析、系统设计、详细设计、编码、测试、运行维护。
为了使软件生命中各个时期的任务更明确,又可以分为以下三个时期:软件定义期包括问题定义、可行性研究和需求分析三个阶段。
软件开发期包括系统设计、详细设计、编码和测试四个阶段。
软件维护期即运行和维护两个阶段。
第六章应用软件设计与开发技术
6.1 软件工程概述
这是软件生命周期的第阶段应力求使软件开发人员二、软件生命周期
1.软件定义期
①问题定义
问题定义阶段的主要目的:确定问题的性质、工程目标以及规模。
这是软件生命周期的第一阶段,应力求使软件开发人员、用户以及使用部门负责人对问题的性质、工程目标与规模取得完全一致的看法,这对确保软件开发的成功是非常重要的。
对问题有了明确认识之后,分析员应提交书面报告给用户与使用部门负责人进行审查。
第六章应用软件设计与开发技术
6.1 软件工程概述
二、软件生命周期
1.软件定义期②可行性研究
可行性研究阶段的主要目的:进一步研究上一阶段所定义的问题是否可解。
工作途径在问题定义的基础上通过复查系统的目标和可行性研究过程往往需要要反复多遍,最后才导出新系统的高层逻辑模型。
在系统的高层逻辑模型的基础上,再从各方面分析物理系统的可行性,推荐一个可行方案,供有关部门审批。
工作途径:在问题定义的基础上,通过复查系统的目标和规模,并研究现在正使用的系统,从而导出试探性的解。
第六章应用软件设计与开发技术
6.1 软件工程概述
二、软件生命周期
1.软件定义期②可行性研究
在可行性研究阶段,通常用数据流图与数据字典共同描述系统的逻辑模型。
数据字典与数据流图的关系:如果没有数据字典精确定义数据流
图中的每个元素,数据流图就不够严谨;反之,如果没有数据流图,数据字典就不够直观,难以发挥作用。
数据流图用四种成分来描绘信息在系统中的流动和处理情况:数据流、加工、文件、数据的源点和终点。
数据字典是关于数据信息的集合。
第六章应用软件设计与开发技术
6.1 软件工程概述
二、软件生命周期
1.软件定义期③需求分析
需求分析阶段的主要目的:根据可行性研究阶段提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求即要明确系统必须作什么的问题
体的要求,即要明确系统必须作什么的问题。
需求分析阶段的具体任务:确定对系统的综合要求即:功能要求、性能要求、运行要求以及将来可能会提出的一些要求。
对系统的数据要求进行分析主要包括数据元素的分类和规范化,描绘实体之间的关系图,进行事务分析与数据库模型的建立。
在前面分析的基础上,推导出系统的详细模型系统。
修正开发计划,并建立模型系统。
第六章应用软件设计与开发技术
6.1 软件工程概述
二、软件生命周期
1.软件定义期③需求分析
需求分析的途径:首先从数据流图着手,在沿数据流图回溯的过程中,划分出更多更细的数据元素,更多的算法被确定下来。
经过需求分析就可以修正开发计划然后写出必要的文经过需求分析,就可以修正开发计划,然后写出必要的文档。
文档的内容主要包括以下几个方面:
系统的功能说明主要由数据流图与输入、处理、输出图(或其他形式的算法描述记录)组成,主要描述了目标系统的概貌与对系统的综合
要求。
系统对数据的要求主要由数据字典以及描述数据结构的层次方框图组成。
用户系统描述这是初步的用户手册,主要包括对系统功能和性能的简要描述、使用的方法与步骤等内容。
第六章应用软件设计与开发技术
6.1 软件工程概述
二、软件生命周期
2.软件开发期①系统设计
系统设计的任务:划分出构成系统的各物理元素(如程序、文件、数据库、人工过程与文档等)以及设计出软件的结构(如确定模块及模块间的关系)。
) 系统设计的步骤:提出可选择方案;选择合理方案;推荐最佳方案;功能分解;
设计软件结构;制定测试计划;提交文档。
第六章应用软件设计与开发技术
6.1 软件工程概述
二、软件生命周期
2.软件开发期②详细设计
详细设计的目标保证程序的可靠性保证将来的程序易详细设计的任务:对系统做出精确的描述,以便在编码阶段可直接将这一描述用程序设计语言编制成程序。
详细设计的结果:采用层次图与输入、处理、输出图的结合(HIPO)或过程描述语言(PDL)来描述的详细编码规格说明。
详细设计的目标:保证程序的可靠性,保证将来的程序易读、易理解、易测试、易修改和易维护。
结构程序设计技术是实现详细设计目标的基本保证,是详细设计的逻辑基础。
第六章应用软件设计与开发技术
6.1 软件工程概述
二、软件生命周期
2.软件开发期③编码
程序的质量基本上由设计的质量决定编码的任务:将系统设计与详细设计阶段中的结果翻译成用某种程序设计语言书写的程序。
编码中影响程序质量的因素:程序的质量基本上由设计的质量决定。
选择适当的程序设计语言。
使程序内部有良好的文档资料、规范的数据格式说明、简单清晰的语句结构和合理的输入输出格式,这些都可以大大提高程序的可读性,而且也可以改进程序的可维护性。
充分利用已有的软件工具来帮助编码,以提高编码的效率和减少程序中的错误。
第六章应用软件设计与开发技术
6.1 软件工程概述
二、软件生命周期
2.软件开发期④测试
软件测试是保证软件可靠性的主要手段,是软件开发过程中最艰巨也是最繁重的工作。
测试的目的是要尽量发现程序中的错误但绝不能证明程调试的主要目的是推断错误的原因,从而进一步改正错误。
测试和调试是软件测试阶段的两个密切相关的过程,通常是交替进行的。
测试的目的是要尽量发现程序中的错误,但绝不能证明程序的正确性。
第六章应用软件设计与开发技术
6.1 软件工程概述
二、软件生命周期
3.
软件维护期
软件工程学的目的就在于提高软件的可维护性,同时也要设法降低维护的代价维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。
软件维护通常有以下四类:
设法降低维护的代价。
为纠正使用中出现的错误而进行的改正性维护。
为适应环境变化而进行的适应性维护。
为改进原有软件而进行的完善性维护。
为将来的可维护和可靠而进行的预防性维护。
第六章应用软件设计与开发技术
6.1 软件工程概述
二、软件生命周期
3.
软件维护期
良好的设计、完善的文档资料以及一系列严格的复审和测试,都会使错误一旦出现就较为容易诊断和纠正而且当用户有所软件的可理解性、可测试性与可修改性将直接影响和决定软件的可维护性,而且软件生命周期的各个阶段也都与可维护性有关。
文档可以分为用户文档和系统文档两类。
无论是哪类文档,都必须与程序代码同时维护。
只有与程序代码完全一致的文档才有意义和价值。
都会使错误一旦出现就较为容易诊断和纠正;而且当用户有所要求或外部环境有变化时,软件都比较容易适应,并能减少维护所引起的副作用。
因此,在软件生命周期的各个阶段都必须充分考虑维护的问题,并且为维护作好准备。
软件维护的内容包括:程序代码的维护和文档的维护。
第六章应用软件设计与开发技术
6.1 软件工程概述
三、软件支持环境
软件支持环境(Software Support Environment):是指在宿主硬件和宿主软件的基础上,用于辅助、支持其他软件的研制和维护的一组软件。
软件支持环境对于改进软件质量、提高软件生产率起到了很重要的作用
很重要的作用。
第六章应用软件设计与开发技术
6.1 软件工程概述
三、软件支持环境
一个完备的软件支持环境应具有以下功能:
1.
软件支持环境的功能
①能够支持软件生命的全周期软件支持环境不仅要能支持软件研制和维护中的个别阶段,而且要能支持系统的、连续的、整体性很强的软件开发和维护的全过程
整体性很强的软件开发和维护的全过程。
②能够支持大型软件工程项目不仅支持个别程序的研制开发,还要能支持大型软件工程项目的研制和维护中所涉及的所有程序。
③能够支持软件配置管理在这样一个软件支持环境中,软件生产将会变得很容易、方便,而且效率也高,最后的软件产品将是很可靠的。
软件支持环境正不断地改变着程序设计的面貌,使越来越多的程序可以直接从支持环境中调到所需的“组件”。
第六章应用软件设计与开发技术
6.1 软件工程概述
三、软件支持环境
一般的软件支持环境由以下几部分组成:
2.
软件支持环境的组成
①环境数据库环境数据库是软件支持环境的重要组成部分。
在环境数据库中,存放着被研制的软件在其生命周期中所必要的信息以及软件研制工具的有关信息必要的信息以及软件研制工具的有关信息。
②接口软件接口软件包括系统与用户的接口以及系统与环境数据库和工具之间的接口。
软件支持环境要求这些接口机构具有统一性。
例如,为了实现用户和各工具的通信,要求有统一的调用方式。
③工具组工具组包括软件研制工具、软件维护工具和控制配置工
具等。
工具组中的各个工具一般应设计成由一些基本功能组成,这些功能成分可以组合,也可供用户选用。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
图形工具用图形方式来描述实现一个算法的过程。
表格工具用一张表格来列出实现算法过程中的每一步操作在软件设计过程中,一个很重要的环节是确定实现各种功能的算法,并且要精确地把它们表达出来。
工程上常用的算法表达工具有三类:
作。
语言工具将算法的实现过程用某种语言来描述,这种语言一般类似于某种程序设计语言。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
一、程序流程图
在程序流程图中常用的图形符号如下图所示。
程序流程图,又称为程序框图,是软件开发者最熟悉的一种算法描述工具。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
一、程序流程图
结构化程序设计的流程图只能使用五种基本控制结构如1.
流程图的基本结构
流程图中的流程线用来指明程序的动态执行顺序。
种基本控制结构,如右图所示。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
一、程序流程图
1.
流程图的基本结构
①顺序结构反映了若干个模块之间连续执行的顺序。
②选择结构由某个条件P 的取值来决定执行两个模块之间的哪一个。
③当型循环结构只有当某个条件成立时才重复执行特定的模块(称为循环体)。
④直到型循环结构重复执行一个特定的模块,直到某个条件成立时才退出该模块的重复执行。
⑤多情况选择结构根据某控制变量的取值来决定选择多个模块中的哪一个。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
一、程序流程图
程序流程图的缺点:
程序流程图本质上不是逐步求精的好工具它会使程序员2.
流程图的特点
程序流程图的优点:独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。
程序流程图本质上不是逐步求精的好工具,它会使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。
程序流程图不易表示层次结构。
程序流程图不易表示数据结构和模块调用关系等重要信息。
程序流程图中用箭头代表控制流,因此,程序员不受任何约束,可以完全不顾结构程序设计的思想,随意进行转移控制。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
二、NS 图
在NS 图中,去掉了流程图中容易引起麻烦的流程线,全部算法都写在一个框内,每一种基本结构也是一个框。
NS 图的基本特点:
NS 图,又称为盒图,是一种不允许破坏结构化原则的图形算法描
述工具。
功能域比较明确,可以从框图中直接反映出来。
不可能任意转移控制,符合结构化原则。
很容易确定局部和全程数据的作用域。
很容易表示嵌套关系,也可以表示模块的层次结构。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
二、NS 图
NS 图的基本控制结构有:顺序结构、选择结构和循环结构。
1.
顺序结构
顺序结构的结构化流程图如图右所示在顺序结构中,块S1,S2,S3是按顺序执行的。
图右所示。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
二、NS 图
2.
选择结构
两路分支选择结构的结构化流程图如下图所示。
由下图可以看出在两路分支选择结构中当条件满足时执行块否选择结构分为:两路分支选择结构和多路分支选择结构。
①两路分支结构
看出,在两路分支选择结构中,当条件满足时,执行块S1,否则执行块S2,两者只能选一。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
二、NS 图
2.选择结构
多路分支选择结构的结构化流程图如下图所示。
由下图可以看出,在多路分支选择结构中,根据条件的取值分为多种情况,对不同情况将选择不同的操作②多路分支结构
对不同情况将选择不同的操作。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
二、NS 图
3.
循环结构
循环结构分为:当型循环结构和直到型循环结构。
①当型循环结构
当型循环结构的结构化流程图如右上图所示由图可以看出在当型循环结构中,块S(称为循环体)有可能一次也不执行(即一开始条件就不满足)。
值得要指出的是,在循环体S 中,应该要有改变条件的成分,否则将会造成死循环。
当型循环结构的结构化流程图如右上图所示。
由图可以看出,在当型循环结构中,当条件满足时就执行块S ;否则退出循环,执行该循环结构后面的程序。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
二、NS 图
3.循环结构
②直到型循环结构
由图可以看出直到型循环结构与当型循环结构的不同之处直到型循环结构的结构化流程图如右图所示。
在直到型循环结构中,循环体至少要执行一次。
与当型循环结构一样,在直到型循环结构的循环体S 中,也应该要有改变条件的成分,否则将会造成死循环。
由图可以看出,直到型循环结构与当型循环结构的不同之处是:在直到型循环结构中,首先执行循环体S ,然后判断条件;若条件不满足,则继续执行循环体;这个过程直到条件满足,此时退出循环,执行该循环结构后面的程序。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
三、问题分析图PAD
PAD 图是用结构化程序设计思想来表示程序逻辑结构的一种图形工具。
在PAD 图中,设置了五种基本控制结构的图式,如下图所示,并允许递归使用。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
三、问题分析图PAD
图的优点结构清晰结构化程度高
PAD 的执行顺序是从最左主干线的上端结点开始,自上而下依次执行。
当遇到判断或循环时,就自左而右进入下一层,从表示下一层的纵线上端开始执行,直到该纵线下端,再返回上一层的纵线的转入处。
如此继续,直到执行到主干线的下端为PAD 图的优点:结构清晰,结构化程度高。
止。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
四、判定表
1.判定表的组成
判定表由以下四部分组成当算法中包含多重嵌套的条件选择时,用程序流程图、NS
图都不易清楚地描述,而利用判定表就能够清晰地表示复杂的条件组合与各功能之间的对应关系。
①左上部列出所有条件。
②左下部是所有可能的动作。
③右上部是表示各种条件组合的一个矩阵。
④右下部是和每种条件组合相对应的动作。
判定表右半部的每一列实际上就是一个规则,规定了与特定的条件组合相对应的动作。
判定表由以下四部分组成:
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
四、判定表
2.
判定表的应用举例
某大学要从学生中挑选男子篮球队队员,基本条件是各门课程的平均分在70分以上,身高超过1.80米,体重超过75千克。
需要从学生登记表中挑选出符合上述条件的男同学,并列出他们的姓名和住址以便进步选拔用判定表可以清楚地表示上的姓名和住址,以便进一步选拔。
用判定表可以清楚地表示上述条件和动作之间的关系,如下表所示。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
四、判定表
判定表能够简洁而又无歧义地描述处理规则。
当把判定表与布尔代数或卡诺图结合起来使用时,可以对判定表进行校验或化简。
但是,判定表并不适合于作为一种通用的设计工具,没有一种简单的方法使它们能同时清晰地表示顺序和循环等处理特性
种简单的方法使它们能同时清晰地表示顺序和循环等处理特性。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
五、过程设计语言
PDL 具有严格的关键字外部语法,用于定义控制结构和数据结构。
同时,PDL 所表示的实际操作和内部语法通常又是灵活自由的,以便适应各种工程项目的需要。
因此一般来说是一种“混合”语言它用一种自然过程设计语言(PDL ),又称伪码或结构化语言。
因此,般来说,PDL 是种混合语言,它用种自然语言中的词汇和一种结构化程序设计语言中的控制结构来描述算法。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
五、过程设计语言
1.关键字的固定语法,提供了结构化控制结构、数据说明和模块化的特点。
为了使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字。
过程设计语言的特点:
2.用自然语言的自由语法来描述处理部分。
3.具有数据说明的手段。
它既包括简单的数据结构(例如纯量和数组),又包括复杂的数据结构(如链表或层次的数据结构)。
4.具有模块定义和调用的机制,提供各种接口描述模式。
第六章应用软件设计与开发技术
6.2 软件详细设计的表达
五、过程设计语言
1.可以作为注释直接插在源程序中间。
这样做的好处是,能促使维护人员在修改源程序代码的同时也修改PDL 注释,有助于保持文档和程序的一致性,提高了文档的质量。
过程设计语言的优点:
1.不如图形工具形象直观;
2.描述复杂的条件组合与动作之间的对应关系时,不如判定表清晰简单。
过程设计语言的缺点:2.可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL 的书写和编辑工作。
3.利用已有的自动处理程序,可以自动由PDL 生成程序代码。
第六章应用软件设计与开发技术
6.3 结构化分析与设计方法
①自顶向下的系统结构开发原则
一、应用软件开发的原则和方法
1.
应用软件开发的基本原则
应用软件的开发是一个复杂的过程,一般要遵循以下两个原则:
基本个复行解
自定向下方法的优点:关系明了、简单,各层次中的模块之间联系比较少,各模块相对独立,易于理解,便于修改。
自顶向下方法的基本思想:对一个复杂系统进行分解,由高度抽象到逐步具体的方法,形成一个树形结构。
在树形结构中,每一层次都设计成独立的模块,每个模块又都可以调用它的下属模块。
第六章应用软件设计与开发技术
6.3 结构化分析与设计方法
②模块化结构开发原则
一、应用软件开发的原则和方法
1.应用软件开发的基本原则模块化结构方法的思想:将系统分成若干模块,但整体结构并不要求是树形结构,允许网状结构(即一个模块可以被两个的存在
模块化结构的优点:结构比较灵活,整个系统类似搭积木一样,独立性强,提供了系统开发的可靠性。
或两个以上的模块所调用)的存在。
第六章应用软件设计与开发技术
6.3 结构化分析与设计方法
一、应用软件开发的原则和方法
2.
应用软件的开发方法
目前常用的开发方法大致可分为类非自动形式的开发软件开发方法的主要内容体现在软件生产的三个方面:明确的工作步骤、具体的文档格式、确定的评价标准。
软件的开发方法是保证软件生产过程的一套规范。
目前常用的开发方法大致可分为三类:非自动形式的开发方法,半自动形式的开发方法和自动形式的系统开发方法。
第六章应用软件设计与开发技术
6.3 结构化分析与设计方法
一、应用软件开发的原则和方法
2.应用软件的开发方法①非自动形式的开发方法
统
这种方法是一种人工方式的开发方法,是目前使用最为广泛的方法。
它主要有以下五种方法:
系统流程图(system flowchart)法这种方法采用自顶向下的功能分割手段,对一个复杂系统进行逐层分解。
这种方法主要用于事务系统。