企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
[TOC] ## 结构化方法 **结构化方法**的开发过程一般是先把系统功能视为一个大的模块,再根据系统分析与设计的要求对其进行进一步的模块分解或组合。 ## 遗产系统 遗产系统(Legacy System)的演化策略分为淘汰策略、继承策略、改造策略和集成策略 1. 淘汰策略 - 第三象限为**低水平、低价值区**,即遗留系统的技术含量较低,且具有较低的业务价值。对这种遗留系统的演化策略为淘汰,即全面重新开发新的系统以代替遗留系统。完全淘汰是一种极端性策略,一般是企业的业务产生了根本变化,遗留系统已经基本上不再适应企业运作的需要;或者是遗留系统的维护人员、维护文档资料都丢失了。经过评价,发现将遗留系统完全淘汰,开发全新的系统比改造旧系统从成本上更合算。 - 对遗留系统的完全淘汰是企业资源的根本浪费,系统分析师应该通过对遗留系统功能的理解和借鉴,可以帮助新系统的设计,降低新系统开发的风险。 2. 继承策略 - 第二象限为**低水平、高价值区**,即遗留系统的技术含量较低,已经满足企业运作的功能或性能要求,但具有较高的商业价值,目前企业的业务尚紧密依赖该系统。对这种遗留系统的演化策略为继承。在开发新系统时,**需要完全兼容遗留系统的功能模型和数据模型**。为了保证业务的连续性,新老系统必须并行运行一段时间,再逐渐切换到新系统上运行。 3. 改造策略 - 第一象限为**高水平、高价值**区,即遗留系统的技术含量较高,本身还有极大的生命力。系统具有较高的业务价值,基本上能够满足企业业务运作和决策支持的需要。这种系统可能建成的时间还很短,对这种遗留系统的演化策略为改造。改造包括系统功能的增强和数据模型的改造两个方面。系统功能的增强是指在原有系统的基础上增加新的应用要求,对遗留系统本身不做改变;数据模型的改造是指将遗留系统的旧的数据模型向新的数据模型的转化。 4. 集成策略 - 第四象限为**高水平、低价值区**,即遗留系统的技术含量较高,但其业务价值较低,可能只完成某个部门(或子公司)的业务管理。这种系统在各自的局部领域里工作良好,但对于整个企业来说,存在多个这样的系统,不同的系统基于不同的平台、不同的数据模型,形成了一个个信息孤岛,对这种遗留系统的演化策略为集成。 ## OTM 全称是 Object-Modeling Technique(对象建模技术),它是一种早期的面向对象分析与设计方法 OMT 方法使用了建模的视图,讨论如何建立一个独立的应用程序模型,包括**对象模型**、**动态模型**和**功能模型**。 * **对象模型 (Object Model)**: * 这个模型是 OMT 的核心,它侧重于描述系统的静态结构,即系统中的对象及其关系。 * 它使用 **类图(Class Diagrams)** 来表示对象、属性、操作以及对象之间的关联、继承和聚合关系。 * 这部分模型类似于数据库设计中的实体关系图(ERD),但它更专注于面向对象的概念。 * **动态模型 (Dynamic Model)**: * 这个模型描述了系统的时序行为,即对象在不同事件刺激下状态如何变化。 * 它使用 **状态图(State Diagrams)** 和 **事件追踪图(Event Trace Diagrams)** 来表示对象的行为流程、状态转换和事件序列。 * 状态图展示了对象可能处于的所有状态以及在特定事件发生时如何从一个状态转换到另一个状态。 * **功能模型 (Functional Model)**: * 这个模型描述了系统的数据转换过程,即数据的流向以及操作如何改变数据。 * 它使用 **数据流图(Data Flow Diagrams)** 来表示系统的输入、输出以及数据在操作中的传递过程。 * 功能模型主要关注“做什么”,而不是“如何做”,它描述了操作的逻辑,但不涉及其执行细节。 ## 面向对象的分析模型 ### 组成 - 面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成; - 设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。 ### 构建用例模型步骤 1. 识别参与者: 明确系统的外部交互对象是谁 2. 识别用例: 出系统对每个参与者提供的主要功能(即用例) 3. 描述用例: 明确每个用例的行为和细节 4. 组织和绘制用例图: 用图形化方式(如:UML 用例图)表达系统的用例结构 ## 集成测试计划 集成测试**计划**通常是在**设计阶段**阶段完成,集成测试一般采用黑盒测试方法美 ## 动态测试和静态测试 1. 动态测试是通过运行程序发现错误,包括黑盒测试(等价类划分、边界值分析法、错误推测法)与白盒测试(各种类型的覆盖测试)。 * **黑盒测试(Black-Box Testing):** 又称功能测试。它将程序视为一个“黑盒子”,测试人员不关心内部代码结构,只关注程序的功能和用户界面。 * **等价类划分:** 将输入数据划分为若干个**等价类**,每个等价类代表一类有效的或无效的输入,从中选取一个代表进行测试。 * **边界值分析:** 专门测试输入范围的**边界**,因为错误最常出现在这些地方。例如,如果一个输入范围是 1-100,边界值测试会包括 1、100 以及 0、101。 * **错误推测法:** 基于测试人员的经验和直觉,推测程序可能出错的地方,并设计测试用例来验证。 * **白盒测试(White-Box Testing):** 又称结构测试或玻璃盒测试。它关注程序的**内部逻辑结构**和代码路径,通过测试来验证所有代码路径是否被正确执行。 * **语句覆盖:** 确保每条**语句**都至少被执行一次。 * **判定覆盖:** 确保每个**判定**(例如 `if` 语句)的**真**和**假**分支都至少被执行一次。 * **条件覆盖:** 确保每个判定中的**每个条件**的真和假都至少被执行一次。 * **路径覆盖:** 确保所有可能的**执行路径**都至少被执行一次。这是最强的覆盖类型,也最难实现。 2. 静态测试是人工测试方式,包括桌前检查(桌面检查)、代码走查、代码审查不实际运行程序,而是对代码、文档等进行静态分析。它的目标是在程序执行前,尽早地发现潜在的错误。 * **人工测试方式:** * **桌前检查(Desktop Checking):** 程序员自己逐行阅读自己的代码,手动检查逻辑和语法错误。 * **代码走查(Code Walkthrough):** 由一个小的团队(通常包括作者和几位同事)开会,模拟代码的执行流程,共同发现错误。这是一种非正式的审查。 * **代码审查(Code Review):** 是一种更正式的、系统的审查过程,通常由一个或多个审查员对代码进行详细检查,并留下书面记录和反馈。 * **自动测试方式:** 您的描述中只提到了人工方式,但现代软件开发中,静态测试更多地依赖于**自动化工具**。 * **静态代码分析工具(Static Code Analyzers):** 这类工具会自动扫描代码,检查语法错误、编码规范、潜在的安全漏洞(如缓冲区溢出)和逻辑错误。例如,GoFmt、Pylint、ESLint、Sonarqube 等工具都属于此类