乐于分享
好东西不私藏

软考|系分|第七章| 软件工程(中)

软考|系分|第七章| 软件工程(中)

软件开发环境与工具

软件开发环境 ( Software Development Environment,SDE) 是指支持软件的工程化开发和 维护而使用的一组软件,由软件工具集和环境集成机制构成。软件工具是指CASE工具,用以支持软件开发的相关过程、活动和任务;环境集成机制是指为工具集成和软件开发、维护及管 理提供统一的支持。通过环境集成机制,各工具用统一的数据接口规范存储或访问环境信息库, 采用统一的界面形式,保证界面的一致性,同时,为各工具或开发活动之间的通信、切换、调 度和协同工作提供支持。

7.3.1 软件开发环境
软件开发环境应支持多种集成机制,例如,平台集成、数据集成、界面集成、控制集成和 过程集成等。软件开发环境应支持小组工作方式,并为其提供配置管理,环境的服务可用于支 持各种软件开发活动,包括分析、设计、编程、调试和文档等。
较完善的软件开发环境通常具有多种功能,例如,软件开发的一致性与完整性维护,配置 管理及版本控制,数据的多种表示形式及其在不同形式之间的自动转换,信息的自动检索与更 新,项目控制和管理,以及对开发方法学的支持。软件开发环境具有集成性、开放性、可裁减 性、数据格式一致性、风格统一的用户界面等特性,因而能大幅度提高软件生产率。

  1. 软件开发环境的分类
    软件开发环境可按以下几种角度进行分类:
    (1)按软件开发模型与开发方法分类,有支持瀑布模型、演化模型、螺旋模型和喷泉模型 等不同模型,以及结构化方法、面向对象方法等不同方法的软件开发环境。
    (2) 按功能与结构特点分类,有单体型、协同型、分散型和并发型等多种类型的软件开发 环境。
    (3)按应用范围分类,有通用型和专用型软件开发环境。其中,专用型软件开发环境与应 用领域有关。
    (4) 按开发阶段分类,有前端开发环境(支持系统规划、分析、设计等阶段的活动)、后端 开发环境(支持编程、测试等阶段的活动)、软件维护环境和逆向工程环境等。

  2. 集成机制
    集成机制根据功能的不同,可划分为环境信息库、过程控制与消息服务器、环境用户界面 三个部分。
    (1) 环境信息库。环境信息库是软件开发环境的核心,用以存储与系统开发有关的信息, 并支持信息的交流与共享。环境信息库中主要存储两类信息:一类是开发过程中产生的有关被 开发系统的信息,例如,分析文档、设计文档和测试报告等;另一类是环境提供的支持信息, 例如,文档模板、系统配置、过程模型和可复用构件等。
    (2)过程控制与消息服务器。过程控制与消息服务器是实现过程集成和控制集成的基础。 过程集成是按照具体软件开发过程的要求进行工具的选择与组合,控制集成使各工具之间进行 并行通信和协同工作。
    (3)环境用户界面。环境用户界面包括环境总界面和由它实行统一控制的各环境部件及工 具的界面。统一的、具有一致性的用户界面是软件开发环境的重要特征,是充分发挥环境的优 越性、高效地使用工具并减轻用户的学习负担的保证。

  3. 集成计算机辅助软件工程
    目前,随着软件开发工具的积累与自动化工具的增多,软件开发环境已经进入了第三代, 即集成计算机辅助软件工程( Integrated Computer-Aided Software Engineering,ICASE) 阶段。 集成方式经历了从点到点的数据转换(早期CASE采用的集成方式),到公共用户界面(第二 代CASE, 在一致的界面下调用众多不同的工具),再到目前的信息库方式。这是ICASE的主 要集成方式。ICASE不仅提供数据集成和控制集成,还提供了一组用户界面管理设施和一大批 工具,包括垂直工具集(支持软件生命周期各阶段,保证生成信息的完备性和一致性)、水平工 具集(用于不同的软件开发方法)和开放工具槽(用于连接新的工具)。
    ICASE的信息库不仅定义了面向对象的数据库管理系统,提供了数据-数据集成机制,还 建立了可以被环境中所有工具访问的数据模型,提供了数据-工具集成机制,实现了配置管理 功能。ICASE的进一步发展则是与软件开发方法的结合,以及智能化的ICASE。
    ICASE 的最终目标是实现应用软件的全自动开发,即开发人员只要写好软件的需求规格说 明书,ICASE就能自动完成软件开发工作,即自动生成供用户直接使用的软件和有关文档。
    7.3.2 软件开发工具
    软件开发环境中的工具可包括支持特定过程模型和开发方法的工具(例如,支持瀑布模型 及数据流方法的工具,支持面向对象方法的工具等)和独立于模型和方法的工具(例如,界面 辅助生成工具和文档出版工具等),也可包括管理类工具和针对特定领域的应用类工具。所有这 些工具可分为贯穿整个开发过程的工具(例如,项目管理工具)和解决软件生命周期中某一阶 段问题的工具(例如,软件估算工具等)。

  4. 软件工具的分类
    在软件生命周期中,要使用很多软件工具,从其功能上进行划分,可以分为软件开发工具、 软件维护工具、软件管理和支持工具三类。
    (1)软件开发工具。软件开发工具用来辅助开发人员进行软件开发活动,包括需求分析工 具、设计工具、编码与排错工具等。
    (2)软件维护工具。软件维护工具用来辅助维护人员对软件代码及其文档进行各种维护活 动,包括版本管理工具、文档分析工具、开发信息库工具、逆向工程工具和再工程工具等。
    (3)软件管理和支持工具。软件管理和支持工具用来辅助管理人员和软件支持人员的管 理活动和支持活动,以确保软件高质量完成,包括项目管理工具、配置管理工具和软件评价工 具等。

  5. 开发工具的选择
    开发工具的选择是软件项目成功的要素之一。对软件开发工具的评价和选择,要参照具体 软件项目对开发工具的选择标准和要求,从功能、易用性、稳健性、硬件要求和性能,以及服 务和支持等方面来衡量。简单地说,开发工具的选择主要决定于两个因素,分别是所开发系统 的最终用户和开发人员。最终用户需求是一切软件的来源和归宿,也是影响开发工具的决定性 因素;开发人员的爱好、习惯和经验也影响着开发工具的选择。

