版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章程序设计和软件工程5.1程序设计语言5.2程序设计方法5.3软件工程
5.1程序设计语言5.1.1程序的概念5.1.2程序设计语言的分类5.1.3程序设计语言的选择
5.1程序设计语言5.1.1程序的概念
简单地说,程序就是解决实际问题的操作步骤,它是一个有限的操作序列。例如,求a、b、c、d四个数的最大值,可以使用以下的步骤来完成这一任务:输入a、b、c、d的值;比较a、b的大小,把较大值放入max;比较max与c的大小,把较大值重新放入max;比较max与d的大小,把较大值重新放入max;输出max的值。显然,如果程序是由人来执行的,程序只要用自然语言来描述就行了,如果是由计算机来执行的,则必须用计算机能够接受和识别的计算机语言来描述。本章所说的程序就是用某种计算机语言描述的、可以用计算机能完成的操作指令序列。
5.1程序设计语言5.1.2程序设计语言的分类
根据程序设计语言发展的历程,可将其大致分成四类:1.机器语言机器语言是用二进制代码表示的、能被计算机直接识别和执行的机器指令的集合,也就是处理器的指令系统。机器语言的优点在于它能被计算机直接识别,运行速度快。2.汇编语言汇编语言是一种用助记符表示的仍然面向机器的计算机语言。汇编语言亦称符号语言。3.高级语言这种与自然语言接近并能被计算机所接受和执行的语言称为高级语言。高级语言根据其发展历程和应用领域,可分为以下几类:(1)传统的高级程序设计语言。(2)通用的结构化程序设计语言。(3)
专用语言。4.4GL语言4GL即第四代语言(Fourth-GenerationLanguage)。4GL是按计算机科学理论指导设计出来的结构化语言。4GL具有简单易学、用户界面良好、非过程化程度高、面向问题等特点,按照4GL的功能可以将它们划分为:查询语言和报表生成器、图形语言、应用生成器和形式规格说明语言。
5.1程序设计语言5.1.3程序设计语言的选择
不同语言有不同的优势,在进行程序设计时,选择程序设计语言非常重要,若选择了合适的语言,就能减少编码的工作量,产生易读、易测试、易维护的代码,提高程序开发的效率。通常从以下因素来衡量某种程序设计语言是否适合特定的项目:
应用领域;
算法和计算复杂度;
软件运行环境;用户需求中关于性能方面的要求;
数据结构的复杂性;软件开发人员的知识水平和心理因素等。5.2程序设计方法5.2.1程序设计的基本过程5.2.2结构化程序设计方法5.2.3面向对象程序设计方法
5.2程序设计方法5.2.1程序设计的基本过程
程序设计就是针对具体问题,使用某种程序设计语言编写程序代码来驱动计算机完成特定功能的过程。程序设计的基本过程如图:其基本步骤如下:分析问题。确定要解决的问题,对要解决的问题进行调查分析,明确要实现的功能。确定解决方案。通过对问题的分析,找出其运算和变化规律,确定解决方案,建立数学模型。当一个问题有多个解决方案时,选择适合计算机解决问题的最佳方案。设计算法。依据问题的解决方案确定数据结构和算法,并用适当的工具描述算法。编写程序。依据算法描述,选择一种合适的计算机语言编写程序。调试和运行程序。通过反复调试和运行程序,找出程序中存在的错误,直到程序的运行效果达到预期目标。整理文档。对解决问题的整个过程的相关资料进行整理,编写程序使用说明书,生成规范的程序文档。5.2程序设计方法5.2.2结构化程序设计方法
结构化程序设计的设计思想主要有三个方面:1.“自顶向下,逐步细化,模块化”的设计过程具体包括以下两个方面:(1)将一个大问题分解为若干子问题(模块)组成的层次结构。(2)将模块细化成更小、更简单的模块,直至能容易给出模块的一系列处理步骤,并能由程序设计语言的语句来实现。2.把程序结构限制为三种基本结构(1)顺序结构:最基本、最普通的程序结构,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。如图5.3所示,先执行A再执行B。5.2程序设计方法5.2.2结构化程序设计方法
(2)选择结构:又称“分支结构”,如图5.4所示,其特点是先进行一定的条件判断,根据判断的结果从两组操作中选择一组来执行。
(3)循环结构:其特点是在一定的条件下重复执行一组操作。5.2程序设计方法5.2.2结构化程序设计方法
3.限制goto语句的滥用因为goto语句是无条件转移语句,使用goto语句会破坏程序的结构,降低程序的可读性,因此不提倡使用goto语句。#include<stdio.h>int
n=0;int
main(void)
{
printf("input
a
string:
");
loop:
if
(getchar()!='\n')
{
n++;
goto
loop;
}
printf("output:
%d\n",n);}5.2程序设计方法5.2.3面向对象程序设计方法
1.面向对象的基本概念类和对象是面向对象程序设计的基本概念,继承性、封装性和多态性是面向对象程序的基本特征。2.面向对象程序设计的思想面向对象程序设计的思想主要体现在以下几方面:(1)从现实世界中客观存在的事物(对象)出发,尽可能运用人类自然的思维方式去构造软件系统(2)将事物的本质特征抽象后表示为软件系统中的类和对象,以此作为构造软件系统的单位
(3)使软件系统能直接映射问题,并保持问题中事物及其相互关系的本质。3.面向对象程序设计的步骤面向对象程序设计的过程包括以下步骤:(1)面向对象分析(ObjectOrientedAnalysis,OOA)(2)面向对象设计(ObjectOrientedDesign,OOD)(3)面向对象编程(ObjectOrientedProgramming,OOP)(4)面向对象测试(ObjectOrientedTest,OOT)(5)面向对象维护(ObjectOrientedSoftwareMaintenance,OOSM)
5.3软件工程5.3.1软件危机5.3.2软件工程5.3.3软件生命周期5.3.4软件工程方法学5.3.5软件测试
5.3软件工程5.3.1软件危机
1.软件危机的主要表现软件开发进度难以预测。(2)软件开发成本难以控制,投资一再追加,令人难于置信。(3)
用户对产品功能难以满足,开发人员和用户之间很难沟通、矛盾很难统一。(4)
软件产品质量无法保证,系统中的错误难以消除。(5)
软件产品难以维护。(6)
软件缺少适当的文档资料。2.软件危机的主要原因用户需求不明确。(2)
缺乏正确的理论指导,缺乏有力的方法学和工具方面的支持。(3)
软件开发规模越来越大。(4)
软件开发复杂度越来越高。
5.3软件工程5.3.2软件工程
1.软件工程的定义
一是IEEE有1993年给出的定义:软件工程是将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中的方法的研究。二是《计算机科学技术百科全书》对软件工程的定义:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。2.软件工程的特殊性
软件的特性与其他工程领域特性之间存在着本质上的不同。这些差别己经影响了软件工程项目,导致其花费的增加、推迟交付软件产品和软件产品不能满足用户的需求等后果。这些差别主要体现在:(1)处理通过常用的预先定制的构件来构建系统的能力(2)缺少度量技术
5.3软件工程5.3.3软件生命周期
2.传统的开发阶段
软件作为一种工业化产品,也有其生命周期。软件生命周期包括从提出软件产品开始,直到该软件产品被淘汰的全过程。1.周期是个整体软件生命周期的传统的开发阶段的主要步骤是需求分析、设计、实现和测试
图5.7表示的是软件的生命周期,即软件一旦开发完成,它就进入了一个既被使用又被维护的循环,这个循环将永不停止,直至软件生命周期结束。
5.3软件工程5.3.4软件工程方法学
瀑布模型是最经典的并获得最广泛应用的软件过程模型。
5.3软件工程5.3.5软件测试
软件测试是保证软件质量的重要手段,其主要过程涵盖了软件生命周期的全过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试,以及后期的确认测试、系统测试,验证软件是否合格、能否交付用户使用等。1.软件测试的原则(1)尽早不断测试的原则。(2)IPO原则(InProcessOut)。(3)独立测试原则。(4)合法和非合法原则。(5)错误群集原则。(6)严格性原则。(7)覆盖原则。(8)定义功能测试原则。(9)回归测试原则。(10)错误不可避免原则。
5.3软件工程5.3.5软件测试
2.软件测试方法软件测试方法的分类有很多种,可以按不同的标准对其进行分类。
以测试过程中程序执行状态为依据可分为静态测试(StaticTesting,ST)和动态测试(DynamicTesting,DT)。静态测试的含义是被测程序不运行,只依靠分析或检查源程序的语句、结构、过程等来检查程序是否有错误。动态测试与静态测试相对应,是通过运行被测试程序,对得到的运行结果与预期的结果进行比较分析,同时分析运行效率和健壮性能等。
以具体实现算法细节和系统内部结构的相关情况为根据可分黑盒测试、白盒测试和灰盒测试。黑盒测试被测程序看成是一个无法打开的黑盒,而工作人员在不考虑任何程序内部结构和特性的条件下,根据需求规格说明书设计测试实例,并检查程序的功能是否能够按照规范说明准确无误的运行。其主要是对软件界面和软件功能进行测试。白盒测试从程序结构方面出发对测试用例进行设计,主要是借助程序内部的逻辑和相关信息,通过检测内部动作是否按照设计规格说明书的设定进行,检查每一条通路能否正常工作,主要用于检查各个逻辑结构是否合理,对应的模块独立路径是否正常以及内部结构是否有效。灰盒测试则介于黑盒测试和白盒测试之间。
5.3软件工程5.3.5软件测试
3.软件测试的实施软件测试过程分4个阶段,即单元测试、集成测试、系统测试和确认测试。单元测试主要是对该软件的模块进行测试,通过测试以发现该模块的实际功能出现不符合的情况和编码错误。集成测试是软件测试的第二阶段,在这个阶段,通常要对已经严格按照程序设计要求和标准组装起来的模块同时进行测试。系统测试采用黑盒法来进行测试的,以此来检查该系统是否符合软件需求。本阶段的主要测试内容包括健壮性测试、性能测试、功能测试、安装或反安装测试、用户界面测试、压力测试、可靠性及安全性测试等。验收测试是最后一个阶段的测试操作,是在软件产品投入正式运行前所要进行的测试工作。验收测试的主要目标是为向用户展示所开发出来的软件符合预定的要求和有关标准,并验证软件实际工作的有效性和可靠性,确保用户能用该软件顺利完成既定的任务和功能。
5.4设计模式
设计模式(DesignPattern)是一套被反
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度高速充电网络建设与维护管理合同3篇
- 二零二五版新能源汽车打胶系统合作协议3篇
- 二零二四外墙真石漆涂装劳务合同模板规范版9篇
- 2025年度厂房物业管理与资产管理合同3篇
- 2025年度新能源汽车关键零部件RoHS环保协议书3篇
- 二零二四女方提出离婚协议包含债权债务清算及资产评估合同3篇
- 2025年度差旅服务定制化解决方案合同4篇
- 专用硅酸盐水泥购销合同2024版版
- 二零二五年度道路安全标志牌维护与管理合同3篇
- 2025年度咖啡厅店铺转让及饮品制作服务合同3篇
- DB43-T 2897-2023 竹纤维复合波纹管材技术规范
- 人情往来(礼金)账目表
- 二年级语文下册背诵内容(全部)
- 绘本《图书馆狮子》原文
- 给水管道施工与安装技术要求(课件)
- 警辅 培训 课件
- 安全使用公共WiFi网络的方法
- 法拍辅助工作管理制度
- 中控室保密与信息安全政策
- 后端开发年终总结
- 2023年管理学原理考试题库附答案
评论
0/150
提交评论