软件工程基础知识点整理免费版

软件工程基础知识点整理

一. 软件工程基本概念:

1. 软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。

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

(2)数据是使程序能够正常操作信息的数据结构。

(3)文档是与程序开发、维护和使用有关的图文资料。

注:国标(GB )计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。

2.软件特点:

(1)软件是一种逻辑实体,而不是物理实体,具有抽象性, 是计算机的无形部分;

(2)软件的生产与硬件不同,它没有明显的制作过程;

(3)软件在运行、使用期间不存在磨损、老化问题;

(4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;

(5)软件复杂性高,成本昂贵;

(6)软件开发涉及诸多的社会因素

3. 软件分类:

按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

(1)应用软件是为解决特定领域的应用而开发的软件。如:教务管理系统、财务管理系统等。

(2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如:操作系统、数据库管理系统等。

(3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。比如:编码工具软件、测试工具软件。

4. 软件危机:

软件危机是指在软件的开发和维护过程中所遇到的一系列严重问题。

软件危机主要体现在以下几个方面:

① 软件开发的实际成本和进度估计不准确

② 开发出来的软件常常不能使用户满意

③ 软件产品的质量不高,存在漏洞,需要经常打补丁

④ 大量已有的软件难以维护

⑤ 软件缺少有关的文档资料

⑥ 开发和维护成本不断提高,直接威胁计算机应用的扩大

⑦ 软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长

5. 软件工程的定义和目的:

(1)定义:软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。

(2)目的:研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等) 。

(3)软件工程的三个要素:方法、工具和过程。

方法:完成软件工程项目的技术手段;

工具:支持软件的开发、管理、文档生成;

过程:支持软件开发的各个环节的控制、管理。

(4)核心思想:把软件产品看作是一个工程产品来处理。

二. 软件工程概述:

1. 软件生命周期:

(1)定义:将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。

(2)软件生命周期一般划分为定义、开发和维护3个阶段:

定义阶段:可行性研究、需求分析2个阶段;

开发阶段:概要设计、详细设计、编码实现和测试4个阶段;

维护阶段:使用、维护、退役阶段。

详解:a. 软件定义阶段:包括制定计划和需求分析。

制定计划:确定总目标;可行性研究;探讨解决方案;制定开发计划。

需求分析:对待开发软件提出的需求进行分析并给出详细的定义。

需求分析方法有:1)结构化需求分析方法;2)面向对象的分析方法。

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

需求分析一般分为需求获取、需求分析、编写需求规格说明书和需求评审四个步骤进行。 b. 软件开发阶段:

软件设计:分为概要设计和详细设计两个部分。

软件实现:把软件设计转换成计算机可以接受的程序代码。

软件测试:在设计测试用例的基础上检验软件的各个组成部分。

c. 软件运行维护阶段:软件投入运行,并在使用中不断地维护,进行必要的扩充和删改。 注:软件生命周期中所花费最多的阶段是软件运行维护阶段。

2. 软件工程原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。

3. 软件工具与软件开发环境:

(1)软件工具就是帮助开发软件的软件。它们对提高软件生产率,促进软件生产的自动化都有重要的作用。

(2)软件开发环境(或称软件工程环境) 是全面支持软件开发全过程的软件工具的集合,这些软件工具按照一定的方法和模式组合起来,共同支持软件生命周期内的各个阶段和各项任务的完成。

三. 软件设计基本概念:

软件工程过程—软件设计

目的:确定软件的总体结构、数据结构、用户界面和算法细节

任务:将需求阶段产生的软件需求说明转换为用适当手段表示的软件设计文档

软件设计分为总体设计和详细设计

四.软件设计的基本原理:

1.总体设计

目的:要解决的问题是“怎样实现目标系统”

任务:确定软件的总体结构,进行模块划分,确定每个模块的功能、接口及模块之间的调用关系,并对全局数据结构进行设计,同时产生概要设计说明书

2.详细设计

目的:要解决的问题是“应该怎样具体实现目标系统”

任务:在概要设计的基础上,设计每个模块实现的细节及对局部数据进行设计(包括模块的数据结构和所需的算法) ,同时产生详细设计说明书

3.软件编码

目的:产生能在计算机上执行的程序

任务:根据系统的要求和开发环境,选用合适的程序设计语言,把详细设计的结果翻译成用该程序设计语言编写的程序代码(源程序)

4.软件测试

软件测试是为了发现程序中的错误而执行程序的过程