258 系统分析师教程(第2版)

需要强调的是,开发工具的比较没有绝对的标准。评价一种开发工具,不仅要看它对设计 模式和对象结构,以及管理的支撑情况,更重要的是要针对具体的使用环境、开发方法、软件 架构和开发人员,以及最终用户来评价一种工具的适宜程度。
3. 快速开发工具
在RAD方法中,所包括的工具主要有数据库编程语言、界面生成器和报告生成器等。RAD 工具主要使用可视化技术。可视化技术是一种通过集成细粒度可复用构件来构造软件的方法, 其主要思想是用图形工具和可复用构件来交互地编制程序。常用的RAD工具有Microsoft Visual Studio.NET 、Sun Java Studio Creator、WebLogic Workshop和 Borland C#Builder 等。一般的可 视化编程工具还有应用向导提供模板,按照步骤对程序员进行交互式指导,让用户定制自己的 应用,然后就可以生成应用程序的框架代码,用户再在适当的地方添加或修改,以适应自己的 需求。

7.4 软件过程管理

在无规则和混乱的管理条件下,先进的软件开发技术和工具并不能发挥应有的作用。于是, 人们认识到,改进软件过程的管理是解决上述难题的突破口。但是,各个软件组织的过程成熟 度有着较大的差别。为了做出客观、公正的比较,就需要建立一种衡量的标准。使用此标准一 方面可以评价软件开发方的质量保证能力,在软件项目评标活动中选择开发方;另一方面,该 标准也必然成为软件组织加强质量管理和提高软件产品质量的依据。
软件过程是软件生命周期中的一系列相关活动,即用于开发和维护软件及相关产品的一系 列活动。软件产品的质量取决于软件过程,具有良好软件过程的组织能够开发出高质量的软件 产品。
7.4.1 软件能力成熟度模型
软件能力成熟度模型( Capability Maturity Model,CMM) 是一个概念模型,模型框架和表 示是刚性的,不能随意改变,但模型的解释和实现有一定弹性。CMM 提供了一个软件能力成熟 度的框架,它将软件过程改进的步骤组织成5个成熟度等级,为软件过程不断改进奠定了一个 循序渐进的基础。
1.CMM 的等级
CMM 的目的是帮助组织对软件过程进行管理和改进, 增强开发与改进能力,从而能按时 地、不超预算地开发出高质量的软件。 CMM 的5个成熟度等级分别为初始级、可重复级、已定 义级、可管理级和优化级。
(1)初始级。初始级是未加定义的随意过程,软件过程的特点是无秩序的,有时甚至是混 乱的。软件过程定义几乎处于无章法、无步骤可循的状态,软件产品所取得的成功往往依赖于 极个别人的努力和机遇。
(2)可重复级。可重复级是规则化和纪律化的过程,软件过程已建立了基本的项目管理流

