程序设计基础与软件工程.ppt

上传人:牧羊曲112 文档编号:6596226 上传时间:2023-11-16 格式:PPT 页数:27 大小:248.16KB
返回 下载 相关 举报
程序设计基础与软件工程.ppt_第1页
第1页 / 共27页
程序设计基础与软件工程.ppt_第2页
第2页 / 共27页
程序设计基础与软件工程.ppt_第3页
第3页 / 共27页
程序设计基础与软件工程.ppt_第4页
第4页 / 共27页
程序设计基础与软件工程.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《程序设计基础与软件工程.ppt》由会员分享,可在线阅读,更多相关《程序设计基础与软件工程.ppt(27页珍藏版)》请在三一办公上搜索。

1、1,程序设计基础理论与软件工程理论姜育民,2,程序设计基础理论内容提要,程序设计方法和风格结构化程序设计面向对象的程序设计,3,程序设计方法和风格,如何形成良好的程序设计风格1、源程序文档化;2、数据说明的方法;3、语句的结构程序应该简单易懂,语句构造应该简单直接;4、输入和输出 注释分序言性注释和功能性注释,语句结构清晰第一,效率第二。,4,结构化程序设计,结构化程序设计的四条原则 1.自顶向下;2.逐步求精;3.模块化;4.限制使用goto语句。结构化程序设计的基本结构和特点 1)顺序结构:一种简单的程序设计,最基本、最常用的结构;2)选择结构:又称分支结构,包括简单选择和多分支选择结构,

2、可根据条件,判断应该选择哪一条分支来执行相应的语句序列;3)循环结构:可根据给定条件,判断是否需要重复执行某一相同程序段。结构化程序设计主要强调程序的易读性,5,面向对象的程序设计(一),面向对象程序设计方法涵盖的基本要素对象、对象属性与方法;类、继承性、封装性、多态性等。类与对象 类是指具有共同属性、共同方法的对象的集合。对象是系统中用来描述客观事物的一个实体,是构成系的一个基本单位 类是对象的抽象,对象是类的一个实例。类 类(性质),继承性,封装性,多态性,单继承和多重继承,同样的消息被不同的对象接受时可导致完全不同的行动的现象,隐蔽类信息,6,面向对象的程序设计(二),对象类包含类属性与

3、方法对象的基本特点:1)标识惟一性;2)分类性;3)多态性;4)封装性(隐蔽类信息);5)模块独立性好。对象与对象消息:是一个实例(对象)与另一个实例(对象)之间传递的信息。消息的组成包括 1、接收消息的对象的名称;2、消息标识符,也称消息名;3、零个或多个参数。,实例化,对象,属性与方法,类,实例化,对象 1,对象 2,对象 3,对象,数据交互,消息,7,面向对象的程序设计(三),面向对象方法的优点:与人类习惯的思维方法一致;稳定性好;可重用性好;易于开发大型软件产品;可维护性好。,8,软件工程理论内容提要,软件工程的基本概念 软件工程与软件的生命周期 结构化分析方法 结构化设计方法 软件测

4、试 程序的调试,9,软件工程的基本概念,软件定义与软件特点 计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。,软件由两部分组成:,1、机器可执行的程序和数据,2、机器不可执行的,与软件开发、运行、维护、使用等有关的文档,软件的特点包括:(1)软件是一种逻辑实体;(2)软件的生产与硬件不同,它没有明显的制作过程;(3)软件在运行、使用期间不存在磨损、老化问题;(4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这 导致了软件移植的问题;(5)软件复杂性高,成本昂贵;(6)软件开发涉及诸多的社会因素。,10,软件工程的基本概念,软件的分类:软件按

5、功能分为应用软件、系统软件、支撑软件(或工具软件)。,思考题:软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是_。A、编译程序 B、操作系统 C、教务管理系统 D、汇编程序,(C),什么是软件工程,软件工程提出的背景:软件危机软件危机主要表现在成本、质量、生产率等问题。,软件工程是应用于计算机软件的定义、开发和维护的一 整套方法、工具、文档、实践标准和工序。软件工程包括3个要素:方法、工具和过程。,11,软件工程过程与软件的生命周期,软件工程过程 软件工程过程:是把输入转化为输出的一组彼此相关 的资源和活动。软件工程过程的两方面内涵:,其一:软件工程过程是指

6、为获得软件产品,在软件工具支持下由软件工 程师完成的一系列软件工程活动。包含4种基本活动(PDCA):1)P(Plan)软件规格说明;2)D(Do)软件开发;3)C(Check)软件确认;4)A(Action)软件演进(为满足 客户的变更要求软件必须在使用过程中演进),其二:从软件开发的观点看,它就是使用适当的资源(包括人员、硬 软件工具、时间等),为开发软件进行的一组开发活动,在过 程结束时将输入(用户要求)转化为输出(软件产品)。故此:软件工程的过程是将软件工程的方法和工具综合起来,以达到 合理、及时地进行计算机软件开发的目的。软件工程过程应确 定方法使用的顺序、要求交付的文档资料、为保证