目的和任务:通过在计算机上执行程序来尽可能多地发现软件产品中的错误和缺陷,并改正程序中的错误,以保证程序的可靠运行。

5.软件维护

软件维护阶段是长期的过程,因为,经过测试的软件还可能有错,用户的要求还会发生变化,软件运行的环境也可能变化等等。因此,交付使用的软件仍然需要继续排错、修改和扩充,这就是软件维护。

注:(1)软件维护的目的是满足用户对已开发产品的性能与运行环境不断提高的需要,进而达到延长软件的寿命 。

软件维护就是在软件交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

(2)软件维护的类型有如下几种:

1)改正性维护:诊断和改进错误的过程(。

2)适应性维护:为与变化的环境适当地配合而进行的修改软件的活动。

3)完善性维护:为了满足用户提出的增加新功能或修改已有功能的建议而进行维护。

4)预防性维护:为了改进未来的可维护性和可靠性。

软件开发时期要完成设计和实现两大任务,其中设计任务用需求分析和软件设计两个阶段完成,实现任务用编码和测试两个阶段完成。

开发任务完成的好与坏,关系到软件产品的质量,完成开发任务的关键是选择好的软件开发方法。 目前,软件开发方法主要有结构化开发方法和面向对象开发方法。

五.结构化分析方法

1.结构化分析(简称SA) 方法是面向数据流进行需求分析的方法。

该方法使用简单易读的符号,运用抽象的概念模型,根据软件内部数据传递、变换的关系,自顶向下逐层分解,描绘出满足功能要求的软件模型

2.结构化分析方法的常用工具:数据流图、数据字典、结构化语言、判定树、判定表

3.SA 的基本步骤如下:

① 自顶向下对系统进行功能分解,画出分层的数据流图

② 由后向前定义系统的数据和加工,编制数据字典和加工说明

③ 写出需求规格说明书(SRS)

4.数据流图

(1)数据流图是以图形的方式描绘数据在软件系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。

(2)数据流图由数据流、加工(又称数据处理) 、数据存储(又称文件) 、数据源点或终点四种基本成分组成。

(3)数据流图(简称DFD) 图形元素:

① 数据流:是数据在系统内传播的路径。使用箭头代表数据的流向,数据名称标在箭头的边上 ② 加工:输入数据经过加工变换产生输出。使用圆框代表加工

③ 数据存储:指处理过程中存放各种数据。使用双杠(或单杠) 表示数据文件或数据库。文件与加工之间用箭头线连接,单向表示只读或只写,双向表示可读可写

④ 数据源点或终点:指软件系统外部环境中的实体(包括人员、组织或其他软件系统,统称为外部实体) 。使用方框表示数据的源点和终点

(4)建立数据流图的步骤

第一步:由外向里:先画系统的输入输出,然后画系统的内部。

第二步:自顶向下:顺序完成顶层、中间层、底层数据流图。

第三步:逐层分解。

5.DFD 图的数据流可分为两种类型:变换流和事务流

(1)变换流:信息沿着输入通路进入系统,同时将信息的外部形式转换成内部形式,通过变换中心处理之后,再沿着输出通路转换成外部形式输出

(2)事务流:信息沿着输入通路到达一个事务中心,事务中心根据输入信息的类型在若干个动作序列中选择一个来执行,这种信息流称为事务流

6.数据字典

数据字典就是用来定义数据流图中的各个成分的具体含义和详细的描述。它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。是结构化分析方法的核心。 数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的。

数据字典有四类条目:数据流、数据项、数据存储和基本加工。

7.判定表举例

(1)年交易额在5万或5万以下,则不给予折扣;

(2)对于年交易额在5万以上时:

如果无欠款,则给予15%的折扣;

如果有欠款,而且与本公司的交易关系在20年以上,则折扣为10%;

如果有欠款,而且与本公司交易关系在20年以下,则折扣为5%。

8.软件需求规格说明书:

是需求分析阶段的最后成果,是软件开发中的重要文档之一。

作用:

1)作为用和开发人员之间的合同;

2)作为开发人员进行设计和编程的根据;

3)作为软件开发完成后验收的依据

9.结构化设计方法(简称SD) 是实现软件概要设计的关键技术之一, SD 方法是一种面向数据流的设计方法,它与SA 方法衔接。

SD 方法的中心任务就是把用DFD 图表示的系统分析模型方便地转换为软件结构的设计模型。 SD 方法采用结构图(简称SC) 来描述程序的结构。结构图的基本成分有模块、调用和数据。