第7章 软件工程 259

程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目有章可循,并能重复以往所 取得的成功。
(3) 已定义级。已定义级是标准化和一致化的过程,用于管理和工程活动的软件过程均已 文档化、标准化,并形成了整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合 的、适当修改后的标准软件过程来进行操作。
(4) 可管理级。已管理级是可预测的过程,软件过程和产品质量有详细的度量标准。软件 过程和产品质量得到了定量的认识和控制。
(5)优化级。优化级是持续改进的过程,通过对来自过程、新概念和新技术等方面的各种 有用信息的定量分析,能够不断地、持续性地对过程进行改进。
2. 关键过程域
除初始级以外,CMM的每个级别的实现都定义成可操作的,每一级包含了实现这一级目标 的若干关键过程域( Key Process Area,KPA),如表7-1所示。
表7-1 关键过程域的分类

过程分类
成熟度等级
管理方面
组织方面
工程方面

优化级 技术变更管理 过程变更管理
缺陷预防
可管理级 量化过程管理 软件质量管理

已定义级
集成软件管理 组间合作 组织过程焦点
组织过程定义
培训计划
软件产品工程 同行评审

可重复级 需求管理
软件项目计划
软件项目跟踪与监控 软件子合同管理
软件质量保证
软件配置管理
每个KPA都是由关键实施活动( Key Practices,KP) 组成的,它们的执行表明该KPA 在一 个组织内部得到实现。
3. 能力成熟度模型集成
能力成熟度模型集成( Capability Maturity Model Integration,CMMI) 融合了多种模型,形 成了组织范围内过程改进的单一集成模型,其主要目的是消除不同模型之间的不一致和重复, 降低基于模型进行改进的成本。CMMI 继承了CMM 的阶段表示法和EIA/IS 731的连续式表示 法。这两种表示方法各有优缺点,均采用统一的24个过程域,它们在逻辑上是等价的,对同一 个组织采用两种模型分别进行CMMI评估,得到的结论应该是相同的。
(1) 阶段式模型。阶段式模型基本沿袭CMM 模型框架,仍保持5个成熟度等级,但关键

260 系统分析师教程(第2版)

过程域做了一些调整和扩充,如表7-2所示。
表7-2 阶段式模型的过程域分组

成熟度等级 过程域

可重复级 需求管理、项目计划、配置管理、项目监督与控制、供应商合同管理、度量和分析、过 程和产品质量保证

已定义级 需求开发、技术解决方案、产品集成、验证、确认、组织级过程焦点、组织级过程定
义 、组织级培训、集成项目管理、风险管理、集成化的团队、决策分析和解决方案、组 织级集成环境
可管理级 组织级过程性能、定量项目管理
优化级 组织级改革与实施、因果分析和解决方案

当组织通过了某一等级过程域中的全部过程,即意味着该组织的成熟度达到了这一等级。 利用阶段式模型对组织进行成熟度度量,概念清晰、易于理解、便于操作。
(2)连续式模型。与阶段式模型相比,连续式模型没有与组织成熟度相关的几个阶段。连 续式模型将24个过程域按照功能划分为过程管理、项目管理、工程和支持4个过程组。每组包 含的过程域如表7-3所示。
表7-3 连续式模型的过程域分组

过程组 过程域
过程管理 组织级过程焦点、组织级过程定义、组织级培训、组织级过程性能、组织级改革与实施

项目管理 项目计划、项目监督与控制、供应商合同管理、集成项目管理、风险管理、集成化的团 队、定量项目管理
工程 需求管理、需求开发、技术解决方案、产品集成、验证、确认

支持 配置管理、度量和分析、过程和产品质量保证、决策分析和解决方案、组织级集成环 境、因果分析和解决方案
连续式模型的过程域强调实践,每个过程域代表组织某一方面的能力。每个过程域的能力 均分为5级,所有过程域共同的能力等级决定组织的能力等级。连续式模型允许组织对过程域 进行裁剪,也允许对不同的过程域采用不同的能力等级。采用这种模式的评估结果用能力特征

图7-5 能力特征图示例