7、质量和适应 变化所需要的管理、软件开发各个阶段完成的任务。,12,软件工程过程与软件的生命周期,软件工程的生命周期 软件产品从提出、实现、使用维护到停止使用退役的过程。3个时期,8个主要阶段,软件定义期,问题定义,可行性研究,需求分析,软件开发期,概要设计,详细设计,实现,测试,使用和维护,退役,运行维护期,13,软件工程过程与软件的生命周期,软件工程的目标及相关基本理论 软件工程的总体目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。软件工程的基本目标:付出较低的开发成本;达到要求的软件功能;

8、取得较好的软件性能;开发软件易于移植;需要较低的费用;能按时完成开发,及时交付使用。基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。,14,结构化分析方法,结构化分析方法的定义 结构化分析方法就是使用数据流图(DFD:Data Flow Diagram)数据字典(DD:Data Dictionary)、结构化语言、判断表和判断树等工具、来建立一种新的、称为结构化规格说明的目标文档。结构化分析方法的实质是着眼于数据流自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具建立系统的逻辑模型。,结构化方法的核心和基础是结构化程序设计理论。需求

9、分析方法有 1)结构化需求分析方法;2)面向对象的分析的方法。从需求分析建立的模型的特性来分:静态分析和动态分析。,15,结构化分析方法,结构化分析方法常用工具简介,A、数据流图:数据流图是描述数据处理过程的工具。(圆):加工(转换)。输入数据经过加工变换产生输出(箭头):数据流。沿箭头方向传送数据的通道,一般在旁边标注数据流名(平行的二条直线),存储文件(数据源)表示处理过程中存放各种数据 的文件。(长方形):表示系统和环境的接口,属于系统之外的实体。B、数据字典:数据字典是对数据流图中所有元素的定义的集合,是结构化 分析的核心。数据字典中有4种类型的条目:数据流、数据项、数据存储和加工。C

10、、判定表:有些加工的逻辑用语言形式不容易表达清楚,而用表的形式则 一目了然。如果一个加工逻辑有多个条件、多个操作,并且在不同的 条件组合下执行不同的操作,那么可以使用判定表来描述。判定表由四部分组成:基本条件,条件项,基本动作,动作项。D、判定树:使用判定树进行描述时,应先从问题定义的文字描述中分清哪 些是判定的条件,哪些是判定的结论,根据模仿材料中的连接词找出判 定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。,16,结构化分析方法,软件需求规格说明书(SRS,software Requirement Specification),是需求分析阶段的最后成果,是软件开发中的文档之

11、一。软件需求规格说明书的特点 正确性:体现待开发系统的真实要求。无歧义性:对每一个需求只有一种解释,其陈述具有惟一性。完整性:包括全部有意义的需求,功能的、性能的、设计的、约 束的,属性或外部接口等方面的需求。可验证性:描述的每一个需求都是可以验证的,即存在有限代价 的有效过程验证确认。一致性:各个需求的描述矛盾。可理解性:需求说明书必须简明易懂,尽量少包含计算机的要领 和术语,以便用户和软件人员都能接受它。可修改性:每一个需求的来源、流向是清晰的,当产生和改变文 件编制时,可以方便地引证每一个需求。可追溯性。,17,结构化设计方法,从技术的角度分析软件设计从技术的角度分析软件设计包括软件结构

12、设计、数据设计、接口设计、过程设计。从工程管理的角度分析软件设计从工程管理的角度来看,软件设计分为概要设计和详细设计两部分。,软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件设计是确定系统的物理模型。软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径。,18,结构化设计方法,软件设计的基本原理 软件设计的一般过程:软件设计是一个迭代的过程;先进行高层次的结构设计;后进行低层次的过程设计;穿插进行数据设计和接口设计。1、软件设计中应遵循的基本原理和与软件设计有关的概念,抽象:抽象是一种思维工具,就是把事物本质的共同特性提取 出来而不考虑

13、其他细节。模块化:把一个待开发的软件分解成若干个小的简单的部分。信息隐蔽:在一个模块内包含的信息(过程或数据),对于不 需要这些信息的其他模块来说是不能访问的。模块独立性:每个模块只完成系统要求的独立的子功能,并且 与其他模块的联系最少且接口简单。是评价设计 好坏的重要度量标准。衡量软件的模块独立性作 用耦合性和内聚性两个定性的度量标准。,19,结构化设计方法,2、衡量软件模块独立性使用耦合性和内聚性两个定性的度量标准,内聚性:内聚性是一个模块内部各个元素间彼此结合的紧密程度的度 量。内聚是从功能角度来度量模块内的联系。,耦合性:耦合性是模块间互相连接的紧密程度的度量。耦合性取决于 各个模块之

