二级公共基础(二)

一、程序设计基础
1、程序设计风格主要强调:“清晰第一,效率第二”。

2、主要考虑的因素:
●源程序文档化
1、符号名的命名
2、程序的注释:分为序言性注释和功能性注释
3、视觉组织
●数据说明的方法
次序应规范化、变量安排有序化、使用注释
●语句的结构

3、程序设计主要经过了结构化程序设计(面向过程的程序设计)和面向对象的程序设计。

3.1结构化程序设计的原则:
●自顶向上:先考虑整体,再考虑细节;先考虑全局目标,再考虑局部目标;
●逐步求精:对复杂问题应设计一些子目标作为过渡,逐步细化;
●模块化:把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。
限制使用goto语句。

3.2结构化程序的基本结构有三种类型:顺序结构、选择结构和循环结构。
① 顺序结构:是最基本、最普通的结构形式,按照程序中的语句行的先后顺序逐条执行;
② 选择结构:又称为分支结构,它包括简单选择和多分支选择结构;
③ 循环结构:根据给定的条件,判断是否要重复执行某一相同的或类似的程序段。循环结构对应两类循环语句:先判断后执行的循环体称为当型循环结构;先执行循环体后判断的称为直到型循环结构。

3.3 面向对象的程序设计:以60年代末挪威奥斯陆大学和挪威计算机中心研制的SIMULA语言为标志。

面向对象方法的优点:
●与人类习惯的思维方法-致;
●稳定性好;
●可重用性好;
●易于开发大型软件产品;
●可维护性好。

3.4对象是面向对象方法中最基本的概念,对象是实体的抽象。它是构成系统的一个基本单位,由一组表示其静态特征的属性和它可执行的一-组操作组成。

属性即对象所包含的信息,操作描述了对象执行的功能,操作也称为方法或服务。

对象的基本特点:
●标识惟一性;
●分类性;
●多态性;
●封装性;
●模块独立性好。

3.5类是指具有共同属性、共同方法的对象的集合。所以类是对象的抽象,对象是对应类的一个实例。
消息是一个实例与另一个实例之间传递的信息。
消息的组成包括:
●接收消息的对象的名称;
●消息标识符,也称消息名;
●零个或多个参数。

3.6继承是指能够直接获得已有的性质和特征,而不必重复定义他们。
●单继承;
●重继承。
多态性是指同样的消息被不同的对象接受时可导致完全不同的行动的现象。

二、软件工程基础
1、软件定义与软件特点
软件指的是计算机系统中与硬件相互依存的另一部分,包括程序、数据和相关文档的完整集合。

程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令序列。

数据是使程序能正常操纵信息的数据结构。文档是与程序的开发、维护和使用有关的图文资料。

可见,软件由两部分组成:
●机器可执行的程序和数据;
●机器不可执行的,与软件开发、运行、维护、使用等有关的文档。
根据应用目标的不同,软件可分应用软件、系统软件和支撑软件(或工具软件)

2、软件工程源自软件危机。
软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机主要表现在成本、质量和生产率等问题。

2.1软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
软件工程强调在软件开发过程中需要应用工程化原则。

软件工程包括3个要素:方法、工具和过程。
方法是完成软件工程项目的技术手段
工具支持软件的开发、管理、文档生成
过程支持软件开发的各个环节的控制、管理

2.2软件过程与软件生命周期
软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。

软件生命周期分为3个时期共8个阶段,
●软件定义期:包括问题定义、可行性研究和需求分析3个阶段;
●软件开发期:包括概要设计、详细设计、实现和测试4个阶段;
●运行维护期:即运行维护阶段。

2.3软件工程的目标与原则
**目标:**在给定成本、进度的前提下,开发出具有时效性、可靠性、可理解性、可维护性、可重要性、可 适应性、可移植性、可追踪性和可互相操作性且满足用户需求的产品。
基本目标:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发软件易于移植;需要较低的费用;能按时完成开发,及时交付使用。
软件工程
原则
包括:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性、可验证性。

2.4需求分析与需求方法
软件需求是指用户对目标软件系统在功能,行为,性能,设计约束等方面的期待。
需求分析的任务:发现需求,求精,建模和定义需求的过程。
需求分析的工作:需求获取,需求分析,编写需求规格说明书,需求评审。

