标签搜索

开发与运行

wehg489
2026-02-10 / 0 评论 / 4 阅读 / 正在检测是否收录...

模块一:软件开发模型与方法论
核心:区分不同模型的特点和适用场景。
mlfwiecp.png

模块二:需求分析与系统设计
需求分析:
需求分类:功能需求(做什么)、性能需求(做到什么程度)、非功能需求(安全性、可靠性等)数据需求。
分析工具:
数据流图(DFD):描述数据在系统中的流动和处理。元素:外部实体、加工、数据存储、数据流。
数据字典(DD):定义DFD中所有元素的详细说明。
实体-关系图(ER图):用于数据建模。(与数据库设计直接相关)
系统设计:
阶段:概要设计(架构设计、模块划分)、详细设计(模块内部算法与数据结构)。
设计原则:高内聚、低耦合。
设计工具:结构图(SC图),用于描述软件的模块结构及调用关系。

模块三:软件测试与维护

核心:测试的分类、阶段、方法及维护类型。
测试阶段(按执行顺序和主体分):
mlfx13iw.png

测试方法:

黑盒测试:不关注内部结构,只检查功能。方法:等价类划分、边界值分析(最常用)、错误推测法。
白盒测试:关注内部逻辑结构。方法:逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、路径覆盖等)。

系统测试内容非常广泛,主要可以归纳为以下几个核心类别:

一、功能性测试
这是系统测试的基石,验证软件是否实现了需求规格说明书中规定的所有功能。

示例:
用户注册、登录功能是否正常?
电商系统的下单、支付、退货流程是否完整畅通?
搜索功能返回的结果是否准确?
所有按钮、链接、表单提交是否按预期工作?

二、非功能性测试(质量属性测试)
这部分关注软件在“多好”的层面上运行,而非“能不能”运行。它决定了用户体验和系统可持续性。

  1. 性能测试:
    负载测试:在正常和高峰预期用户负载下,系统表现如何?(如:1000人同时购物)
    压力测试:超出极限负载时,系统何时会崩溃?如何崩溃?(如:5000人瞬间抢购)
    稳定性/耐力测试:长时间(如24小时)运行,系统是否稳定,有无内存泄漏?
    并发测试:多个用户同时操作同一功能或数据时,系统是否正确处理。
  2. 可用性测试:
    用户界面是否直观、易用、美观?
    导航是否清晰?用户能否在没有帮助的情况下完成任务?
    是否符合目标用户的操作习惯?
  3. 兼容性测试:
    跨浏览器测试:在Chrome, Firefox, Safari, Edge等主流浏览器上是否表现一致?
    跨平台/设备测试:在Windows, macOS, iOS, Android等不同操作系统或手机、平板、电脑上是否正常?
    分辨率/屏幕适配测试。
  4. 安全性测试:
    是否存在SQL注入、跨站脚本(XSS)等常见漏洞?
    用户认证和授权机制是否牢固?(如普通用户能否访问管理员页面?)
    敏感数据(如密码、银行卡号)是否加密传输和存储?
  5. 可靠性测试:
    系统在指定条件和时间内,无故障运行的能力如何?
    发生故障后,能否优雅地恢复或提示?

三、其他专项测试
安装/卸载测试:软件的安装过程是否顺畅?安装后能否正常运行?卸载是否彻底?
文档测试:用户手册、帮助文档、在线提示等内容是否准确,且与软件实际功能一致?
备份与恢复测试:系统提供的备份和灾难恢复机制是否有效。
本地化/国际化测试:针对不同语言、地区(如日期、货币格式)的版本是否适配正确。

特别的,路径测试其实是白盒测试的一种经典技术,属于代码级测试。它关注的是程序内部逻辑路径的覆盖情况,比如判断分支的组合。这和系统测试的黑盒视角有本质区别——系统测试是把软件当整体,不关心内部路径,只关心输入输出是否符合需求。

软件维护:

改正性维护:修复发现的错误(约20%)。
适应性维护:使软件适应变化的环境(硬件、OS等)(约25%)。
完善性维护:扩充功能、改善性能(约50%)。
预防性维护:为未来改进打基础(约5%)。

模块四:项目管理与质量保证
软件度量 - McCabe环路复杂度:
公式:V(G) = m - n + 2。其中 m 是程序图的有向边数,n 是节点数。
意义:衡量程序逻辑复杂性,数值越高越复杂,可测试路径越多。(每年几乎必考1题计算)
质量模型:
ISO/IEC 9126 软件质量特性:6大特性(功能性、可靠性、易用性、效率、可维护性、可移植性)。
过程改进模型:
CMM/CMMI能力成熟度模型:5个等级。1-初始级,2-已管理级,3-已定义级,4-量化管理级,5-优化级。

重要知识点清单
McCabe环路复杂度的计算。
四种软件维护类型的定义与识别。
各测试阶段的执行者和依据文档(表格对比)。
瀑布模型 vs. 敏捷开发的特点对比。
黑盒测试 vs. 白盒测试的代表性方法。
软件设计原则:高内聚、低耦合。
CMMI的5个成熟度等级名称。

