(常见的软件开发方式有哪些)(软件开发一般用什么软件)

测试方法

黑盒测试法:

黑盒测试也称为功能测试,在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。

白盒测试法:

根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。

白盒测试常用的技术是逻辑覆盖、循环覆盖和基本路径测试。

(1)逻辑覆盖

语句覆盖。语句覆盖是指选择足够的测试数据,使被测试程序中每条语句至少执行一次。语句覆盖对程序执行逻辑的覆盖很低,因此一般认为它是很弱的逻辑覆盖。

判定覆盖(分支覆盖)。判定覆盖是指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值。或者说是程序中的每一个取“真”分支和取“假”分支至少都通过一次,因此判定覆盖也称为分支覆盖。

条件覆盖。条件覆盖是指构造一组测试用例,使得每一判定语句中每个逻辑条件的各种可能的值至少满足一次。

路径覆盖。路径覆盖是指覆盖被测试程序中所有可能的路径

功能需求:

管道过滤器体系结构:

系统设计的基本原理

1.抽象

抽象是一种设计技术,重点说明一个实体的本质方面,而忽略或者掩盖不很重要或非本质的方面。

2.模块化

模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素。

模块化是指将一个待开发的软件分解成若干个小的简单部分——模块,每个模块可独立地开发、测试,最后组装成完整的程序。

3.信息隐蔽

信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理。

1)耦合

耦合性是指模块之间联系的紧密程度。耦合性越高,则模块的独立性越差。模块间耦合的高低取决于模块间接口的复杂性、调用的方式及传递的信息。模块的耦合有以下几种类型。

  • 无直接耦合。指两个模块间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。因此,模块间耦合性最弱,模块独立性最高。
  • 数据耦合。指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。这种耦合程度较低,模块的独立性较高。
  • 标记耦合。指两个模块之间传递的数据结构,如高级语言中的数据组名、记录名、文件名等这些名字即为标记,其实传递的是这个数据结构的地址。
  • 控制耦合。指一个模块调用另一个模块时,传递的是控制变量,被调模块通过该控制变量的值有选择地执行块内的某一功能。
  • 公共耦合。指通过一个公共数据环境相互作用的那些模块之间的耦合。
  • 内容耦合。这是程度最高的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部,这种模块之间的耦合为内容耦合,这种情况往往出现在汇编程序设计中。

2)内聚

内聚是指模块内部各元素之间联系的紧密程度,例如一个完成多个功能的模块的内聚度就比完成单一功能的模块的内聚度低。内聚度越低,模块的独立性越差。内聚性有以下几种类型。

  • 偶然内聚。指一个模块内的各个处理元素之间没有任何联系。
  • 逻辑内聚。指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
  • 时间内聚。把需要同时执行的动作组合在一起形成的模块为时间内聚模块。
  • 通信内聚。指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。
  • 顺序内聚(过程内聚)。指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。(也叫过程内聚)
  • 功能内聚。这是最强的内聚。指模块内所有元素共同完成一个功能,缺一不可。耦合性和内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚、低耦合,提高模块的独立性。
(常见的软件开发方式有哪些)(软件开发一般用什么软件)

维护类型

软件维护

改正性维护(正确性维护)。是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。

适应性维护:是指使应用软件适应信息技术变化和管理需求变化而进行的修改。

改善型维护:这是为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。

预防性维护:为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。

软件工程

软件开发过程模型(重点,各模型的特点和区别)

瀑布模型:

瀑布模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。需求是明确和完整的。

它是一种理想的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。

演化模型:

大量的软件开发实践表明,许多开发项目在开始时对软件需求的认识是模糊的,因此很难一次开发成功。为了减少因对软件需求的了解不够确切而给开发工作带来的风险,可以在获取了一组基本的需求

后,通过快速分析构造出该软件的一个初始可运行版本,这个初始的软件通常称为原型(Prototype),然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。重复这一过程,最终可得到令用户满意的软件产品。采用演化模型的开发过程,实际上就是从初始的原型逐步演化成最终软件产品的过程。演化模型特别适用于对软件需求缺乏准确认识的情况。

演化模型适合初始时需求不明确的项目,通过用户交互和迭代完成最终开发。

螺旋模型

螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。

对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和演化模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。

螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合。在每个螺旋周期分为如下4个工作步。

(1)制定计划。确定软件的目标,选定实施方案,明确项目开发的限制条件。

