
软件工程基本概念
考点一:软件定义与软件特点
【一】软件定义:软件指的是计算机系统中与硬件相互依存的另一部分,包括程序、数据和相关文档的完整集,机器可执行的程序和数据,机器不可执行的,与软件开发、运行、维护、使用等有关的文档。
【二】软件的特点
(1)软件是一种逻辑实体,而不是物理实体,具有抽象性。
(2)软件的生产与硬件不同,它没有明显的制作过程。
(3)软件在运行使用期间不存在磨损、老化问题。
(4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题。
(5)软件复杂性高,成本昂贵。
(6)软件开发涉及诸多的 会因素。
1、程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令序列。
2、数据是使程序能正常操纵信息的数据结构。
3、文档是与程序的开发、维护和使用有关的图文资料。
考点二:软件的分类
根据应用目标的不同,软件可分应用软件、系统软件和支撑软件(或工具软件)。
考点二:软件工程定义
软件工程是:
(1)将系统化的、规范化、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。
(2)软件工程是对(1)中所述方法的研究。
软件工程的三要素:方法、工具、过程。 |
软件测试
【一】软件测试的目的:软件测试的目的是尽可能多的发现程序中的错误,但是不包括改正错误。(软件调试的目的才是改正错误)。
【二】软件测试分类:
(1) 静态测试:指不执行程序,只对程序文本进行检查。
(2) 动态测试:
1、黑盒测试:方法有等价类划分法,边界值分析法,错误推测法,因果图。(黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明)
2、白盒测试:测试者完全了解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作;主要方法有逻辑覆盖、基本路径测试。(将程序看做是路径的集合。)
【三】软件测试步骤
软件测试主要包括单元测试、集成测试、确认测试和系统测试。
(1)单元测试:对最小单位(模块)进行正确性检验测试
(2)集成测试:
(3) 验收测试:
任务是验证软件的功能和性能,以及其他特性是否满足了需求规格说明中确定的各种需求,包括软件配置是否完全、正确。确认测试的实施首先运用黑盒测试方法,对软件进行有效性测试,即验证被测软件是否满足需求规格说明确认的标准。
(4)系统测试:
集成测试应该在单元测试之后进行。
在模块测试中,需要为每个被测试的模块设计驱动模块和承接模块。其中,驱动模块的作用是将测试的数据传给被测试的模块,并显示结果。
软件生命周期
软件生命周期概念:软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
(1) 定义阶段:包括问题定义、可行性研究和需求分析。 (2) 开发阶段:编码和测试,包括概要设计、详细设计、实现和测试。 (3) 维护阶段:运行维护。 |
主要活动阶段是:可行性研究与计划阶段,需求分析,软件设计,软件实现,软件测试,运行和维护。(各个阶段的活动可以有重复,执行时也可以有迭代)
结构化设计方法
考点一:软件设计基础概念
【一】概念
(1)技术方面分类
软件设计包括软件结构设计、数据设计、接口设计、过程设计。
1)结构设计定义软件系统各主要部件之间的关系
2)数据设计将分析时创建的模型转化为数据结构的定义
3)接口设计是描述软件内部、软件和协作系统之间以及软件与人之间如何通信;
4)过程设计则是把系统结构部件转换为软件的过程性描述。
(2)工程管理方面分类
软件设计一般分为概要设计、详细设计。 |
1)概要设计将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;
2)详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。
考点二:软件设计基本原理
软件设计中应该遵循的基本原理和与软件设计有关的概念:
(1) 抽象:软件设计中考虑模块化时,可定多个抽象级别。抽象的层次从概要设计到详细设计逐步降低。
(2) 模块化:自顶向下逐层把软件系统划分成若干模块的过程。
(3) 信息屏蔽:同一模块内不需要的信息不访问。
(4) 模块独立:高内聚低耦合 |
内聚性是度量一个模块功能强度的一个相对指标。内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类,它们之间的内聚度由弱到强排列:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚
耦合性是模块之间互相连接的紧密程度的度量。耦合性取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。耦合可以分为下列几种,它们之间的耦合度由高到低排列:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。
在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性
考点三:详细设计
(1)常用工具:
(2)表格工具:判定表。
(3)语言工具:PDL(伪码)
程序流程图的5种控制结构:顺序型、选择型、先判断重复型、后判断重复型和多分支选择型
方框图中仅含5种基本的控制结度叉摩序型、选择型、多分支选择型、 WHILE重复型和
NTIL重复型
PAD图表示5种基本控制结构,即顺序型、选择型、多分支选择型、 WHILE重复型和 UNTIL重复型。
过程设计语言(PDL)也称为结构化的语言和伪码,它是一种混合语言,采用英语的词汇和结构化程序设计语言,类似编程语言
PDL可以由编程语言转换得到,也可以是专门为过程描述而设计的。
考点四:结构化分析方法
概念:
(1)结构化分析方法就是使用数据流图(DFD)、数据字典( DD)、结构化英语、判定表和判定树的工具,来建立一种新的、称为结构化规格说明的目标文档。
(2)结构化分析方法的实质是着眼于数据流、自顶向下、对系统的功能进行逐层分解、以数据流图和数据字典为主要工具,建立系统的逻辑模型。
分析常用工具:
(1) 数据流图(DFD):数据流图是系统逻辑模型的图形表示,即使不是专业的计算机技术人员也容易理解它,因此它是分析员与用户之间极好的通信工具。
(2) 数据字典(DD):
(3)判定表:如果一个加工逻辑有多个条件、多个操作,并且在不同的条件组合下执行不同的操作,那么可以使用判定表来描述(优点容易理解)。
(4)判定树:判定树和判定表没有本质的区别,可以用判定表表示的加工逻辑都能用判定树表示。
软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。它的特点是具有正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和追踪性。
常见的过程设计工具有:图形工具(程序流程图、N-S,PAD,HIPO)、表格工具(判定表)、语言工具(PDL伪码)。
(1) N-S图提出了用方框图来代替传统的程序流程图。
(2) PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具。
(3) E-R图是数据库中的用于表示E-R模型的图示工具。
(4) 程序流程图中带有箭头的线段表示的是【控制流】。【平行四边形】代表输入输出,【矩形】代表处理,菱形代表【判断】(注意,数据流图中的箭头,代表【数据流】)。
程序的调试
考点一:诊断和改正
(1)程序中的错误称为程序调试(或软件调试),通常也称为Debug。软件调试可分为静态调试和动态调试。
(2)程序调试活动由两部分组成,一是根据错误的迹象确定程序中错误的确切性质、原因和位置;二是对程序进行修改,排除这个错误。
考点二:程序调试的基本步骤:
(1)错误定位
(2)修改设计和代码
(3)进行回归测试
软件调试可分为静态调试和动态调试。静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的设计手段,而动态调试是辅助静态调试的。
主要的调试方法有:强行排错法、回溯法和原因排除法 3 种。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!