图表示,如图7-5所示。连续式模型允许一个过 程域出现在多个特征图中,这些特征图分别代表 某种能力的过程域的子集。
CMM和 CMMI 是提高软件组织的成熟度和 软件过程能力的有效模型和工具,组织无论采用 CMM模型还是采用CMMI 模型,无论是使用阶 段式模型还是使用连续式模型,都能提高软件过 程的成熟度,都能提高项目的软件过程能力,用 两种模型或两种方法评价的结论应该是基本一 致的。

第7章 软件工程 261

7.4.2 软件过程评估

软件过程评估是根据过程模型或其他模型对组织的软件过程所进行的规范的评估。软件过 程评估是由接受过培训的专业软件人员所组成的小组对组织的当前软件过程进行评估,以确定 其状态,确定组织所面临的与软件过程相关事务的优先级,并从组织中获得对软件过程改进的 支持。
1.CMM 模型
CMM的一个重要思想是帮助软件组织通过基于模型的过程改进,达到使其软件过程向更 高的成熟度等级迈进的目标。在这个过程中,一个组织必须建立起自己的软件过程,并根据 CMM模型的要求对过程进行评估。根据评估的结果来进一步改进自己的软件过程,然后再一 次评估,以期达到更高的成熟度等级,或者防止软件过程成熟度能力退化。如此反复循环,最 终使一个组织的软件过程能力趋于更加成熟。基于CMM的评估方法分为以下6个步骤:
(1)成立评估小组,小组由软件工程和管理工作经验丰富的专家组成,小组成员应接受过 CMM基本概念和评估方法的专门培训。
(2)参评单位的代表认真填写成熟度问卷表,并回答有关问题。
(3)评估小组分析调查问卷。
(4)评估小组现场访问、召开座谈会、审核过程文档,判断 KPA 的实践活动是否达到预定 目标,并将结论记入文档。
(5)整理调查结果,撰写调查报告,指明软件过程的强项和弱项。
(6)绘制KPA剖面图,显示是否达到KPA的目标,并向有关部门提交评估的结论性意见。
2.Trillum模型
Trillum模型是一个主要用于嵌入式软件开发和支持的能力评估模型,它以CMM 模型为基 础,同时有新的发展。Trillum 模型的主要特点如下:
(1)模型的架构建立在路线图的基础上。
(2)模型不仅适用于软件,同时适用于硬件。
(3)模型强调以用户为关注的焦点。
(4)模型包括技术成熟度,主要面向通信产品。
3.Bootstrap 方法
Bootstrap 参考ISO 9000-3和ESA PSS-05等软件标准,设计了非常详细的过程质量属性结 构,包括组织资源管理、测试方法和生命周期技术等17个属性,改进了CMM 的问卷表和成熟 度计算方法,使其可用于过程的每一个质量属性,从而得到一个过程质量剖面。Bootstrap 可适 用于各类软件组织,在欧洲有很大的影响力。
4.ISO/IEC 15504标准
ISO/IEC 15504分为9个部分,分别是概念与介绍指南、过程与过程能力的参考模型、实 施评估、评估实施指南、一个评估模型和指示指南、评估员资格认证指南、过程改进应用指南、

判断供应商过程能力指南和词汇表,其中第一部分是资料,第二部分和第三部分是标准,其他 部分都是参考性的。在ISO/IEC 15504的第二部分(过程与过程能力的参考模型)中,在比较 高的层次上详细定义了一个用于过程评估的二维参考模型,即过程维和能力维。通过将过程中 的特点与不同的能力等级相比较,可以用此参考模型定义的一系列过程和框架对过程能力加以 评估。
在ISO/IEC 15504中,能力等级是针对每个过程的,它定义了6级过程性能,每一级都用 主要的过程特征术语和用于性能测量的属性来描述。具体包括:不完善的过程、已实施的过程、 已计划与已跟踪的过程、已建立的过程、可预测的过程、优化的过程。
5.SJ/T 11234—2001标准
我国行业标准《软件过程能力评估模型( SJ/T 11234—2001)》针对软件组织对自身软件过 程能力进行内部改进的需要,与CMMI连续式模型基本相同。该模型有22个过程域,分为四 大类,分别是过程管理类、项目管理类、工程类和支持类,如表7-4所示。
表7-4 SJ/T 11234—2001标准的过程域分组

过程域分组 过程域

过程管理 组织级过程焦点、组织级过程定义、组织级培训、组织级过程性能、组
织级改革与实施