10.软件设计的基本原理包括:抽象、模块化、信息隐蔽和模块独立性。

1)抽象。抽象是一种思维工具,就是把事物本质的共同特性提取出来而不考虑其他细节。

2)模块化。解决一个复杂问题时自顶向下逐步把软件系统划分成一个个较小的、相对独立但又不相互关联的模块的过程。

注:模块是在程序中数据说明、可执行语句等程序对象的集合。

3)信息隐蔽。每个模块的实施细节对于其他模块来说是隐蔽的。

4)模块独立性。软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的

模块的耦合性和内聚性是衡量软件的模块独立性的两个定性指标。

a. 内聚性:是对模块功能强度的度量,即对一个模块内部各个元素(语句之间、程序段)间彼此结合的紧密程度的度量。

b. 耦合性:是模块间互相连接的紧密程度的度量。模块之间联系越紧密,其耦合性就越强,模块

的独立性则越差。

注:一个设计良好的软件系统应具有高内聚、低耦合的特征。

在结构化程序设计中,模块划分的原则是:模块内具有高内聚度,模块间具有低耦合度。 软件设计有两个步骤:概要设计(总体设计)和详细设计(过程设计)。

(1)概要设计(又称结构设计)是将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;

(2)详细设计是确定每个模块的实现算法和局部数据结构,通过对结构表示进行细化,得到软件的详细数据结构和算法。

11.软件概要设计的基本任务是:

1)设计软件系统结构;

2)数据结构及数据库设计;

3)编写概要设计文档;

4)概要设计文档评审。

概要设计的图形工具:层次图、HIPO 图和结构图

12.结构图是常用的软件结构设计工具,相关术语如下:

1深度:表示控制的层数。

2上级模块、从属模块:上、下两层模块a 和b ,且有a 调用b ,则a 是上级模块,b 是从属模块。 3宽度:整体控制跨度(最大模块数的层)的表示。

4扇入:调用一个给定模块的模块个数。

5扇出:一个模块直接调用的其他模块数。

6原子模块:树中位于叶子结点的模块。

13.详细设计的常用工具:

1. 程序流程图(程序框图)

2.N-S 图,也称盒图

3.PAD 问题分析图

4、PDL 过程设计语言

六.了里软件测试的目的和准则

1.软件测试就是保证软件质量的重要手段,其主要过程涵盖了整个软件生命周期的过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统测试、验证软件是否合格、能否交付给用户使用。

软件测试就是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

2.软件测试的原则:

1)所有测试都应追溯到需求

2)严格执行测试计划,排除测试的随意性

3)避免由软件开发人员测试自己的程序,充分注意测试中的群集性现象

4)除了很小的程序外,“彻底”的穷举测试是不可能的

5)妥善保存测试计划、测试用例、出错统计和最终的分析报告,为维护提供方便

软件测试的每一次测试都需要准备好一些测试数据,与被测程序一起输入到计算机中执行; 一般把程序执行一次需要的一组测试数据和该组测试数据可以得出怎样的输出结果(期望结果) 称为一个“测试用例”,每一个测试用例产生一个相应的“测试结果”,如果它与“期望结果”不相符合,说明程序中存在错误,需要改正错误。

测试是对软件规格说明、设计和编码的最后的复审,所以软件测试贯穿在整个软件开发期的全过

程。

七.软件测试的方法和实施

对于软件测试方法和技术,可以从不同的角度加以分类。

从是否需要执行被测软件的角度,软件测试分为静态分析和动态测试

按照功能划分,动态测试又分为白盒测试和黑盒测试

静态测试一般是指人工评审软件文档或程序,借以发现其中的错误,由于被评审的文档或程序不必运行,所以称为静态的。

静态测试包括代码检查、静态结构分析、代码质量度量等。

动态测试是指通过运行软件来检查软件中的动态行为和运行结果的正确性,也就是常说的上机测试。

动态测试一般包括两个基本要素:被测程序和测试数据

测试能否发现错误取决于测试用例的设计。

动态测试的设计测试用例的方法一般分为黑盒测试和白盒测试。

白盒测试也称结构测试,它与程序内部结构相关,要利用程序结构的实现细节设计测试用例,它涉及程序风格、控制方法、源程序、数据库设计和编码细节。

黑盒测试

是测试者已经知道被测程序的功能,而对程序内部的逻辑结构和处理过程完全不用考虑,只是对它的每一个功能进行测试,将测试后的结果与期望的结果进行分析比较,检查程序的功能是否符合规格说明书的要求。

