程序设计及软件工程基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功