(2)风险分析。分析所选的方案,识别风险,消除风险。

(3)实施工程。实施软件开发,验证阶段性产品。

(4)用户评估。评价开发工作,提出修正建议,建立下一个周期的开发计划。

喷泉模型:

喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙

迭代意味着模型中的开发活动常常需要重复多次,在迭代过程中不断地完善软件系统。无间隙是指在开发活动(如分析、设计、编码)之间不存在明显的边界,也就是说,它不像瀑布模型那样,需求分析活动结束后才开始设计活动,设计活动结束后才开始编码活动,而是允许各开发活动交叉、迭代地进行。

增量模型

增量模型是一种非整体开发的模型,该模型具有较大的灵活性,适合于软件需求不明确的一种模型。使用该模型开发产品,一般是尽快构造出可运行的产品,然后在该产品的基础上再增加需要的新的构建,使产品更趋于完善。

原型模型

原型模型基于这样一种客观事实:并非所有的需求在系统开发之前都能准确地说明和定义。因此,它不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法。它适用于需求不明确的开发环境。

软件开发方法

面向数据流方法(结构化方法)

结构化方法由结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。结构化分析是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作。结构化设计是根据模块独立性准则、软件结构优化准则将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。结构化程序设计是根据结构程序设计原理,将每个模块的功能用相应的标准控制结构表示出来,从而实现详细设计。

Jackson方法(一种面向数据结构的开发方法)

JSP方法是以数据结构为驱动的,适合于小规模的项目。

原型化开发:

原型化开发比较适合于用户需求不清、业务理论不确定、需求经常变化的情况。当系统规模不是很大也不太复杂时,采用该方法是比较好的

面向对象方法

面向对象开发方法的基本出发点是尽可能按照人类认识世界的方法和思维方法来分析和解决问题。客观世界是由许多具体的事物、事件、概念和规则组成,这些均可被看成对象,面向对象方法正是以对

象作为最基本的元素,它也是分析问题、解决问题的核心。

结构化设计

在结构化设计中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则:

(1)模块的大小要适中。系统分解时需要考虑模块的规模,过大的模块可能导致系统分解不充分,其内部可能包括不同类型的功能,需要进一步划分,尽量使得各个模块的功能单一;过小的模块将导致系统的复杂度增加,模块之间的调用过于频繁,反而降低了模块的独立性。

(2)模块的扇入和扇出要合理。一个模块的扇出是指该模块直接调用的下级模块的个数;扇出大表示模块的复杂度高,需要控制和协调过多的下级模块。扇出过大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块;扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。一个模块的扇入是指直接调用该模块的上级模块的个数;扇入大表示模块的复用程度高。

(3)深度和宽度适当。深度表示软件结构中模块的层数,如果层数过多,则应考虑是否有些模块设计过于简单,看能否适当合并。宽度是软件结构中同一个层次上的模块总数的最大值,一般说来,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出。

软件复杂性

McCabe度量法:

(常见的软件开发方式有哪些)(软件开发一般用什么软件)

节点数n=6,弧数m=9,p=1

V(G)=m-n+2p=9-6+2=5

数据流图

数据流图或称数据流程图(Data Flow Diagram, DFD),是一种便于用户理解、分析系统数据流程的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,

是系统逻辑模型的重要组成部分。

(常见的软件开发方式有哪些)(软件开发一般用什么软件)
  • 数据流。数据流由一组固定成分的数据组成,表示数据的流向。值得注意的是,DFD中描述的是数据流,而不是控制流。除了流向数据存储或从数据存储流出的数据流不必命名外,每个数据流都必须有一个合适的名字,以反映该数据流的含义。
  • 加工。加工描述了输入数据流到输出数据流之间的变换,也就是输入数据流经过什么处理后变成了输出数据流。每个加工有一个名字和编号。编号能反映出该加工位于分层DFD中的哪个层次和哪张图中,也能够看出它是哪个加工分解出来的子加工。
  • 数据存储。数据存储用来表示存储的数据,每个数据存储都有一个名字。
  • 外部实体。外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地和系统所产生的数据的归宿地。

测试策略和测试方法

1、自顶向下集成

优点:较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。

缺点:柱的开发量大;底层验证被推迟;底层组件测试不充分。

适应于产品控制结构比较清晰和稳定;高层接口变化较小;底层接口未定义或经常可能被修改;产口控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的系统功能行为。

2、自底向上集成