中间件的技术定义和核心作用
在计算机系统中,中间件是位于操作系统和具体应用程序之间的软件层。它为不同的应用程序、组件或服务提供通信、协调、管理和数据交换的通用服务。

它主要解决以下问题:

连接与通信:让运行在不同机器、用不同语言写的程序能互相“说话”。(就像服务员在客人和厨房之间传话)。

简化开发:程序员不用每次都从头写网络通信、安全认证、数据格式转换等复杂又通用的代码,直接使用中间件提供的功能就行。(就像餐厅不需要培训每个客人如何与厨师交流,有服务员代劳)。

解耦:让前端和后端相互独立。只要中间件的“接口”(菜单和服务规范)不变,厨房换了新厨师(后端系统升级)或APP换了新界面(前端改版),彼此都不受影响。(只要服务员还在,沟通方式不变,后厨和前厅可以各自优化)。

提供通用服务:比如消息队列(保证订单不丢失)、事务管理(保证“下单”和“扣款”要么都成功要么都失败)、安全控制、负载均衡(把大量订单合理分配给多个厨师)等。

常见的中间件类型(例子)
Web服务器/应用服务器:如 Nginx, Apache, Tomcat。它们是浏览器(客户端)和后台程序之间最重要的中间件,负责接收HTTP请求,转发给后端程序,再把结果打包成网页返回。

消息队列中间件:如 RabbitMQ, Kafka。像一个可靠的“快递柜”或“传话筒”。A服务把消息存进去就可以干别的事了,B服务有空的时候再来取。保证了系统在高峰时段不会崩溃,服务之间也不会互相等待。

数据库中间件:如 MyCat,各种数据库连接池。它管理应用程序和数据库之间的连接,就像“数据库连接的电话总机”,高效分配和复用连接资源。

远程过程调用框架:如 gRPC, Dubbo。它让你调用另一个机器上的服务,就像调用自己电脑上的一个函数那么简单,中间所有的网络通信细节都被它隐藏了。

API网关:如 Kong, Spring Cloud Gateway。它是所有外部请求进入系统的“总前台”和“安检口”,统一负责鉴权、限流、日志、路由到正确的内部服务。

我们需要判断哪个不是中间件技术。先回顾中间件技术的定义:中间件是位于操作系统和应用程序之间的软件,提供通信、协调、数据交换等通用服务,用于连接分布式系统中的不同组件。
A) JavaRMI (Java Remote Method Invocation):Java远程方法调用,是一种用于在Java虚拟机之间进行远程通信的机制,允许一个Java程序调用另一个Java虚拟机上的对象方法。它是典型的中间件技术,用于分布式对象通信。

B) CORBA (Common Object Request Broker Architecture):公共对象请求代理体系结构,是一种跨语言、跨平台的分布式对象通信标准,由OMG组织制定。它明确是中间件技术,提供了对象请求代理(ORB)作为中间件。

C) DCOM (Distributed Component Object Model):分布式组件对象模型,是微软的分布式组件技术,用于在不同机器上的组件间通信。它也是中间件技术。

D) JavaApplet:Java小应用程序,是一种嵌入在网页中运行在浏览器端的Java程序,主要用于客户端交互。它运行在客户端浏览器中,不提供分布式通信服务,也不属于中间件。中间件通常位于后台,连接不同组件,而Applet是前端客户端技术。

在结构化分析中,DD(数据字典)中描述的数据对象通常被称为“数据元素”或“数据项”。

mlhoqt28.png

动态绑定:过程调用与具体执行的代码在程序运行时才确定,常见于面向对象中的多态(如虚函数调用)。
静态绑定:过程调用与具体执行的代码在编译时即可确定,如普通函数调用或非虚方法调用。
这两个概念体现了程序设计中绑定时间的差异,动态绑定提供了灵活性,而静态绑定效率更高。

在项目管理(如PMP)和风险管理体系中,设定优先级最常用的指标是风险暴露(也叫风险敞口或风险重要度)。它是一个综合值,计算公式通常为:
风险暴露 = 风险概率 × 风险影响
为什么不是单纯的“影响”或“概率”?
风险影响:只考虑后果的严重程度。但如果一个“灾难级”影响几乎不可能发生,优先级其实不高。
风险概率:只考虑发生的可能性。但如果一个“极可能”发生的事故影响很小,同样不需要优先处理。
风险控制:这是应对措施,不是设定优先级的依据。

简单对比记忆:

风险影响:这事有多惨?
风险概率:这事多大概率发生?
风险暴露:综合以上两者,算出这笔风险账到底有多大。优先级正是依据这个综合值从高到低排的。
因此,虽然“影响”和“概率”是重要参数,但题目问的是“设定优先级的根据”,标准答案是两者的乘积——风险暴露。

0

评论 (0)

取消
歌曲封面
0:00