14、间接口的复杂度、调用方式以及哪些信息通过接 口。耦合可以分为下列几种,它们之间的耦合度由高到低排 列为:,内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。非直接耦合独立性最强。,在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,提高模块的独立性。,20,结构化设计方法,软件概要设计的基本任务 1)设计软件系统结构;2)数据结构及数据库设计;3)编写概要设计文档;4)概要设计文档评审。软件设计的基本图例介绍 结构图的元素:矩形表示一个模块,在矩形内注明模块的功能和名字 箭头表示模块间

15、的调用关系。带实心圆的箭头表示传递的是控制信息 带空心圆的箭头表示传递的是数据,结构图中常有的模块类型:传入模块、传出模块、变换模块、协调模块。结构图的基本形式:基本形式、顺序形式、重复形式、选择形式。,21,结构化设计方法,典型的数据流类型 A、变换型。将数据流分成三个部分:输入数据、中心变换和 输出数据三个部分。B、事务型。特点是:接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。,软件详细设计 详细设计:是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。常用的设计工具有:图形工具:程序流程图,N-S图(程

16、序盒图),PAD图(问题分析图:Problem Analysis Diagram),HIPO图(分层和输入-处理-输出)表格工具:判定表 语言工具:PDL(伪码)PDL(Program Design Language),22,软件测试,软件测试的定义及目的 软件测试定义:使用人工或自动手段来运行或测定某个系统的过程。软件测试的目的:其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。,软件测试的准则 所有测试应追溯到需求 严格执行测试计划,排除测试的随意性 充分注意测试中的群集现象 程序员应避免检查自己的程序 穷举测试不可能 妥善保存测试计划、测试用例、出错统计和最终分析报

17、告,为维护提供方便,23,软件测试,软件测试技术与方法综述 1、静态测试与动态测试 2、白盒测试方法与测试用例设计3、黑盒测试方法与测试用例设计,静态测试包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。动态测试:是基于计算机的测试,主要包括白盒测试方法和黑盒测试方法。,白盒测试也称结构测试或逻辑驱动测试。主要的方法有:逻辑覆盖(包括语句覆盖、路径覆盖、判定覆盖、条件覆盖和判断条件覆盖)、基本路径测试等,黑盒测试方法也称功能测试或数据驱动测试,是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试方法主要有:等价类划分法(包括有效等价类和无效等价类)、边界值分析法

18、、错误推测法、因果图等,主要用于软件确认测试。,24,软件测试,软件测试的实施,1)单元测试 对模块进行测试,用于发现模块内部的错误。2)集成测试 测试和组装软件的过程,主要用于发现与接口有 关的错误。集成测试包括的内容:软件单元的接 口测试、全局数据结构测试、边界条件和非法输 入的测试等。集成测试分为:增量方式组装(包括自顶而下、自底而上、自顶向下和自底向上的混合增量方 式)与非增量方式组装。3)确认测试(验收测试)验证软件的功能和性能及其他特征是 否满足了需求规格说明中确定的各种需求,以及 软件配置是否完全、正确。4)系统测试 将经过测试后的软件,与计算机的硬件、外设、支持软件、数据和人员

19、等其他元素组合在一起,在实际运行环境中进行一系列的集成测试和确认 测试。,25,程序的调试(Debug),基本概念 程序调试活动包括:根据错误的迹象确定程序中错误的确切性质、原因和位置;对程序进行修改,排除错误。程序调试的任务(目的)是诊断和改正程序中的错误,主要在开发阶段进行。,基本步骤 错误定位修改设计和代码,以排除错误进行回溯测试,防止引进新的错误。,26,程序的调试(Debug),调试的原则,1)确定错误的性质和位置分析与错误有关的信息 避开死胡同 避免用试探法调试工具只是一种辅助手段,只能帮助思考,不能代替思考 2)修改错误的原则在出现错误的地方,有可能还有别的错误,在修改时,一定要观察和检查相关的代码,以防止其他的错误一定要注意错误代码的修改,不要只注意表象,而要注意错误的本身,把问题解决。注意在修正错误时,可能代入新的错误,错误修改后,一定要进行回归测试,避免新的错误产生修改错误也是程序设计的一种形式修改源代码程序,不要改变目标代码,27,程序的调试(Debug),程序调试的方法软件调试可分为静态调试和动态调试。静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的设计手段;动态调试是辅助静态调试。主要调试方法有:,1)强行排错法 2)回溯法 3)原因排除法 原因排除法包括:演绎法、归纳法和二分法。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号