软件开发技术基础_第1页
软件开发技术基础_第2页
软件开发技术基础_第3页
软件开发技术基础_第4页
软件开发技术基础_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

第一页,共五十六页,2022年,8月28日程序设计基础

程序设计基础结构化程序设计面向对象程序设计程序设计方法及风格结构化程序设计原则结构化程序的基本结构与特点结构化程序设计方法的应用面向对象方法面向对象方法的基本概念第二页,共五十六页,2022年,8月28日程序设计

是指利用计算机解决问题的全过程,它包含多方面的内容,而编写程序只是其中的一部分。

分析问题确定处理方案确定操作步骤编写程序上机运行程序整理结果

程序设计的一般步骤第三页,共五十六页,2022年,8月28日

例如:求圆的面积和周长的程序设计一般步骤:

①分析问题求圆的面积和周长需要知道圆的半径r,根据圆的半径求出圆的面积S和周长L并输出结果。②确定处理方案求圆的面积数学公式是:S=лr2求圆的周长公式是:L=2лr

第四页,共五十六页,2022年,8月28日③确定操作步骤求圆的面积和周长的算法描述为:确定半径的初值计算面积S计算周长L输出结果S,L

第五页,共五十六页,2022年,8月28日④根据操作步骤编写源程序。将上面求圆的面积和周长算法编写源程序如下

#definePI3.14159main(){floatr=3,S,L;S=PI*r*r;L=2*PI*r;printf(“S=%f,L=%f\n”,S,L);}⑤运行调试程序。⑥整理输出结果,写出相关文档。第六页,共五十六页,2022年,8月28日程序设计方法与风格程序设计方法

是指以什么观点来研究问题并进行求解,以及如何进行系统设计的软件方法学。程序设计方法经过的2个阶段结构化程序设计面向对象程序设计第七页,共五十六页,2022年,8月28日程序设计风格编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格强调简单、清晰和可理解性。

当今主导的程序设计风格:清晰第一、效率第二第八页,共五十六页,2022年,8月28日main(){floatr,s;scanf(“%f”,&r);

if(r>0){//半径必须为正数s=2*3.14159*r;printf(“s=%f”,s);

}

else

printf(“请输入正数!”);}

main(){floatr,s;scanf(“%f”,&r);if(r>0){s=2*3.14159*r;printf(“s=%f”,s);}

elseprintf(“请输入正数!”);}

第九页,共五十六页,2022年,8月28日结构化程序设计原则基本结构模块化结构化程序设计第十页,共五十六页,2022年,8月28日自顶向下

先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。先从总目标开始设计,逐步使问题具体化。逐步求精

对复杂问题设计一些子目标作为过渡,逐步细化。模块化

将总目标分解为分目标,再进一步分为具体的小目标,每个小目标成为一个模块。限制使用goto语句

会导致程序流程的混乱,应限制使用。

结构化程序设计原则第十一页,共五十六页,2022年,8月28日学生成绩管理增加删除修改查询统计按学号按姓名按班级第十二页,共五十六页,2022年,8月28日顺序结构选择结构循环结构

结构化程序的基本结构与特点第十三页,共五十六页,2022年,8月28日顺序结构main(){floatr,s;scanf(“%f”,&r);s=2*3.14159*r;printf(“s=%f”,s);}

AB第十四页,共五十六页,2022年,8月28日选择结构main(){floatr,s;scanf(“%f”,&r);

if(r>0){s=2*3.14159*r;printf(“s=%f”,s);

}

else

printf(“请输入正数!”);}

AB条件真假第十五页,共五十六页,2022年,8月28日循环结构main(){inti,s;s=0;

for(i=0;i<=100;i++)s=s+i;

printf(“s=%d”,s);}

A条件真假第十六页,共五十六页,2022年,8月28日优点缺点程序结构良好程序清晰易读、使用和维护提高编程的效率,降低开发成本数据与对数据的操作(函数)相分离,造成数据和算法的一致性差程序的可重用性差第十七页,共五十六页,2022年,8月28日结构化程序设计原则和方法的应用

在程序设计过程中,要采用自顶向下和逐步细化的原则,由粗到细,一步步展开,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而翻译成一系列用某种程序设计语言写成的程序。第十八页,共五十六页,2022年,8月28日面向对象的程序设计基本概念面向对象方法的特征和用途第十九页,共五十六页,2022年,8月28日面向对象的方法客观世界的任何一个事物都可以被看成是一个对象。