项目管理 项目计划、项目监督与控制、供方协议管理、集成项目管理、风险管理、 定量项目管理
工程 需求管理、需求开发、技术解决方案、产品集成、验证、确认

支持 配置管理、度量和分析、过程和产品质量保证、决策分析和解决方案、 因果分析和解决方案

SJ/T 11234—2001的每个过程能力划分为6个评估等级:不完整级、已执行级、受管理级、 已定义级、定量管理级和持续优化级。每个等级包含了通用目标、通用惯例、特定目标和特定 惯例,它们组成一套衡量准则。不完整级是反映那些没有得到完整执行过程的状态,可能实现 了部分特定目标,也可能什么目标都没有实现;处于已执行级的过程实现了全部特定目标;受 管理级、已定义级、定量管理级和持续优化级不仅实现了全部特定目标,而且依次实现了对应 更高的通用目标。

7.5 软件重用和再工程

软件重用是在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软 件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。通常, 可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大。软件再工程指通过对目 标系统的检查和改造,使用逆向工程、重构和正向工程方法,将现存系统重新构造为新的形式, 开发出质量更高、维护性更好的软件。

第7章 软件工程 263

7.5.1 可重用的软件构件
软件重用是在软件开发过程中重复使用相同或相似的软件元素的过程。这些软件元素包括 应用领域知识、开发经验、设计经验、体系结构、需求分析文档、设计文档、程序代码及测试 用例等。对于新的软件开发项目而言,它们是构成整个软件系统的部件,或者在软件开发过程 中可发挥某种作用。通常把这些软件元素称为软件构件。
一般情况下,在软件开发中采用重用软件构件,较从头开发这个软件更加容易。软件重用 的目的是能更快、更好、成本更低地生产软件产品。软件的重用可划分为三个层次,即知识重 用,方法和标准的重用以及软件成分的重用。
7.5.2 软件重用过程

通常先分析软件的功能需求,根据需求开发可重用的软件构件,并对其进行标识、构造、 分类和存储,以便在特定的应用领域重用这些软件构件。在开发软件时,根据软件需要检索软 件构件,对软件构件进行补充、修改、组装,再进行系统测试、调试工作,直到完成软件工程。

  1. 软件重用过程模型
    软件重用过程有三种模型,分别为组装模型、类重用模型和软件重用过程模型。
    1)组装模型
    最简单的软件重用过程是,先将以往软件工程项目中建立的软件构件存储在构件库中,然 后通过对软件构件库进行查询,提取可以重用的软件构件;再对它们进行一些修改,以适应新 系统,并建造新系统需要的其他构件(这些构件可保存到构件库中,以便今后重用);最后将新 系统需要的所有构件进行组装。
    2)类重用模型
    利用面向对象技术,可以比较方便有效地实现软件重用。面向对象技术中的类是比较理想 的可重用软件构件,不妨称之为类构件。
    类构件的重用方式有以下几种:
    (1)实例重用。按照需要创建类的实例,然后向该实例发送适当的消息,启动相应的服务, 完成所需要的工作。
    (2)继承重用。利用面向对象方法的继承性机制,子类可以继承父类已经定义的所有数据 和操作,子类也可以定义新的数据和操作。
    为了提高继承重用的效果,可以设计一个合理的、具有一定深度的类构件的层次结构。这 样可以降低类构件的接口复杂性,提高类的可理解性,为软件开发人员提供更多的可重用构件。
    (3)多态重用。多态重用方法根据接收消息的对象类型不同,在响应一个一般化的消息时, 由多态性机制启动正确的方法,执行不同的操作。
    3)软件重用过程模型
    为了实现软件重用,已经出现了许多过程模型,这些模型都强调领域工程和软件工程同时 进行。

264 系统分析师教程(第2版)