黑盒测试是在程序接口进行的测试

测试用例设计

测试用例是由测试数据和期望结果组成。设计测试用例的目的就是用尽可能少的测试数据,达到尽可能大的程序覆盖面,发现尽可能多的软件错误和问题

用白盒法设计测试用例常用以下几种技术:

① 语句覆盖

② 判定覆盖

③ 条件覆盖

④ 判定/条件覆盖

⑤ 条件组合覆盖

⑥ 路径覆盖

用黑盒法设计测试用例常用以下几种技术:

① 等价类划分法

② 边界值分析法

③ 错误推测法

④ 因果图法

软件测试的实施

① 单元测试:是对每一个编制好的模块进行测试,其目的在于发现和排除各模块内部可能存在的差错及详细设计中产生的错误。进行单元测试时,根据程序的内部结构设计测试用例,主要采用白盒测试法

软件测试的实施

② 集成测试。是在单元测试的基础上,将所有模块按照设计要求组装成为系统而进行的测试,它的任务是检查模块间的接口和通信、各子功能的组合能否达到预期要求的功能、全程数据结构是否有问题等。集成测试主要发现设计阶段产生的错误,通常采用黑盒测试法

软件测试的实施

集成测试时,将各个模块组装成系统的方法有:

非增量组装方式是先分别对每个模块进行单元测试,再把所有模块按设计要求组装在一起进行测试,最终得到所要求的软件

增量组装方式是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试

软件测试的实施

③ 确认测试。确认测试是在集成测试通过后,在用户的参与下进行确认测试。这时通常使用实际数据进行测试,以验证系统是否能满足用户的实际需要。它的任务就是以需求规格说明书作为依据来验证软件的性能、功能及其他特征是否与用户的要求一致,通常采用黑盒测试 软件测试的实施

④ 系统测试。系统测试是在更大范围内进行的测试。系统测试是把通过确认测试后的软件与计算机硬件、外设、某些支持软件、数据和人员等结合在一起,在实际运行环境下,对计算机系统进行的一系列集成测试和确认测试

调试也称排错或纠错。

八.程序的调试

程序调试的任务:诊断和改正程序中错误。

软件测试贯穿整个生命周期,调试主要在开发阶段。

程序调试的基本步骤:

(1)错误定位;(2)纠正错误;(3)回归测试。

对软件主要的调试方法可以采用:

1)强行排错法。

2)回溯法。

3)原因排除法。

软件调试可分为静态调试和动态调试。

1. 静态调试就是指对源程序进行分析,然后确定可能出错的地方并进行排错。

2. 动态调试是指对程序的运行进行跟踪并观察其出错点,然后进行排错。

软件工程基础知识点整理

一. 软件工程基本概念:

1. 软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。

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

(2)数据是使程序能够正常操作信息的数据结构。

(3)文档是与程序开发、维护和使用有关的图文资料。

注:国标(GB )计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。

2.软件特点:

(1)软件是一种逻辑实体,而不是物理实体,具有抽象性, 是计算机的无形部分;

(2)软件的生产与硬件不同,它没有明显的制作过程;

(3)软件在运行、使用期间不存在磨损、老化问题;

(4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;

(5)软件复杂性高,成本昂贵;

(6)软件开发涉及诸多的社会因素

3. 软件分类:

按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

(1)应用软件是为解决特定领域的应用而开发的软件。如:教务管理系统、财务管理系统等。

(2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如:操作系统、数据库管理系统等。

(3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。比如:编码工具软件、测试工具软件。

4. 软件危机:

软件危机是指在软件的开发和维护过程中所遇到的一系列严重问题。

软件危机主要体现在以下几个方面:

① 软件开发的实际成本和进度估计不准确

② 开发出来的软件常常不能使用户满意

③ 软件产品的质量不高,存在漏洞,需要经常打补丁

④ 大量已有的软件难以维护

⑤ 软件缺少有关的文档资料

⑥ 开发和维护成本不断提高,直接威胁计算机应用的扩大

⑦ 软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长

5. 软件工程的定义和目的:

(1)定义:软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。

(2)目的:研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等) 。

(3)软件工程的三个要素:方法、工具和过程。

方法:完成软件工程项目的技术手段;

工具:支持软件的开发、管理、文档生成;

过程:支持软件开发的各个环节的控制、管理。

(4)核心思想:把软件产品看作是一个工程产品来处理。

二. 软件工程概述:

1. 软件生命周期:

(1)定义:将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。

(2)软件生命周期一般划分为定义、开发和维护3个阶段:

定义阶段:可行性研究、需求分析2个阶段;

开发阶段:概要设计、详细设计、编码实现和测试4个阶段;

维护阶段:使用、维护、退役阶段。

详解:a. 软件定义阶段:包括制定计划和需求分析。

制定计划:确定总目标;可行性研究;探讨解决方案;制定开发计划。

需求分析:对待开发软件提出的需求进行分析并给出详细的定义。

需求分析方法有:1)结构化需求分析方法;2)面向对象的分析方法。

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

