当前位置:文档之家› 程序设计方法与风格

程序设计方法与风格

✓程序设计方法与风格✓经历两个阶段:✓结构化程序设计✓面向对象的程序设计✓良好设计风格:“清晰第一,效率第二”例如:加注释、提示输入、加输入结束标志、标识符命名有实际意义等。

•原则✓自顶向下✓逐步求精✓模块化✓限制使用goto语句基本结构✓顺序结构✓选择结构✓循环结构优点✓程序易于理解、使用、维护✓提高编程效率,降低开发成本设计原则和方法的应用✓三种结构表示程序的控制逻辑;✓每种结构只有一个入口和一个出口;✓语言中没有的控制结构,应该用前后一致的方法模拟;✓严格控制使用goto语句本质:以对象为核心。

✓对象是数据和操作的封装体,与客观实体有直接的对应关系,对象之间通过传递消息互相联系。

面向对象程序设计方法的优点✓(1)与人类的思维方法一致,符合人们对客观世界的认识规律。

✓(2)稳定性好;✓(3)可重用性好;✓(4)易于开发大型软件产品;面向对象的基本概念✓对象:在现实世界中,每个实体都是对象,如,大学生、汽车、电视机、空调等都是现实世界中的对象。

✓(1)属性:对象所包含的信息,它在设计对象时确定,一般只能通过执行对象的操作来改变。

✓(2)操作:描述了对象执行的功能。

其过程对外是封闭的,即用户只能看到这一操作实施后的结果(封装性)。

类:类是一组具有相同属性和相同操作的对象的集合。

是对象的抽象,描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。

注意:“实例”这个术语指一个具体的对象;“对象”术语既可以指一个具体的对象,也可以泛指一般对象。

消息:一个实例与另一个实例之间传递的信息,包括3部分:接收消息的对象名称;消息名;零个或多个参数。

例:MyCircle.Show(GREEN);面向对象的基本概念• 继承:使用已有的类定义作为基础建立新类的定义技术。

已有的类可当做基类引用,则新类相应地可当做派生类来引用。

(基类:用来生成新类的类。

派生类:由已存在的类派生出来的新类,也叫子类。

)继承具有传递性。

• 多态性:对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行为,该现象称为多态性。

图2-1 一般与特殊的关系图2-2 多重继承3.1.1软件定义与软件特点1.软件定义:软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及其相关文档组成的完整集合。

软件=程序+数据+文档程序:程序是按事先设计好的功能和性能要求执行的指令序列。

数据:数据是指程序能正常处理信息的数据和数据结构。

文档:文档是与程序运行和维护有关的图文资料。

2.软件的特点:(1) 软件具有抽象特征。

(2) 软件具有无明显制造过程特征。

(3) 软件无设备的特征。

(4) 手工制作特征。

(5) 成本昂贵特征。

1. 软件危机:泛指在软件的开发和维护过程中所遇到的一系列严重问题。

总之,可以将软件危机归结为成本、质量、生产率等问题。

软件工程:应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。

主要思想:强调在软件开发过程中需要应用工程化原则。

软件工程三要素:方法、工具、过程。

方法:完成软件工程项目的技术手段;工具:支持软件的开发、管理、文档生成;过程:支持软件开发的各个环节的控制、管理。

• 软件工程过程:把输入转化为输出的一组彼此相关的资源和活动。

(通常把用户的要求转变为软件产品的过程也叫做软件开发过程).•软件生命周期:将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。

•软件生命周期的三个阶段:定义阶段(可行性研究、需求分析)开发阶段(概要设计、详细设计、编码、测试)运行维护阶段(使用、维护、退役)•软件工程的目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。

•软件工程的原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性、可验证•软件开发工具:为软件工程方法提供了自动的或半自动的软件支撑环境。

•软件开发环境:是全面支持软件开发全过程的软件工具集合。

这些软件工具按照一定的方法或模式组合起来,支持软件生命周期内的各个阶段和各项任务的完成。

•计算机辅助软件工程(CASE Computer Aided Software Engineering)是当前软件开发环境中富有特色的研究工作和发展方向。

软件需求:指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。

需求分析任务:发现需求、求精、建模和定义需求的过程。

需求分析阶段的工作:需求获取需求分析编写需求规格说明书需求评审需求分析方法分为:结构化分析方法与面向对象的分析方法:•结构化分析方法❆面向数据流的结构化分析方法(SA)❆面向数据结构的Jackson方法(JSD)❆面向数据结构的结构化数据系统开发方法(DSSD)•面向对象的分析方法(OOA),从需求分析建立的模型的特性来分:❆静态分析方法❆动态分析方法•含义:是结构化程序设计理论在软件需求分析阶段的运用。

•目的:帮助弄清用户对软件的需求。

•实质:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

●数据流图(Data Flow Diagram)DFD数据流图是描述数据处理过程的工具,从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。

加工数据流存储文件源(潭)●数据字典(Data Dictionary,DD)是结构化分析方法的另一种有力工具,在数据字典中建立的一组严密一致的定义有助于消除分析员和用户之间的沟通障碍,因此将消除许多可能的误解。