领域工程在特定的领域创建应用领域的模型,设计软件体系结构模型,开发可重用的软件 成分,建立可重用的软件构件库。显然,软件构件库应当不断积累、不断完善。
基于构件的软件工程,根据用户的实际需求,参照领域模型进行系统分析,使用领域的结 构模型进行结构设计;从可重用软件构件库中查找所需要的构件,对构件进行鉴定、调整,构 造新的软件构件;再对软件构件进行组合,开发应用软件,软件构件不断更新,并补充到可重 用软件构件库中,即完成软件重用过程。
2. 开发可重用的软件构件
开发可重用的软件构件的过程就是领域工程。所谓“领域”,是指具有相似或相近的软件需 求的应用系统所覆盖的一组功能区域。可以根据领域的特性及相似性预测软件构件的可重用性。 一旦确认了软件构件的重用价值,对这样的软件构件进行设计和构造,形成可重用的构件,进 而建立软件构件库的过程,就是领域工程。领域工程的目的是标识、构造、分类和传播软件构 件,以便在特定的应用领域重用这些软件构件。
领域工程包括分析过程、开发软件构件和传播软件构件三个主要的活动。
1)分析过程
领域工程分析过程中,标识可重用的软件构件是一项重要工作。对以下问题的回答可作为 标识可重用构件的指南:
(1)构件的功能在未来的工作中需要吗?
(2)构件的功能通用性强吗?
(3)构件是否依赖于硬件?
(4)构件的设计是否足够优化?
(5)构件在重用时需要做大的修改吗?
(6)能否将一个不可重用的构件分解成一组可重用的构件?
2)开发可重用的软件构件
为了开发可重用的软件构件,应该考虑以下几个问题:
(1)标准的数据结构。例如,文件结构或数据库结构,所有构件都使用这些标准的数据 结构。
(2)标准的接口协议。建立模块内接口、外部接口和人机界面三个层次的接口协议。
(3)程序模板。可用结构模型作为程序体系结构设计的模板。例如,报警系统软件可用于 医疗监护、家庭安全、工业过程监控等各种系统,它的结构模板含有如下构件:
●人机交互界面。
●安全范围设置。
● 与监控传感器通信的管理机制。
● 响应机制。
● 控制机制。
建立了上述程序模板后,在设计具体的应用软件时,只要根据系统的实际要求稍加修改就 可实现重用。

第7章 软件工程 265

3)传播软件构件
传播软件构件就是让用户能在成千上万的软件构件中找到自己所需要的构件,这需要很好 地描述构件。构件的描述包括构件的功能、使用条件、接口、如何实现等。构件如何实现的问 题,只有准备修改构件的人需要知道,其他人只要了解构件的功能、使用条件和接口即可。
3. 分类和检索软件构件
随着软件构件的不断丰富,软件构件库的规模不断扩大,软件构件库的组织结构将直接影 响构件的检索效率。软件构件库结构的设计和检索方法的选用,应当尽量保证用户容易理解, 易于使用。
对可重用软件构件库进行分类,可便于用户的检索使用。构件分类的方法有枚举分类、刻 面分类和属性值分类三种典型模式。
4. 软件构件重用环境
软件构件的重用必须由相应的环境来支持,环境应包含下列元素:
(1) 软件构件库。存放软件构件和检索构件所需要的分类信息。
(2)软件构件库管理系统。管理对构件库的访问。
(3)软件构件库检索系统。用户应用系统通过检索系统检索构件、重用构件。
(4) CASE 工具。帮助用户把重用的构件集成到新的设计中去。
上述功能可以嵌入软件构件重用库中。重用库中存储各种各样的软件成分,例如,规格说 明、设计、代码、测试用例及用户指南等。重用库包括有关构件的数据库以及数据库的查询工 具,构件分类模式是构件数据库查询的基础。
7.5.3 软件逆向工程

  1. 逆向工程概念
    在工程技术人员的一般概念中,产品设计生产过程是一个从设计到完成产品的过程,即设 计人员首先在大脑中构思产品的外形、性能和大致的技术参数等,然后在详细设计阶段完成各 类数据模型,再将这个模型转入研发流程,最终完成产品的整个设计研发周期。这样的产品设 计过程称为“正向设计”过程。
    逆向工程 ( Reverse Engineering) 是一种产品设计技术的再现过程,即对一项目标产品进行 逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计 要素,进而制作出功能相近,但又不完全一样的产品。简单地说,逆向工程就是根据已有的产 品,反向推出产品设计数据(包括各类设计图或数据模型)的过程。因此,逆向工程可以被认 为是一个从产品到设计的过程。
    由于法律对知识产权的保护,复制制造与别人完全一样的产品是不允许的。因此逆向工程 可能会被误认为是对知识产权的严重侵害,但是在实际应用中,反而可能会保护知识产权所有 者。例如,在集成电路领域,如果怀疑某公司侵犯知识产权,可以用逆向工程技术来寻找证据。
    逆向工程又名反向工程,源于商业及军事领域的硬件制造业。相互竞争的公司为了解对方设计