需求分析一般分为需求获取、需求分析、编写需求规格说明书和需求评审四个步骤进行。 b. 软件开发阶段:

软件设计:分为概要设计和详细设计两个部分。

软件实现:把软件设计转换成计算机可以接受的程序代码。

软件测试:在设计测试用例的基础上检验软件的各个组成部分。

c. 软件运行维护阶段:软件投入运行,并在使用中不断地维护,进行必要的扩充和删改。 注:软件生命周期中所花费最多的阶段是软件运行维护阶段。

2. 软件工程原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。

3. 软件工具与软件开发环境:

(1)软件工具就是帮助开发软件的软件。它们对提高软件生产率,促进软件生产的自动化都有重要的作用。

(2)软件开发环境(或称软件工程环境) 是全面支持软件开发全过程的软件工具的集合,这些软件工具按照一定的方法和模式组合起来,共同支持软件生命周期内的各个阶段和各项任务的完成。

三. 软件设计基本概念:

软件工程过程—软件设计

目的:确定软件的总体结构、数据结构、用户界面和算法细节

任务:将需求阶段产生的软件需求说明转换为用适当手段表示的软件设计文档

软件设计分为总体设计和详细设计

四.软件设计的基本原理:

1.总体设计

目的:要解决的问题是“怎样实现目标系统”

任务:确定软件的总体结构,进行模块划分,确定每个模块的功能、接口及模块之间的调用关系,并对全局数据结构进行设计,同时产生概要设计说明书

2.详细设计

目的:要解决的问题是“应该怎样具体实现目标系统”

任务:在概要设计的基础上,设计每个模块实现的细节及对局部数据进行设计(包括模块的数据结构和所需的算法) ,同时产生详细设计说明书

3.软件编码

目的:产生能在计算机上执行的程序

任务:根据系统的要求和开发环境,选用合适的程序设计语言,把详细设计的结果翻译成用该程序设计语言编写的程序代码(源程序)

4.软件测试

软件测试是为了发现程序中的错误而执行程序的过程

目的和任务:通过在计算机上执行程序来尽可能多地发现软件产品中的错误和缺陷,并改正程序中的错误,以保证程序的可靠运行。

5.软件维护

软件维护阶段是长期的过程,因为,经过测试的软件还可能有错,用户的要求还会发生变化,软件运行的环境也可能变化等等。因此,交付使用的软件仍然需要继续排错、修改和扩充,这就是软件维护。

注:(1)软件维护的目的是满足用户对已开发产品的性能与运行环境不断提高的需要,进而达到延长软件的寿命 。

软件维护就是在软件交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

(2)软件维护的类型有如下几种:

1)改正性维护:诊断和改进错误的过程(。

2)适应性维护:为与变化的环境适当地配合而进行的修改软件的活动。

3)完善性维护:为了满足用户提出的增加新功能或修改已有功能的建议而进行维护。

4)预防性维护:为了改进未来的可维护性和可靠性。

软件开发时期要完成设计和实现两大任务,其中设计任务用需求分析和软件设计两个阶段完成,实现任务用编码和测试两个阶段完成。

开发任务完成的好与坏,关系到软件产品的质量,完成开发任务的关键是选择好的软件开发方法。 目前,软件开发方法主要有结构化开发方法和面向对象开发方法。

五.结构化分析方法

1.结构化分析(简称SA) 方法是面向数据流进行需求分析的方法。

该方法使用简单易读的符号,运用抽象的概念模型,根据软件内部数据传递、变换的关系,自顶向下逐层分解,描绘出满足功能要求的软件模型

2.结构化分析方法的常用工具:数据流图、数据字典、结构化语言、判定树、判定表

3.SA 的基本步骤如下:

① 自顶向下对系统进行功能分解,画出分层的数据流图

② 由后向前定义系统的数据和加工,编制数据字典和加工说明