面向对象的方法的本质就是从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方式来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域。系统中的对象及对象之间的关系能够如实反映问题域中固有的事物及其关系。第二十页,共五十六页,2022年,8月28日对象

基本概念

客观世界的实体通常既具有静态的属性,又具有动态的行为。在计算机系统中,对象是一组属性以及这组属性上的操作的封装体。

对象=属性+操作属性:就是对象的特征,是对象外观及行为的特征。第二十一页,共五十六页,2022年,8月28日是具有共同属性和共同操作方法的对象的集合,是对象的抽象。描述了属于该对象类型的所有对象的性质。

类类是对象的抽象(模板),对象则是其对应类的一个实例。第二十二页,共五十六页,2022年,8月28日

就是要求某个对象执行某个操作的规格说明。一个消息由三部分组成:接收消息的对象名称消息名称零个或多个参数消息

消息用于对象之间信息交流,对象之间的相互服务是通过消息来连接实现的。发送对象接口接收对象消息操作名、参数第二十三页,共五十六页,2022年,8月28日特性

封装性

指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构及实现操作的算法。信息的隐蔽是通过对象的封装性来实现的属性操作1、2、3的实现操作1操作2操作3界面第二十四页,共五十六页,2022年,8月28日继承性

使用已有的类(父类)定义作为基础建立新类(子类)的定义技术。单继承多重继承

职工

学生

教师

在职学生

提高了软件的可重用性,继承具有传递性第二十五页,共五十六页,2022年,8月28日多态性

同一消息被不同的对象接受时可以产生完全不同的行为。

实现“同一接口,不同实现”

增加了系统的灵活性,进一步减少数据冗余,显著提高软件的可重用性和可扩充性。第二十六页,共五十六页,2022年,8月28日优点与人类思维方法一致稳定性好可重用性好易于开发大型软件产品可维护性好第二十七页,共五十六页,2022年,8月28日软件工程基础

随着计算机硬件技术的进步,要求软件能与之相适应。然后软件技术的进步一直未能满足形式发展提出的要求,致使问题积累起来,形成了日益尖锐的矛盾,这就导致了软件危机。为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件工程是使计算机软件走向科学的途径,逐渐形成了软件工程的概念,并开辟了工程学的新兴领域---软件工程学。倡导以工程化的原则和方法组织软件开发工作,是摆脱软件危机的一个主要出路。软件开发工具与软件开发环境软件工程的目标和原则软件工程过程与软件生命周期软件危机与软件工程软件定义与软件特点需求分析可行性分析问题定义软件设计软件编码软件测试软件维护软件工程基本概念软件工程过程软件开发方法开发技术软件危机结构化开发方法面向对象开发方法第二十八页,共五十六页,2022年,8月28日基本概念第二十九页,共五十六页,2022年,8月28日软件定义和组成是计算机系统中与硬件相互依赖的一部分,包括程序、数据和相关的文档。程序计算机执行的指令序列。数据是使程序能正常操作信息的数据结构。文档是与程序的开发、维护和使用有关的图文资料软件是程序、数据和文档的集合第三十页,共五十六页,2022年,8月28日软件危机与软件工程软件危机软件工程源自软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题,包括成本、质量、生产率等问题。软件需求的增长得不到满足软件开发成本和进度无法控制软件质量难以保证软件不可维护或维护程度非常低软件成本不断提高软件开发生产效率的提高赶不上硬件的发展和应用需求的增长第三十一页,共五十六页,2022年,8月28日指导计算机软件开发和维护的工程学科。包括一下三要素:软件工程方法

为软件开发提供“如何做”技术。工具

指支持软件开发、管理、文档生成的自动半自动软件支撑环境。过程

指软件开发各个环节的控制和管理。

软件工程的核心思想是将工程化原则运用到软件开发过程中,即将软件产品作为一个工程产品处理。它包括方法、工具和过程三要素。第三十二页,共五十六页,2022年,8月28日软件工程过程与软件生命周期软件工程过程

是为获得软件产品,在软件工具支持下由软件工程师完成的一系列工程活动。通常包括4种基本过程活动P(Plan)

软件规格说明。规定软件的功能以及运行时的限制。D(Do)

软件开发。产生满足软件规格说明的软件。C(Check)软件确认。确认软件能够满足用户提出的要求。A(Action)