266 系统分析师教程(第2版)

和制造工艺的机密,在得不到设计和制造说明书的情况下,通过拆解实物获得产品生产信息。软件 的逆向工程基本类似,只不过通常拆解分析的不仅有竞争对手的程序,还有自己公司的软件。
软件的逆向工程是分析程序,力图在比源代码更高的抽象层次上建立程序的表示过程。它 不仅是设计的恢复过程,还可以借助工具从已存在的程序中抽取数据结构、体系结构和程序设 计信息。软件逆向工程也可被视作“开发周期的逆行”。对一项软件程序进行逆向工程,类似于 逆行传统瀑布模型中的开发步骤,即根据实现阶段的输出(即软件程序)还原出在设计阶段所 做的构思。软件逆向工程仅仅是一种检测或分析的过程,它并不会更改目标系统。软件逆向工 程可以使用净室技术来避免侵犯版权。
2. 逆向工程实现方法
软件逆向工程有多种实现方法,主要包括以下三种:
(1)分析信息交换过程。最常用于协议逆向工程,涉及使用总线分析器和数据包嗅探器。 在接入计算机总线或网络连接,并成功截取通信数据后,可以对总线或网络行为进行分析,以 制造出拥有相同行为的通信实现。此法特别适用于设备驱动程序的逆向工程。
(2)反汇编。使用反汇编器,把程序的原始机器码翻译成较便于阅读理解的汇编代码。这 适用于任何计算机程序,对不熟悉机器码的人特别有用,流行的相关工具有OllyDebug和IDA。
(3)反编译。使用反编译器,尝试从程序的机器码或字节码重现高级语言形式的源代码。
随着计算机技术在各个领域的广泛应用,特别是软件开发技术的迅猛发展,基于某个软
件,以反汇编阅读源码的方式去推断其数据结构、体系结构和程序设计信息,已成为软件逆 向工程技术关注的主要方向。目前应用的主流逆向工程软件有Imageware 、Geomagic Studio、 CopyCAD 、RapidForm、UG。
软件逆向工程的目的是研究和学习先进的技术,特别是当手里没有合适的文档资料,又很 需要实现某个软件功能的时候。也正因为这样,很多软件为了垄断技术,在软件安装之前,会 要求用户同意不去逆向研究。
7.5.4 软件再工程
软件再工程是软件逆向工程的扩充。软件逆向工程提取需要的信息后,软件再工程基于对 原系统的理解和转换,在不变更整个系统功能的前提下,产生新的软件源代码。软件再工程是 以软件工程方法学为指导,对既有对象系统进行调查,并将其重构为新形式代码的开发过程, 分为再分析、再编码、再测试三个阶段。
从软件重用方法学来说,如何开发可重用软件和如何构造采用可重用软件的系统体系结构 是两个最关键的问题。不过对再工程来说,前者很大一部分内容是对既有系统中非可重用构件 的改造。因此可以使用CASE 工具(逆向工程和再工程工具)来帮助理解原有的设计。
软件再工程的成本取决于重做工程的难度。源代码转换最便宜,程序结构重构次之,程序 和数据重构成本较高,体系结构迁移成本最高。尽管如此,软件再工程与重新开发软件相比, 成本和风险还是更小一些,原因是软件工程的起点不同。在软件再工程的各个阶段,软件的可 重用程度决定着软件再工程的工作量。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-01 05:15:08 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/818110.html
  2. 运行时间 : 0.217481s [ 吞吐率:4.60req/s ] 内存消耗:4,834.00kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=6f6237811b81533940ca4b8e7679323f
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001096s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.002720s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000922s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000650s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001422s ]
  6. SELECT * FROM `set` [ RunTime:0.001903s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.002333s ]
  8. SELECT * FROM `article` WHERE `id` = 818110 LIMIT 1 [ RunTime:0.002326s ]
  9. UPDATE `article` SET `lasttime` = 1782854108 WHERE `id` = 818110 [ RunTime:0.010935s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.001171s ]
  11. SELECT * FROM `article` WHERE `id` < 818110 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001347s ]
  12. SELECT * FROM `article` WHERE `id` > 818110 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001131s ]
  13. SELECT * FROM `article` WHERE `id` < 818110 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004537s ]
  14. SELECT * FROM `article` WHERE `id` < 818110 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003413s ]
  15. SELECT * FROM `article` WHERE `id` < 818110 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004082s ]
0.219206s