优点:对底层组件行为较早验证;工作最初可以并行集成,比自顶向下效率高;减少了桩的工作量;支持故障隔离。

缺点:驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能被及时发现。

适应于底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。

3.三明治法

统一过程( Rational Unified Process)

统一过程模型是一种“用例驱动,以体系结构为核心,迭代及增量”的软件过程框架,由UML方法和工具支持。

RUP把一个项目分为四个不同的阶段:

构思阶段 :包括用户沟通和计划活动两个方面,强调定义和细化用例,并将其作为主要模型。

细化阶段 :包括用户沟通和建模活动,重点是创建分析和设计模型,强调类的定义和体系结构的表示。 (关注需求分析和架构演进)

构建阶段 :将设计转化为实现,并进行集成和测试。

移交阶段 :将产品发布给用户进行测试评价,并收集用户的意见,之后再次进行迭代修改产品使之完善。

数据流

数据流图的设计原则:

① 数据守恒原则

② 守恒加工原则

③ 对于每个加工,必须既有输入数据流,又有输出数据流

④ 外部实体与外部实体之间不存在数据流

⑤ 外部实体与外部存储之间不存在数据流

⑥ 数据存储与数据存储之间不存在数据流

⑦ 父图与子图的平衡原则

⑧ 数据流与加工有关,且必须经过加工

真题

  1. 以下关于管道过滤器体系结构的有点的叙述中,不正确的是( C )。

A.软件构件具有良好的高内聚、低耦合的特点 B.支持重用 C.支持并行执行 D.提高性能

试题分析

管道过滤器不支持批处理和并发操作。

  1. 并列争球法使用了迭代的方法,其中,把每段时间(30天)一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。

3.软件质量特性

可移植性包含:适应性、易安装性、共存性和易替换性四个特性。

4.喷泉模型属于面向对象开发模型

5.

(常见的软件开发方式有哪些)(软件开发一般用什么软件)

6.根据软件过程活动对软件工具进行分类,则逆向工程工具属于( 软件维护 )工具。

7.采用McCabe度量法计算下列程序图的环路复杂性为( )。

(常见的软件开发方式有哪些)(软件开发一般用什么软件)

试题分析

点数:8,边数:10。

10-8+2=4。

8.以下关于增量模型的叙述中,正确的是( )。

B.可以快速构造核心产品

试题分析

增量模型融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第1个增量往往是核心的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。

9.CMM(Capability Maturity Model)是能力成熟度模型的缩写

(1)初始级:软件过程的特点是无秩序或说无定规的,有时甚至是混乱的。软件过程定义几乎处于无章法、无步骤可循的状态,软件产品所取得的成功往往依赖于极个别人的努力和机遇。

(2)可重复级:已建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目,有章可循并能重复以往所取得的成功。

(3)已定义级:用于管理的和工程的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合的、适当修改后的标准软件过程来进行操作。

(4)已管理级:软件过程和产品质量有详细的度量标准。软件过程和产品质量得到了定量的认识和控制。

(5)优化级:通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地对促进过程进行改进。(成熟度最高)

10.在软件开发过程中,系统测试阶段的测试目标来自于( 需求分析)阶段。

11.增量式开发的主要优点包括:

1、由于能够在较短的时间内向用户提交一些有用的工作产品,因此能够解决用户的一些急用功能。

2、由于每次只提交用户部分功能,用户有较充分的时间学习和适应新的产品。

3、对系统的可维护性是一个极大的提高,因为整个系统是由一个个构件集成在一起的,当需求变更时只变更部分部件,而不必影响整个系统。

12.系统的可维护性的评价指标包括:可理解性、可测试性、可修改性。

13.需求分析阶段的任务主要是要解决系统做什么的问题,即弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。

概要设计的主要任务是把需求分析得到的结果转换为软件结构和数据结构,即将一个复杂系统按功能**进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面、确定数据的结构特性、以及数据库的设计**等。

详细设计是在概要设计的基础上更细致的设计,它包括具体的业务对象设计、功能逻辑设计、界面设计等工作。详细设计是系统实现的依据,需要更多地考虑设计细节。

编码即编写程序代码,具体实现系统。

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者枫林晚粥所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(常见的软件开发方式有哪些)(软件开发一般用什么软件)
本文链接:https://www.51qsb.cn/article/m78la.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2022-12-20
下一篇2022-12-21

你可能还想知道

发表回复

登录后才能评论