需求分析常见方法;
结构化分析法,面向对象的分析方法
从需求分析建立的模型的特性分,需求分析方法又分为静态分析方法和动态分析方法。

2.5结构化分析方法
结构化分析方法的核心和基础是结构化程序设计理念。
结构化分析方法的实质是着眼于数据流、自顶向下、对系统的功能进行逐层分解、以数据流图和数据字典为主要工具,建立系统的逻辑模型。

2.51结构化分析方法常用工具
(1)数据流图(DFD)
数据流图是系统逻辑模型的图形表示,即使不是专业的计算机技术人员也容易理解它,因此它是分析员与用户之间极好的通信工具。
(2)数据字典(DD)
数据字典是对数据流图中所有元素的定义的集合,是结构化分析的核心。
数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,若没有数据流图,数据字典也难于发挥作用。
数据字典中有4种类型的条目:数据流、数据项、数据存储和加工。
(3)判定表
有些加工的逻辑用语言形式不容易表达清楚,而用表的形式则一目了然。如果一个加工逻辑有多个条件、多个操作,并且在不同的条件组合下执行不同的操作,那么可以使用判定表来描述。
(4)判定树
判定树和判定表没有本质的区别,可以用判定表表示的加工逻辑都能用判定树表示。

2.52 软件需求规格说明书
软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。
它的特点是具有正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性。
作用:
(1)便于用户,开发人员进行理解和交流。
(2)反映出用户问题的结构,可以作为软件开发工作的基础和依据
(3)作为确认测试和验收的依据
(4)为成本估算和编制计划进度提供基础
(5)软件不断改变的基础

2.6结构化设计方法
软件设计是确定系统的物理模型
2.61从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。
① 结构设计定义软件系统各主要部件之间的关系;
② 数据设计将分析时创建的模型转化为数据结构的定义;
③ 接口设计是描述软件内部、软件和协作系统之间以及软件与人之间如何通信;
④ 过程设计则是把系统结构部件转换为软件的过程性描述。

2.62从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。
① 概要设计将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;
② 详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。

2.63软件设计基本原理
抽象,模块化,信息隐蔽,模块独立化
衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。内聚性是信息隐蔽和局部化概念的自然扩展。一个模块的内聚性越强则该模块的模块独立性越强。

2.64概要设计(总体设计)的基本任务:
设计软件系统结构;
数据结构与数据库结构设计;
编写概要设计文档;
概要设计文档评审。

2.7程序的测试和调试
2.71软件测试的目的是为了发现程序中的错误而执行程序的过程;

2.72软件测试具有多种方法,依据软件是否需要被执行,可以分为静态测试和动态测试方法。
(1)静态测试包括代码检查、静态结构分析、代码质量度量等。其中代码检查分为代码审查、代码走查、桌面检查、静态分析等具体形式;
(2)动态测试。静态测试不实际运行软件,主要通过人工进行分析。动态测试就是通常所说的上机测试,是通过运行软件来检验软件中的动态行为和运行结果的正确性。

2.73依照功能划分,可以分为白盒测试和黑盒测试方法。
(1)白盒测试。白盒测试是把程序看成装在一只透明的白盒子里,测试者完全了解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作;
(2)黑盒测试。黑盒测试是把程序看成一只黑盒子,测试者完全不了解,或不考虑程序的结构和处理过程。它根据规格说明书的功能来设计测试用例,检查程序的功能是否符合规格说明的要求。

2.74软件测试过程分4个步骤,即单元测试、集成测试、验收测试和系统测试。

2.75程序的调试任务是诊断和改正程序中的错误。调试主要在开发阶段进行。

程序调试的基本步骤:
① 错误定位。从错误的外部表现形式入手,研究有关部分的程序,确定程序中出错位置,找出错误的内在原因;
② 修改设计和代码,以排除错误;
③ 进行回归测试,防止引进新的错误。

软件调试可分为静态调试和动态调试。静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的设计手段,而动态调试是辅助静态调试的。
主要的调试方法有:强行排错法、回溯法和原因排除法3种。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值