●判定树●判定表●含义(SRS):是需求分析阶段的最后成果,是软件开发中的重要文档之一。

●作用:●便于用户、开发人员进行理解和交流;●反映出用户问题的结构,可以作为软件开发工作的基础和依据;●作为确认测试和验收的依据;●特点:正确性、完整性、确定性、一致性、可理解性、可验证性、课修改、可追踪性。

3.3.1 软件设计的基本概念•软件设计的目标:用比较抽象概括的方式确定目标系统如何完成预定的任务,即确定系统的物理模型。

•分类:概要设计和详细设计•抽象:就是提取出事物的本质特征而暂时不考虑它们的细节。

•模块化•信息隐蔽:在一个模块内包含的信息,对于不需要这些信息的其他模块来说是不能访问的。

•模块独立性:每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。

(模块独立程度是评价设计好坏的重要度量标准)模块独立性是评价设计好坏的重要度量标准●内聚性:一个模块内部各个元素间彼此结合的紧密程度的度量。

分类如下:(由弱到强)–偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚●耦合性:模块间相互连接的紧密程度的度量。

分类如下(由高到低)–内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合•优秀的设计:尽量做到高内聚、低耦合。

•含义:结构化设计方法与结构化分析方法相对应,它是采用最佳的可能方法设计系统的各个组成部分以及各成分之间的内部联系的技术。

•基本思想:将软件设计成由相对独立、单一功能的模块组成的结构3.3.2概要设计概要设计的任务:☞设计软件系统结构☞数据结构及数据库设计☞编写概要设计文档☞概要设计文档评审☞常用软件结构设计工具:结构图(SC)一般模块数据信息控制信息面向数据流的设计方法(1)数据流的类型:变换型:取得数据、变换数据、输出数据事务型:接受事务、分析确定其类型、选取活动通路(2. )设计过程:第一,分析、确认数据流图的类型;第二,说明数据流的边界;第三,把数据流映射为程序结构;第四,根据设计准则对产生的结构进行细化和求精。

设计的准则:提高模块的独立性;模块规模适中;深度、宽度、扇出和扇入适当;顶层高扇出、中间扇出较少、底层高扇入使模块的作用域在该模块的控制域内;应减少模块的接口和界面的复杂性;设计成单入口、单出口的模块;设计功能可预测的模块详细设计:在概要设计阶段完成了软件系统的总体设计,规定了各个模块的功能及模块之间的联系之后,进一步就要考虑实现各个模块规定的功能,也就是进行软件的详细设计,也称为过程设计。

在详细设计阶段,要根据概要设计对每个模块的定义进行设计,以实现指定的功能、算法和外部接口所要求的模块内部的数据结构和程序的逻辑结构。

程序流程图:程序流程图(Program Flow Chart)又称为程序框图,是软件设计中经常使用的一种算法表达工具。

它独立于程序设计语言,较为直观、清晰,易于学习掌握。

控制流加工步骤逻辑条件N-S图(盒图)N-S图也称盒图(Box-Diagram),是一种符合结构化程序设计原则的图形描述工具。

如下图所示为选择结构的N—S图。

PAD图:(Problem Analysis Diagram,问题分析图),是用结构化程序设计思想表现程序逻辑结构的图形工具。

用PAD所表达的程序,结构清晰并且结构化程度高。

作为一种详细设计的工具,它比流程图更易读,且由于PAD是一种树形结构,比流程图更容易在计算机上处理,容易将PAD 图转换成程序。

另外,PAD除了可以描述程序的逻辑结构,还可以描述数据结构。

程序开始于最左主干线,结束于最左主干线。

PDL(Procedure Design Language)PDL是一种用于描述功能模块的算法设计和加工细节的语言,称为过程设计语言。

它是一种混合语言,采用英语的词汇和结构化程序设计语言的语法,类似编程语言。

•软件测试的定义:软件测试是为了发现错误而执行程序的过程。

•软件测试的目的☞测试是程序的执行过程,目的在于发现错误;☞一个好的测试用例在于能发现至今未发现的错误;☞一个成功的测试是发现了至今未发现的错误的测试。

3.4.2软件测试的准则①所有测试都应追溯到需求;②严格执行测试计划,排除测试的随意性;③充分注意测试中的群集现象;④程序员应避免检查自己的程序;⑤穷举测试不可能;⑥妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。

3.4.3 软件测试技术与方法测试技术分类:•按是否需要执行被测软件分:静态测试:代码检查、结构分析等。

(人工测试或借助软件工具)动态测试:设计高效、合理的测试用例是关键。

•按功能划分:白盒测试和黑盒测试。

(注意:白盒测试和黑盒测试均属于动态测试)白盒测试软件的白盒测试是把测试对象看作一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。

白盒测试又称为结构测试或逻辑驱动测试。

白盒测试主要对程序模块进行如下的检查:•对程序模块的所有独立的执行路径至少测试一次;•对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;•在循环的边界和运行界限内执行循环体;•测试内部数据结构的有效性等。

相关主题