软件演进。为满足用户的变更要求,软件必须在使用的过程中演进。第三十三页,共五十六页,2022年,8月28日将软件产品从提出、实现、使用、维护、停止使用到退役的过程,称为软件生命周期。软件生命周期问题定义可行性分析需求分析软件设计软件测试软件实现运行和维护软件定义软件开发软件运行维护第三十四页,共五十六页,2022年,8月28日软件开发工具与软件开发环境

软件开发工具

协助开发人员进行软件开发活动所使用的软件或环境。它包括需求分析工具、设计工具、编码工具、排错工具和测试工具等。

软件开发环境

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

第三十五页,共五十六页,2022年,8月28日软件工程过程第三十六页,共五十六页,2022年,8月28日问题定义

该阶段是弄清楚用户需要计算机解决什么问题,以及项目所需的资源和经费。主要任务就是调研和分析,写出“系统目标与范围说明书”。

确定开发目标和总的要求,给出可行性方案,制定开发计划。第三十七页,共五十六页,2022年,8月28日可行性分析

该阶段的目的是弄清楚:用户要解决的问题是否能够解决和值得解决。第三十八页,共五十六页,2022年,8月28日需求分析需求分析的任务

导出目标系统的逻辑模型,解决“做什么”的问题。需求分析方法

结构化分析方法(采用的常用工具)面向对象的分析方法根据用户的需求进行分析并给出详细定义,即确定软件系统的功能。第三十九页,共五十六页,2022年,8月28日结构化分析方法

是在软件需求分析阶段的运用,是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。第四十页,共五十六页,2022年,8月28日结构化分析的常用工具数据流图(DFD)是以图形的方式描绘数据在系统中流动和处理的过程,它反映了系统必须完成的逻辑功能,是结构化分析方法中用于表示系统逻辑模型的一种工具。数据字典(DD)是结构化分析方法的核心,其作用是对数据流图中被命名的图形元素进行确切的解释。判定树判定表第四十一页,共五十六页,2022年,8月28日数据流图

是以图形的方式描绘数据在系统中流动和处理的过程,它反映了系统必须完成的逻辑功能,是结构化分析方法中用于表示系统逻辑模型的一种工具。

办理取款手续的数据流图加工数据流存储文件源、潭加工:描述输入流到输出流之间的变换数据流:表示数据的流向存储文件:表示暂时存储的数据源、潭:也称外部实体,指出系统所需数据的发源地和系统所产生数据的归宿地。第四十二页,共五十六页,2022年,8月28日软件设计把已确定的各项需求转换成一个相应的体系结构。进而对每个模块要完成的工作进行具体的描述。编写设计说明书并提交评审。

主要解决“怎么做”的问题。第四十三页,共五十六页,2022年,8月28日总体设计(概要设计)

将软件需求转化为数据结构和软件的系统结构。

详细设计

软件的过程设计,通过对结构表示进行细化,得到软件的详细数据结构和算法。软件设计步骤第四十四页,共五十六页,2022年,8月28日抽象

抽出事物本质的共同特点而不考虑它的细节模块化

模块是一个具有明确定义的输入、输出和特性的程序实体。每个模块完成一个特定的子功能,所有的模块按某种方式组合起来成为一个整体,完成整个系统所要求的功能。软件设计的原理第四十五页,共五十六页,2022年,8月28日信息隐蔽

每个模块实现的细节对于其它模块来说是隐蔽的,即模块中所包含的信息(数据结构和过程)不允许其他不需要这些信息的模块使用。模块独立性

每个模块只具体的子功能,和其他模块的接口是简单的。衡量指标:耦合性和内聚性。一个设计良好的软件系统应具有低耦合、高内聚的特征学生成绩管理增加删除修改查询统计按学号按姓名按班级第四十六页,共五十六页,2022年,8月28日

是软件设计的第2个阶段,主要确定每个模块具体的执行过程。详细设计该阶段的任务是:确定实现算法和局部数据结构,不同于编码或编程实现详细设计常用的表达工具图形工具程序流程图、N-S图、PAD、HIPO表格工具判定表语言工具PDL(伪码)

第四十七页,共五十六页,2022年,8月28日软件编码

把软件设计转换成计算机可以接受的程序代码。第四十八页,共五十六页,2022年,8月2

温馨提示

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

评论

0/150

提交评论