③ 写出需求规格说明书(SRS)

4.数据流图

(1)数据流图是以图形的方式描绘数据在软件系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。

(2)数据流图由数据流、加工(又称数据处理) 、数据存储(又称文件) 、数据源点或终点四种基本成分组成。

(3)数据流图(简称DFD) 图形元素:

① 数据流:是数据在系统内传播的路径。使用箭头代表数据的流向,数据名称标在箭头的边上 ② 加工:输入数据经过加工变换产生输出。使用圆框代表加工

③ 数据存储:指处理过程中存放各种数据。使用双杠(或单杠) 表示数据文件或数据库。文件与加工之间用箭头线连接,单向表示只读或只写,双向表示可读可写

④ 数据源点或终点:指软件系统外部环境中的实体(包括人员、组织或其他软件系统,统称为外部实体) 。使用方框表示数据的源点和终点

(4)建立数据流图的步骤

第一步:由外向里:先画系统的输入输出,然后画系统的内部。

第二步:自顶向下:顺序完成顶层、中间层、底层数据流图。

第三步:逐层分解。

5.DFD 图的数据流可分为两种类型:变换流和事务流

(1)变换流:信息沿着输入通路进入系统,同时将信息的外部形式转换成内部形式,通过变换中心处理之后,再沿着输出通路转换成外部形式输出

(2)事务流:信息沿着输入通路到达一个事务中心,事务中心根据输入信息的类型在若干个动作序列中选择一个来执行,这种信息流称为事务流

6.数据字典

数据字典就是用来定义数据流图中的各个成分的具体含义和详细的描述。它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。是结构化分析方法的核心。 数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的。

数据字典有四类条目:数据流、数据项、数据存储和基本加工。

7.判定表举例

(1)年交易额在5万或5万以下,则不给予折扣;

(2)对于年交易额在5万以上时:

如果无欠款,则给予15%的折扣;

如果有欠款,而且与本公司的交易关系在20年以上,则折扣为10%;

如果有欠款,而且与本公司交易关系在20年以下,则折扣为5%。

8.软件需求规格说明书:

是需求分析阶段的最后成果,是软件开发中的重要文档之一。

作用:

1)作为用和开发人员之间的合同;

2)作为开发人员进行设计和编程的根据;

3)作为软件开发完成后验收的依据

9.结构化设计方法(简称SD) 是实现软件概要设计的关键技术之一, SD 方法是一种面向数据流的设计方法,它与SA 方法衔接。

SD 方法的中心任务就是把用DFD 图表示的系统分析模型方便地转换为软件结构的设计模型。 SD 方法采用结构图(简称SC) 来描述程序的结构。结构图的基本成分有模块、调用和数据。

10.软件设计的基本原理包括:抽象、模块化、信息隐蔽和模块独立性。

1)抽象。抽象是一种思维工具,就是把事物本质的共同特性提取出来而不考虑其他细节。

2)模块化。解决一个复杂问题时自顶向下逐步把软件系统划分成一个个较小的、相对独立但又不相互关联的模块的过程。

注:模块是在程序中数据说明、可执行语句等程序对象的集合。

3)信息隐蔽。每个模块的实施细节对于其他模块来说是隐蔽的。

4)模块独立性。软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的

模块的耦合性和内聚性是衡量软件的模块独立性的两个定性指标。

a. 内聚性:是对模块功能强度的度量,即对一个模块内部各个元素(语句之间、程序段)间彼此结合的紧密程度的度量。

b. 耦合性:是模块间互相连接的紧密程度的度量。模块之间联系越紧密,其耦合性就越强,模块

的独立性则越差。

注:一个设计良好的软件系统应具有高内聚、低耦合的特征。

在结构化程序设计中,模块划分的原则是:模块内具有高内聚度,模块间具有低耦合度。 软件设计有两个步骤:概要设计(总体设计)和详细设计(过程设计)。

(1)概要设计(又称结构设计)是将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;

(2)详细设计是确定每个模块的实现算法和局部数据结构,通过对结构表示进行细化,得到软件的详细数据结构和算法。

11.软件概要设计的基本任务是:

1)设计软件系统结构;

2)数据结构及数据库设计;

3)编写概要设计文档;

4)概要设计文档评审。

概要设计的图形工具:层次图、HIPO 图和结构图

12.结构图是常用的软件结构设计工具,相关术语如下:

1深度:表示控制的层数。

