软件开发设计基础_第1页
已阅读1页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023/12/6第九章软件开发设计基础10.用计算机解决问题的步骤

利用计算机解决一个问题时,一般情况要经过如下步骤:抽象:数学化—模型化;算法:列出求解步骤—步骤化;编成:用计算机描述算法—代码化;运行:编辑、调试和测试—实施。2023/12/6第九章软件开发设计基础21.算法算法的定义;算法的要满足的条件;算法的评价;算法的设计要求;算法的表示。2023/12/6第九章软件开发设计基础3算法的定义算法的定义:

算法:是对特定求解步骤地一种描述。 是指令的有限序列。2023/12/6第九章软件开发设计基础4算法的要满足的5个条件算法的要满足的5个条件:有穷性:确定性:输入:输出:可行性:2023/12/6第九章软件开发设计基础5算法的评价算法的评价: 算法的时间复杂度—语句重复次数;T(n)

算法的空间复杂度—内存占用量;S(n)

算法的可读性—用于交流—便于理解2023/12/6第九章软件开发设计基础6算法的设计要求算法设计的要求:正确:首要条件;合法输入—正确结果可读:便于阅读交流;算法—程序健壮:满足各种情况;高效:效率要高—空间、时间2023/12/6第九章软件开发设计基础7算法的表示算法的表示:自然语言:流程图;算法描述语言:2023/12/6第九章软件开发设计基础8(1)输入n的值(2)2=>i(i作除数)(3)n被i除得余数r(4)若r=0,表示n能被i整除,则打印“n不是素数”,算法结束;否则执行(5)(5)i+1=>i(6)若i<=n-1,返回(3);否则打印“n是素数”,然后结束自然语言描述例如:判断正整数n(n≥3)是不是质数。用算法描述语言描述其算法如下。2023/12/6第九章软件开发设计基础9传统流程图表示法例如:判断正整数n(n≥3)是不是质数。用算法描述语言描述其算法如下。2023/12/6第九章软件开发设计基础10例如:判断正整数n(n≥3)是不是质数。用算法描述语言描述其算法如下。BEGIN(算法开始)输入正整数n;i=2;f=1;do{r=n%i;if(r==0)f=0;i=i+1;}while(i<=n-1);if(f==0)输出“n不是质数”;else输出“n是质数”;END(算法结束)算法描述语言2023/12/6第九章软件开发设计基础112.程序设计程序:是解决特定问题的指令序列。程序设计语言:是描述计算机所执行的操作的语言。程序设计:是指使用程序语言产生程序的过程。程序设计所涉及的问题:不是简单的代码编写过程。程序设计的分类:结构化(解决简单问题—过程)和面向对象(解决复杂问题—抽象)2023/12/6第九章软件开发设计基础12程序设计所涉及的问题程序设计所涉及的问题:语言的选择;设计风格;算法;逻辑结构;2023/12/6第九章软件开发设计基础13结构化程序设计结构:structure,各个组成部分的搭配和排列。结构化程序设计:是进行以模块功能和处理过程设计为主的详细设计的基本原则。

分类:顺序:先后顺序,自然顺序选择:分支结构;循环:重复结构;2023/12/6第九章软件开发设计基础14面向对象化程序设计结构化程序设计方法可以解决中小规模的问题,解决较复杂的问题比较困难,在此基础上产生了新的方法—面向对象的程序设计方法。面向对象程序设计的基本概念:对象和类、封装性、继承性、多态性2023/12/6第九章软件开发设计基础15多态性多态性(多形性)

多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。

多态性允许每个对象以适合自身的方式去响应共同的消息。

多态性增强了软件的灵活性和重用性。2023/12/6第九章软件开发设计基础16继承性继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。2023/12/6第九章软件开发设计基础17封装性封装性(信息隐藏) 是保证软件部件具有优良的模块性的基础。面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、更为有力。2023/12/6第九章软件开发设计基础18对象和类对象:object,是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。男女朋友;行为或思考时作为目标的人或事。具有状态、属性和行为。类:是对象的定义;是对具有相同行为和属性的对象的抽象和描述。2023/12/6第九章软件开发设计基础193.数据结构数据结构:基本概念;数据结构的分类线性表堆栈队列串数组树二叉树图线性结构非线性结构数据结构DS2023/12/6第九章软件开发设计基础20基本概念数据(Data):是对客观事物的物理符号表示。数据项(DataItem):也称为字段、域、属性。数据元素(Element):是数据的基本单位—由若干数据项组成。数据对象(DataObject):是性质相同的数据元素的集合,是数据的一个子集。数据结构2023/12/6第九章软件开发设计基础21数据结构数据结构:是指相互之间存在一种或多种关系的数据元素的集合。 数据结构是带有结构特征的数据元素的集合,三要素:

DS=数据的逻辑结构+存储结构+数据的运算 按某种逻辑关系组织起来的一批数据,按一定的存储方式把它存储在计算机存储器中,并在这些数据上定义了一个运算的集合,叫做一个数据结构(DataStructures)。2023/12/6第九章软件开发设计基础224.软件工程软件危机软件工程的定义软件生命周期结构化方法学面向对象方法学2023/12/6第九章软件开发设计基础23软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些严重的问题阻碍着软件生产的规模化、商品化以及生产效率。使得软件的开发和生产成为制约软件产业发展的“瓶径”。危机的由来软件危机(SoftwareCrisis)2023/12/6第九章软件开发设计基础24硬件生产率大幅提高软件规模越来越大软件生产率很低硬、软件供需失衡矛盾引发“软件危机”软件危机的由来2023/12/6第九章软件开发设计基础25软件工程的定义软件工程是包含软件开发一切流程的学科。它又是一门交叉学科;包括计算机科学、数学、工程学和管理等学科。主要研究:克服、解决“软件危机”改进“软件生产”的方法、工具提高软件的生产率2023/12/6第九章软件开发设计基础26一个软件从提出开发要求开始直到该软件报废为止的整个时期被称为软件生命周期。软件生命周期包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。生命周期大体分为三个时期:计划时期(问题定义和可行性分析)、开发时期(需求分析、软件设计(总体、详细)、编码、测试)和运行时期(软件维护)。软件生命周期2023/12/6第九章软件开发设计基础27

可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。必须记住,可行性研究的目的不是解决问题,而是确定问题是否值得去解。技术可行性:使用现有的技术能实现这个系统吗?经济可行性:这个系统的经济效益能超过它的开发成本吗?操作可行性:系统的操作方式在这个用户组织内行得通吗?可行性研究2023/12/6第九章软件开发设计基础28

任务是:收集、分析、理解、确定用户的要求;然后把用户的要求精确、完整地描述表达出来。具体任务包括:确定对系统的综合要求分析系统的数据要求导出系统的逻辑模型修正系统开发计划阶段结果,产生出:软件计划、需求说明书需求分析2023/12/6第九章软件开发设计基础29系统设计:确定系统的具体实现方案

结构设计:确定软件的结构

在进行软件设计过程中应该遵循的基本原理和有关的概念:模块化

抽象和逐步求精

信息屏蔽

模块独立

总体设计2023/12/6第九章软件开发设计基础30详细设计是确定对目标系统的精确描述,也就是为软件结构图中的每一个模块确定实现算法和局部数据结构。结构化程序设计技术是软件详细设计的基础。详细设计阶段通常使用的工具有程序流程图、N-S盒图、问题分析图(PAD图)、判定表、判定树、过程设计语言(PDL)。详细设计2023/12/6第九章软件开发设计基础31

编码时将软件设计的结果翻译成用某种程序设计语言书写的程序。程序的质量基本上是由设计的质量决定。但是编码使用的语言,书写程序的风格和途径也对程序的质量有相当大的影响。在选择程序设计语言时不仅要考虑程序设计语言本身的特点,还要考虑软件使用环境等一系列实际因素。程序内部良好的文档资料,有规律的数据说明格式,简单清晰的语句构造和输入/输出格式等,都对提高程序的可读性有很大作用,也在相当程度上改进了程序的可维护性。利用适当的软件工具辅助编码过程,可以提高生产率并减少程序中的差错。编码2023/12/6第九章软件开发设计基础32测试的目的就是在软件投入运行之前,尽可能多地发现软件中的错误。软件测试是保证软件质量的关键步骤。软件测试的方法有两种:白盒测试和黑盒测试。黑盒测试,又称功能测试,是指完全不考虑程序内部的结构和处理过程,只按照规格说明书的规定来检查程序是否符合要求。白盒测试,又称结构测试,是指测试人员完全了解程序的内部结构和处理过程,测试时按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定的要求正确工作。测试2023/12/6第九章软件开发设计基础33软件的测试步骤模块测试:又称单元测试,是将每个模块作为一个单独的实体来测试。子系统测试:是将经过单元测试的模块放在一起形成一个子

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论