程序设计及软件工程基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.4N 软件a 工o 程g 基本概e 念
软件工程三要素
٭方法:完成软件工程项目的技术手段 ٭工具:支持软件的开发、管理、文档生成 ٭过程:支持软件开发的各个环节的控制、管理
软件工具和软件开发环境
٭软件工具(CASE):用来辅助软件开、运行、维护、管理、 支持等过程中的活动的软件
设计原则
٭自顶向下 ٭逐步求精 ٭模块化 ٭限制使用goto语句
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 2 结a 构化o 程g 序设e 计
基本结构:顺序、选择、循环
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.3N 面向a 对o 象g 程序设e 计
٭软件开发环境:支持软件产品开发的软件系统,它由软 件工具集和环境集成机制构成
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.4N 软件a 工o 程g 基本概e 念
软件生命周期
软件产品从提出、实现、使用维护到停止使用退役的过程称 为软件生命周期。分为软件定义、软件开发及软件运行维护3个 阶段。
٭4)局部化:保证模块间具有松耦合性,模块内部有高内聚性。 ٭5)确定性:软件中所有概念的表达应是确定、无歧义且规范的。 ٭6)一致性:内外部接口保持一致,系统规格说明与行为保持一致。 ٭7)完备性:软件系统不丢失任何重要成分,完全实现系统所需功能。 ٭8)可验证性:遵循容易检查、测评、评审原则,确保系统正确性
加工
数据流
存储文件
源、潭
٭加工(转换):输入数据经加工变换产生输出。 ٭数据流:沿箭头方向传送数据的通道,旁边标注数据流名。 ٭存储文件(数据源):表示处理过程中存放各种数据的文件。 ٭源、潭:表示系统和环境的接口,属系统之外的实体。
二级ACCESS—软件设计及软件工程基础
No Image
常用工具
٭数据流图、数据字典、判定树、判定表
开发策略
٭自顶向下,逐层分解
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 5 结a 构化o 分g 析方e 法
数据流图(DFD):以图形的方式描绘数据在系统中流动和
处理的过程,它反映了系统必须完成的逻辑功能,是结构化分 析方法中用于表示系统逻辑模型的一种工具。
٭数据字典常包括5个部分:数据项、数据结构、数据流、 数据存储、数据处理。
٭数据字典是结构化分析方法的核心
软件需求规格说明书(SRS) :需求分析阶段的最后
成果,通过建立完整的信息描述、详细的功能和行为描述、 性能需求和设计约束的说明、合适的验收标准,给出对目标 软件的各种需求。
二级ACCESS—软件设计及软件工程基础
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.1 程N 序a 设计o 方g 法和e 风格
程序设计三种方法
٭结构化设计法 ▪ 模块内部程序各部分要按照自顶向下的结构划分 ▪ 各程序部分应按功能组合
٭快速原型法(软件工程法) ▪ 利用现有的工具和原型方法快速地开发所要的程序
面向对象程序设计主要考虑的是提高软件的可重用性!
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.3N 面向a 对o 象g 程序设e 计
面向对象的基本概念
٭对象(Object)
▪ 对象是基本的运行时认得实体,它既包括数据(属性),也包括 作用于数据的操作(行为)。
▪ 一个对象把属性和行为封装为一个整体 ▪ 一个对象通常可由对象名、属性和操作3部分组成
▪ 软件测试:在设计测试用例的基础上检验软件的各个组成部分。
٭3)软件运行维护阶段(生命周期中花费最多的阶段):软件投入运 行,并在使用中不断地维护,进行必要的扩充和删改。
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 5 结a 构化o 分g 析方e 法
需求分析
用户对目标软件系统在功能、行为、性能、设计约束等方面 的期望。需求分析的任务是发现需求、求精、建模和定义需求 的过程。需求分析将创建所需的数据模型、功能模型和控制模 型。
面向对象的基本概念
٭类(Class)
▪ 一个类定义了一组大体上相似的对象。 ▪ 一个类所包含的方法和数据描述一组对象的共同行为和属性。 ▪ 类是在对象之上的抽象,对象是类的具体化,是类的实例
٭封装(Encapsulation)
▪ 将数据和操作数据的函数衔接在一起,构成一个具有类类型的对 象的描述。
软件工程基本目标
在给定成本、进度的前提下,开发出具有有效性、可靠性、 可理解性、可维护性、可重用性、可适应性、可移植性、可追 踪性和可互操作性且满足用户需求的产品。
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.4N 软件a 工o 程g 基本概e 念
软件工程原则:抽象、信息隐蔽、模块化、局部化、确定
٭多态性(Polymorphism)
▪ 不同的对象收到同一消息可以产生完全不同的结构,这一现象叫 做多态性
▪ 多态的实现受到继承的支持
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.4N 软件a 工o 程g 基本概e 念
软件的定义
软件(software)是计算机系统中与硬件(hardware)相互依存 的另一部分。软件包括三个部分:程序(program)、相关数据 (data)、说明文档(document)。
▪ 对象的内部实现受保护,外界不能访问 ▪ 封装简化了程序员对对象的使用
٭
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.3N 面向a 对o 象g 程序设e 计
面向对象的基本概念
٭继承(Inheritance)
▪ 继承是父类和子类之间共享数据的方法的机制 ▪ 一个子类可以继承它的父类(或祖先类)中的属性和操作 ▪ 子类中可以定义自己的属性和操作 ▪ 单重继承、多重继承
软件的特点
٭软件是一种逻辑实体,不是物理实体,具有抽象性。 ٭软件没有明显的制造过程。 ٭软件在使用过程中,没有磨损、老化问题 ٭软件依赖与硬件和环境,导致了移植问题 ٭软件是复杂的,而且以后会更复杂 ٭软件的成本相当昂贵 ٭软件工作牵涉到很多社会因素
二级ACCESS—软件设计及软件工程基础
第二章
程序设计及软件工程基础
No Image
Im 本N 章a 主要o 内g 容 e
程序设计方法和风格 结构化程序设计 面向对象程序设计 软件工程基本概念 结构化分析方法 软件测试 程序的调试 过关练习
二级ACCHale Waihona Puke BaiduSS—软件设计及软件工程基础
No Image
Im 2.1 程N 序a 设计o 方g 法和e 风格
性、一致性、完备性和可验证性。
٭1)抽象:抽象是事物最基本的特性和行为,忽略非本质细节,采用分层 次抽象,自顶向下,逐层细化来控制软件开发过程的复杂性。
٭2)信息隐蔽:采用封装技术,将程序模块的实现细节隐蔽起来,使模 块接口尽量简单。
٭3)模块化:模块是程序中相对独立的成分,一个独立的编程单位。模 块的大小要适中,过大模块内部复杂性增加,太小整个系统过于复杂。
Im 2.N 5 结a 构化o 分g 析方e 法
画数据流图的基本步骤
自外向内,自顶向下,逐层细化,完善求精
数据流图的示例
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 5 结a 构化o 分g 析方e 法
数据字典(DD):对所有与系统相关的数据元素的一个有
组织的列表,其作用是对数据流图中出现的被命名的图形元 素的确切解释 。
٭1)软件定义阶段:包括制定计划和需求分析。
▪ 制定计划:确定总目标;可行性研究;探讨解决方案;制定开发计划。 ▪ 需求分析:对待开发软件提出的需求进行分析并给出详细的定义。
٭2)软件开发阶段:
▪ 软件设计:分为概要设计和详细设计两个部分。软件实现:把软件设计 转换成计算机可以接受的程序代码。
٭面向对象(Object Oriented, OO)
▪ 从该问题所涉及的对象入手来研究问题。
٭消息(Message)
▪ 对象之间进行通信的一种数据构造,消息包括:接受消息对象名、 消息标识符、零个或多个参数。
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.3N 面向a 对o 象g 程序设e 计
基本思想
客观世界中任何一个事物都可以被看成是一个对象,面向 对象方法的本质就是主张从客观世界固有的事物出发来构造系 统,系统中的对象及对象之间的关系能够如实地反映问题域中 固有的事物及其关系。
结构化与面向对象方法比较
٭结构化的分解突出过程,即如何做(How to do)?它强调 代码的功能是如何实现的;
No Image
Im 2.4N 软件a 工o 程g 基本概e 念
软件危机
早期的软件主要指程序,采用个体工作方式,缺少相关文档, 质量低,维护困难,这些问题称为“软件危机”,软件工程概 念的出现源自于软件危机。
软件工程
软件工程是指应用计算机科学、数学及管理科学等原理,以 工程化的原则和方法来解决软件问题的工程。其目的是提高软 件生产率、提高软件质量、降低软件成本。
٭面向对象程序设计法 ▪ 以对象为核心,与人类习惯的思维方法一致
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 2 结a 构化o 程g 序设e 计
基本思想
对大型的程序设计,使用一些基本的结构来设计程序,无 论多复杂的程序,都可以使用这些基本结构按一定的顺序组合 起来。这些基本结构的特点都是只有一个入口、一个出口。由 这些基本结构组成的程序就避免了任意转移、阅读起来需要来 回寻找的问题。
什么是程序
٭指令的集合。(解释指令) ٭通过硬件控制系统自动完成某一功能。 ٭通过一系列代码实现。
程序设计语言
٭计算机本身仅能识别二进制代码“0”、“1”。 ٭编译程序和解释程序 ٭编程最直接、最低级的就是机器语言。 ٭汇编语言。 ٭高级语言。如C、PASCAL、FORTRAN、BASIC、
٭数据说明:显式地说明一切变量、数据说明的次序应该 规范化、便于查找变量(按顺序排列)、对复杂数据结 构应注释说明
٭语句的结构:每条语句简单明了、尽量不用或少用 GOTO语句、尽量只采用3种基本控制结构编程
٭输入和输出:对所有输入数据进行校验和合理性检查、 输入输出格式保持一致、设计良好的输出报表
JAVA等
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.1 程N 序a 设计o 方g 法和e 风格
程序设计风格
٭基本概念:编写程序时所表现出来的特点、习惯和逻辑 思路。一般从以下四部分加以规范:
٭源程序中的内部文档:选择标示符的名字、注释(序言 性和功能性注释)、程序的视觉组织。
ImNaoge2.6I 结m 构化设N 计a 方法o —g 软件e 设计的基础
需求分析主要解决“做什么”的问题,而软件设计 主要解决“怎么做”的问题。
从技术观点来看,软件设计包括软件结构设计、数 据设计、接口设计、过程设计。
٭结构设计:定义软件系统各主要部件之间的关系。 ٭数据设计:将分析时创建的模型转化为数据结构的定义。 ٭接口设计:描述软件内部、软件和协作系统之间以及软
需求分析的四步骤
需求获取、需求分析、编写需求规格说明书和需求评审
需求分析的方法
结构化分析方法、面向对象分析方法
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 5 结a 构化o 分g 析方e 法
结构化分析方法
结构化程序设计理论在软件需求分析阶段的运用,其目的 是帮助弄清用户对软件的需求。
٭面向对象的分解突出现实世界和抽象的对象,即做什么 (What to do)?
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.3N 面向a 对o 象g 程序设e 计
主要优点
٭与人类习惯的思维方法一致 ٭稳定性好 ٭可重用性好 ٭易于开发大型软件产品 ٭可维护性好
No Image
Im 2.4N 软件a 工o 程g 基本概e 念
软件工程三要素
٭方法:完成软件工程项目的技术手段 ٭工具:支持软件的开发、管理、文档生成 ٭过程:支持软件开发的各个环节的控制、管理
软件工具和软件开发环境
٭软件工具(CASE):用来辅助软件开、运行、维护、管理、 支持等过程中的活动的软件
设计原则
٭自顶向下 ٭逐步求精 ٭模块化 ٭限制使用goto语句
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 2 结a 构化o 程g 序设e 计
基本结构:顺序、选择、循环
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.3N 面向a 对o 象g 程序设e 计
٭软件开发环境:支持软件产品开发的软件系统,它由软 件工具集和环境集成机制构成
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.4N 软件a 工o 程g 基本概e 念
软件生命周期
软件产品从提出、实现、使用维护到停止使用退役的过程称 为软件生命周期。分为软件定义、软件开发及软件运行维护3个 阶段。
٭4)局部化:保证模块间具有松耦合性,模块内部有高内聚性。 ٭5)确定性:软件中所有概念的表达应是确定、无歧义且规范的。 ٭6)一致性:内外部接口保持一致,系统规格说明与行为保持一致。 ٭7)完备性:软件系统不丢失任何重要成分,完全实现系统所需功能。 ٭8)可验证性:遵循容易检查、测评、评审原则,确保系统正确性
加工
数据流
存储文件
源、潭
٭加工(转换):输入数据经加工变换产生输出。 ٭数据流:沿箭头方向传送数据的通道,旁边标注数据流名。 ٭存储文件(数据源):表示处理过程中存放各种数据的文件。 ٭源、潭:表示系统和环境的接口,属系统之外的实体。
二级ACCESS—软件设计及软件工程基础
No Image
常用工具
٭数据流图、数据字典、判定树、判定表
开发策略
٭自顶向下,逐层分解
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 5 结a 构化o 分g 析方e 法
数据流图(DFD):以图形的方式描绘数据在系统中流动和
处理的过程,它反映了系统必须完成的逻辑功能,是结构化分 析方法中用于表示系统逻辑模型的一种工具。
٭数据字典常包括5个部分:数据项、数据结构、数据流、 数据存储、数据处理。
٭数据字典是结构化分析方法的核心
软件需求规格说明书(SRS) :需求分析阶段的最后
成果,通过建立完整的信息描述、详细的功能和行为描述、 性能需求和设计约束的说明、合适的验收标准,给出对目标 软件的各种需求。
二级ACCESS—软件设计及软件工程基础
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.1 程N 序a 设计o 方g 法和e 风格
程序设计三种方法
٭结构化设计法 ▪ 模块内部程序各部分要按照自顶向下的结构划分 ▪ 各程序部分应按功能组合
٭快速原型法(软件工程法) ▪ 利用现有的工具和原型方法快速地开发所要的程序
面向对象程序设计主要考虑的是提高软件的可重用性!
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.3N 面向a 对o 象g 程序设e 计
面向对象的基本概念
٭对象(Object)
▪ 对象是基本的运行时认得实体,它既包括数据(属性),也包括 作用于数据的操作(行为)。
▪ 一个对象把属性和行为封装为一个整体 ▪ 一个对象通常可由对象名、属性和操作3部分组成
▪ 软件测试:在设计测试用例的基础上检验软件的各个组成部分。
٭3)软件运行维护阶段(生命周期中花费最多的阶段):软件投入运 行,并在使用中不断地维护,进行必要的扩充和删改。
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 5 结a 构化o 分g 析方e 法
需求分析
用户对目标软件系统在功能、行为、性能、设计约束等方面 的期望。需求分析的任务是发现需求、求精、建模和定义需求 的过程。需求分析将创建所需的数据模型、功能模型和控制模 型。
面向对象的基本概念
٭类(Class)
▪ 一个类定义了一组大体上相似的对象。 ▪ 一个类所包含的方法和数据描述一组对象的共同行为和属性。 ▪ 类是在对象之上的抽象,对象是类的具体化,是类的实例
٭封装(Encapsulation)
▪ 将数据和操作数据的函数衔接在一起,构成一个具有类类型的对 象的描述。
软件工程基本目标
在给定成本、进度的前提下,开发出具有有效性、可靠性、 可理解性、可维护性、可重用性、可适应性、可移植性、可追 踪性和可互操作性且满足用户需求的产品。
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.4N 软件a 工o 程g 基本概e 念
软件工程原则:抽象、信息隐蔽、模块化、局部化、确定
٭多态性(Polymorphism)
▪ 不同的对象收到同一消息可以产生完全不同的结构,这一现象叫 做多态性
▪ 多态的实现受到继承的支持
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.4N 软件a 工o 程g 基本概e 念
软件的定义
软件(software)是计算机系统中与硬件(hardware)相互依存 的另一部分。软件包括三个部分:程序(program)、相关数据 (data)、说明文档(document)。
▪ 对象的内部实现受保护,外界不能访问 ▪ 封装简化了程序员对对象的使用
٭
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.3N 面向a 对o 象g 程序设e 计
面向对象的基本概念
٭继承(Inheritance)
▪ 继承是父类和子类之间共享数据的方法的机制 ▪ 一个子类可以继承它的父类(或祖先类)中的属性和操作 ▪ 子类中可以定义自己的属性和操作 ▪ 单重继承、多重继承
软件的特点
٭软件是一种逻辑实体,不是物理实体,具有抽象性。 ٭软件没有明显的制造过程。 ٭软件在使用过程中,没有磨损、老化问题 ٭软件依赖与硬件和环境,导致了移植问题 ٭软件是复杂的,而且以后会更复杂 ٭软件的成本相当昂贵 ٭软件工作牵涉到很多社会因素
二级ACCESS—软件设计及软件工程基础
第二章
程序设计及软件工程基础
No Image
Im 本N 章a 主要o 内g 容 e
程序设计方法和风格 结构化程序设计 面向对象程序设计 软件工程基本概念 结构化分析方法 软件测试 程序的调试 过关练习
二级ACCHale Waihona Puke BaiduSS—软件设计及软件工程基础
No Image
Im 2.1 程N 序a 设计o 方g 法和e 风格
性、一致性、完备性和可验证性。
٭1)抽象:抽象是事物最基本的特性和行为,忽略非本质细节,采用分层 次抽象,自顶向下,逐层细化来控制软件开发过程的复杂性。
٭2)信息隐蔽:采用封装技术,将程序模块的实现细节隐蔽起来,使模 块接口尽量简单。
٭3)模块化:模块是程序中相对独立的成分,一个独立的编程单位。模 块的大小要适中,过大模块内部复杂性增加,太小整个系统过于复杂。
Im 2.N 5 结a 构化o 分g 析方e 法
画数据流图的基本步骤
自外向内,自顶向下,逐层细化,完善求精
数据流图的示例
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 5 结a 构化o 分g 析方e 法
数据字典(DD):对所有与系统相关的数据元素的一个有
组织的列表,其作用是对数据流图中出现的被命名的图形元 素的确切解释 。
٭1)软件定义阶段:包括制定计划和需求分析。
▪ 制定计划:确定总目标;可行性研究;探讨解决方案;制定开发计划。 ▪ 需求分析:对待开发软件提出的需求进行分析并给出详细的定义。
٭2)软件开发阶段:
▪ 软件设计:分为概要设计和详细设计两个部分。软件实现:把软件设计 转换成计算机可以接受的程序代码。
٭面向对象(Object Oriented, OO)
▪ 从该问题所涉及的对象入手来研究问题。
٭消息(Message)
▪ 对象之间进行通信的一种数据构造,消息包括:接受消息对象名、 消息标识符、零个或多个参数。
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.3N 面向a 对o 象g 程序设e 计
基本思想
客观世界中任何一个事物都可以被看成是一个对象,面向 对象方法的本质就是主张从客观世界固有的事物出发来构造系 统,系统中的对象及对象之间的关系能够如实地反映问题域中 固有的事物及其关系。
结构化与面向对象方法比较
٭结构化的分解突出过程,即如何做(How to do)?它强调 代码的功能是如何实现的;
No Image
Im 2.4N 软件a 工o 程g 基本概e 念
软件危机
早期的软件主要指程序,采用个体工作方式,缺少相关文档, 质量低,维护困难,这些问题称为“软件危机”,软件工程概 念的出现源自于软件危机。
软件工程
软件工程是指应用计算机科学、数学及管理科学等原理,以 工程化的原则和方法来解决软件问题的工程。其目的是提高软 件生产率、提高软件质量、降低软件成本。
٭面向对象程序设计法 ▪ 以对象为核心,与人类习惯的思维方法一致
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 2 结a 构化o 程g 序设e 计
基本思想
对大型的程序设计,使用一些基本的结构来设计程序,无 论多复杂的程序,都可以使用这些基本结构按一定的顺序组合 起来。这些基本结构的特点都是只有一个入口、一个出口。由 这些基本结构组成的程序就避免了任意转移、阅读起来需要来 回寻找的问题。
什么是程序
٭指令的集合。(解释指令) ٭通过硬件控制系统自动完成某一功能。 ٭通过一系列代码实现。
程序设计语言
٭计算机本身仅能识别二进制代码“0”、“1”。 ٭编译程序和解释程序 ٭编程最直接、最低级的就是机器语言。 ٭汇编语言。 ٭高级语言。如C、PASCAL、FORTRAN、BASIC、
٭数据说明:显式地说明一切变量、数据说明的次序应该 规范化、便于查找变量(按顺序排列)、对复杂数据结 构应注释说明
٭语句的结构:每条语句简单明了、尽量不用或少用 GOTO语句、尽量只采用3种基本控制结构编程
٭输入和输出:对所有输入数据进行校验和合理性检查、 输入输出格式保持一致、设计良好的输出报表
JAVA等
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.1 程N 序a 设计o 方g 法和e 风格
程序设计风格
٭基本概念:编写程序时所表现出来的特点、习惯和逻辑 思路。一般从以下四部分加以规范:
٭源程序中的内部文档:选择标示符的名字、注释(序言 性和功能性注释)、程序的视觉组织。
ImNaoge2.6I 结m 构化设N 计a 方法o —g 软件e 设计的基础
需求分析主要解决“做什么”的问题,而软件设计 主要解决“怎么做”的问题。
从技术观点来看,软件设计包括软件结构设计、数 据设计、接口设计、过程设计。
٭结构设计:定义软件系统各主要部件之间的关系。 ٭数据设计:将分析时创建的模型转化为数据结构的定义。 ٭接口设计:描述软件内部、软件和协作系统之间以及软
需求分析的四步骤
需求获取、需求分析、编写需求规格说明书和需求评审
需求分析的方法
结构化分析方法、面向对象分析方法
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.N 5 结a 构化o 分g 析方e 法
结构化分析方法
结构化程序设计理论在软件需求分析阶段的运用,其目的 是帮助弄清用户对软件的需求。
٭面向对象的分解突出现实世界和抽象的对象,即做什么 (What to do)?
二级ACCESS—软件设计及软件工程基础
No Image
Im 2.3N 面向a 对o 象g 程序设e 计
主要优点
٭与人类习惯的思维方法一致 ٭稳定性好 ٭可重用性好 ٭易于开发大型软件产品 ٭可维护性好