2上级模块、从属模块:上、下两层模块a 和b ,且有a 调用b ,则a 是上级模块,b 是从属模块。 3宽度:整体控制跨度(最大模块数的层)的表示。

4扇入:调用一个给定模块的模块个数。

5扇出:一个模块直接调用的其他模块数。

6原子模块:树中位于叶子结点的模块。

13.详细设计的常用工具:

1. 程序流程图(程序框图)

2.N-S 图,也称盒图

3.PAD 问题分析图

4、PDL 过程设计语言

六.了里软件测试的目的和准则

1.软件测试就是保证软件质量的重要手段,其主要过程涵盖了整个软件生命周期的过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统测试、验证软件是否合格、能否交付给用户使用。

软件测试就是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

2.软件测试的原则:

1)所有测试都应追溯到需求

2)严格执行测试计划,排除测试的随意性

3)避免由软件开发人员测试自己的程序,充分注意测试中的群集性现象

4)除了很小的程序外,“彻底”的穷举测试是不可能的

5)妥善保存测试计划、测试用例、出错统计和最终的分析报告,为维护提供方便

软件测试的每一次测试都需要准备好一些测试数据,与被测程序一起输入到计算机中执行; 一般把程序执行一次需要的一组测试数据和该组测试数据可以得出怎样的输出结果(期望结果) 称为一个“测试用例”,每一个测试用例产生一个相应的“测试结果”,如果它与“期望结果”不相符合,说明程序中存在错误,需要改正错误。

测试是对软件规格说明、设计和编码的最后的复审,所以软件测试贯穿在整个软件开发期的全过

程。

七.软件测试的方法和实施

对于软件测试方法和技术,可以从不同的角度加以分类。

从是否需要执行被测软件的角度,软件测试分为静态分析和动态测试

按照功能划分,动态测试又分为白盒测试和黑盒测试

静态测试一般是指人工评审软件文档或程序,借以发现其中的错误,由于被评审的文档或程序不必运行,所以称为静态的。

静态测试包括代码检查、静态结构分析、代码质量度量等。

动态测试是指通过运行软件来检查软件中的动态行为和运行结果的正确性,也就是常说的上机测试。

动态测试一般包括两个基本要素:被测程序和测试数据

测试能否发现错误取决于测试用例的设计。

动态测试的设计测试用例的方法一般分为黑盒测试和白盒测试。

白盒测试也称结构测试,它与程序内部结构相关,要利用程序结构的实现细节设计测试用例,它涉及程序风格、控制方法、源程序、数据库设计和编码细节。

黑盒测试

是测试者已经知道被测程序的功能,而对程序内部的逻辑结构和处理过程完全不用考虑,只是对它的每一个功能进行测试,将测试后的结果与期望的结果进行分析比较,检查程序的功能是否符合规格说明书的要求。

黑盒测试是在程序接口进行的测试

测试用例设计

测试用例是由测试数据和期望结果组成。设计测试用例的目的就是用尽可能少的测试数据,达到尽可能大的程序覆盖面,发现尽可能多的软件错误和问题

用白盒法设计测试用例常用以下几种技术:

① 语句覆盖

② 判定覆盖

③ 条件覆盖

④ 判定/条件覆盖

⑤ 条件组合覆盖

⑥ 路径覆盖

用黑盒法设计测试用例常用以下几种技术:

① 等价类划分法

② 边界值分析法

③ 错误推测法

④ 因果图法

软件测试的实施

① 单元测试:是对每一个编制好的模块进行测试,其目的在于发现和排除各模块内部可能存在的差错及详细设计中产生的错误。进行单元测试时,根据程序的内部结构设计测试用例,主要采用白盒测试法

软件测试的实施

② 集成测试。是在单元测试的基础上,将所有模块按照设计要求组装成为系统而进行的测试,它的任务是检查模块间的接口和通信、各子功能的组合能否达到预期要求的功能、全程数据结构是否有问题等。集成测试主要发现设计阶段产生的错误,通常采用黑盒测试法

软件测试的实施

集成测试时,将各个模块组装成系统的方法有:

非增量组装方式是先分别对每个模块进行单元测试,再把所有模块按设计要求组装在一起进行测试,最终得到所要求的软件

增量组装方式是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试

软件测试的实施

③ 确认测试。确认测试是在集成测试通过后,在用户的参与下进行确认测试。这时通常使用实际数据进行测试,以验证系统是否能满足用户的实际需要。它的任务就是以需求规格说明书作为依据来验证软件的性能、功能及其他特征是否与用户的要求一致,通常采用黑盒测试 软件测试的实施

④ 系统测试。系统测试是在更大范围内进行的测试。系统测试是把通过确认测试后的软件与计算机硬件、外设、某些支持软件、数据和人员等结合在一起,在实际运行环境下,对计算机系统进行的一系列集成测试和确认测试

调试也称排错或纠错。

八.程序的调试

程序调试的任务:诊断和改正程序中错误。

软件测试贯穿整个生命周期,调试主要在开发阶段。

程序调试的基本步骤:

(1)错误定位;(2)纠正错误;(3)回归测试。

对软件主要的调试方法可以采用:

1)强行排错法。

2)回溯法。

3)原因排除法。

软件调试可分为静态调试和动态调试。

1. 静态调试就是指对源程序进行分析,然后确定可能出错的地方并进行排错。

2. 动态调试是指对程序的运行进行跟踪并观察其出错点,然后进行排错。


    相关文章

    2012年市容环卫办副主任述职报告

    近两年来,我在任市城管局市容环卫办副主任期间,在局党组的正确领导和分管领导的具体指导下,在同事们的支持帮助下,立足本职岗位,勤勉努力,踏实工作,在日常工作中,注重理论学习与实践相结合。通过一边学习,一边实践,我感到自己在政治思想素质、环卫业 ...

    青春关爱--爱心图书角活动策划书

    爱心是什么?爱心是那一轮悬在苍穹的太阳,一天天迸发出灿烂的希望;爱心是什么?爱心是百花园中的一朵花,一朵朵都显现着春天的生机;爱心是什么?爱心是夏日骄阳里吹杨抚柳的一阵微风,一阵阵带来久违的凉意。 今天献出我们的一点爱,让我们的爱华为他们的 ...

    还在知网上找文献?学术狗们来看看这8个高效的文献检索网站吧!

    小妮子虽然不是学术狗,但是目前正在码论文的我光是在知网上搜索已经满足不了需求.(ˉ﹃ˉ) 特地给大家整理了几个学术文献搜索引擎,希望和学术界的大神们共勉! 1.Soscholar 天玑学术网 速戳:Soscholar Soscholar是由 ...

    婚姻登记员年终总结

    篇一:婚姻登记工作总结 一.加强婚姻登记管理工作,保护当事人合法权益 婚姻登记管理工作是克拉玛依市人民政府赋予我们的一项重要职责.特别是在今年,婚姻登记管理工作是与婚姻服务工作相辅相成.相互促进的,这就给我们婚姻登记工作人员提出了新的任务和 ...

    参考文献管理专家RefME:令大学生高呼"能救命"的软件

    在写论文的过程中,参考文献的整理是很多人心中最麻烦的一件事情,整理不当还很可能导致论文丢分甚至挂科.诞生于伦敦的RefME则不仅可以引用传统的pdf文献资料,同时还可以精准识别超过40种文献资源,包括书籍.网站和Youtube视频,并生成7 ...

    公共卫生岗位职责

    公共卫生科人员职责 一.疾病控制人员工作职责 1.在院长的领导下,在农垦局卫生处的指导下,结合本农场实际,制定年度工作计划和工作目标,并定期汇报工作. 2.负责本农场疾病预防控制工作和地方病防治工作. 3.负责疫情统计.分析和上报工作.做好 ...

    十大免费私有云平台助推企业办公信息化升级

    2012年9月10日下午三点,中国兵器工业信息中心通达信科再次震撼发力,重磅推出协同办公管理软件通达Office Anywhere2013版.与以往不同的是,这次闪亮登场的OA新版产品,力求对每个细节精益求精.处处彰显通达"极致创 ...

    公共卫生工作管理制度

    公共卫生工作管理制度 居民健康档案管理制度 1.加强档案的治理和收集.整理工作,有效地保护和利用档案.健康档案要采用统一表格,在内容上要具备完整性.逻辑性.正确性.严厉性和规范化. 2.乡镇(社区)卫生服务机构要建立专人.专室.专柜保存居民 ...

    发挥办公室职能作用促进整体工作水平提高

    “国之废兴,在于政事;政事得失,由乎辅佐”。自古以来,人们都十分重视辅佐政务工作。办公室是单位的枢纽,在做好服务工作的同时,还起着参谋助手、督促检查、承上启下、联系内外和协调左右的作用。近年来,我们阜城县人口计生局办公室积极发挥主观能动性, ...