让你提前认识软件开发(52):系统某模块工作原理详述

第3部分 软件研发工作总结

系统某模块工作原理详述

【文章摘要】

某模块在系统中占有非常重要的地位,该模块能够对符合条件的动态信箱进行清理。本模块直接清理的信箱包括:过期动态信箱、冷冻信箱和空动态信箱;删除非动态信箱由本模块发送消息到其它模块完成。

本文对该模块的工作原理的详细介绍,为相关模块的开发和测试提供了有益的参考,同时也有利于现场人员对本模块进行维护。

【关键词】

系统  模块  数据库  流程

1. 本模块删除的信箱类型

本模块删除的信箱类型如图1所示:

图1 本模块删除的信箱类型

2. 本模块程序执行流程

本模块的主要程序流程如下:

2.1 程序执行总体流程

图2 程序执行总体流程

2.2 查询过期信箱流程

图3 查询过期信箱流程

说明:

(1) 本流程从数据库中查询出满足条件的过期信箱,包括动态信箱和非动态信箱。其中,动态信箱由本模块删除,非动态信箱由本模块发消息到其它模块进行删除。

(2) 过期信箱的保留天数是受系统参数控制的,这些参数的值可以手动配置。如果当前时间值与信箱的lastusetime字段值之差大于了对应系统参数的值,那么该信箱就要被扫描出来并被删除掉。

(3) 不管信箱是否为空(即信箱里面有无留言),只要是满足了过期删除的条件,都应该被删除掉。

2.3 查询冷冻信箱流程

图4 查询冷冻信箱流程

说明:

(1) 冷冻信箱是指状态值为某特定值的信箱,包括动态信箱和非动态信箱。动态信箱由本模块删除,非动态信箱由本模块发消息到其它模块进行删除。

(2) 冷冻信箱是否删除,是受某系统参数值控制的。如果当前时间值与信箱的某字段值之差大于了该系统参数的值,那么该信箱就要被扫描出来并被删除掉。

(3) 该流程与其它两个流程互不影响,即它们找出来的信箱没有重叠。

2.4 查询空动态信箱流程

图5 查询空动态信箱流程

说明:

(1) 空动态信箱指没有消息存在的动态信箱,即该信箱对应的留言表中内容为空。

(2) 在查找空动态信箱之前,要先判断删除空动态信箱标志是否被打开,即执行存储过程4查找系统表中某参数的值。如果该参数的值大于0,则表示删除空动态信箱标志被打开;如果该参数的值等于0,则表示删除空动态信箱标志被关闭。

(3) 在删除空动态信箱标志被打开的情况下,再执行存储过程5来查找空动态信箱。

(4) 该流程与查询过期信箱流程中找出来的信箱会有重叠。如果某一个信箱同时被以上两个流程找出来,那么只会向内存链表插入一次,即内存链表中的信箱号码不重复。

2.5 删除动态信箱流程

图6 删除动态信箱流程

说明:

(1) 前面流程找出的所有动态信箱,均在该流程中进行删除。

(2) 如果是过期动态信箱或冷冻信箱,那么直接调用存储过程6进行删除;如果是未过期的动态信箱,那么先要判断是否有留言,没有留言才会删除掉。

(3) 在删除信箱成功之后,要删除该信箱相关的其它信息。如果删除信箱失败,那么也要写失败日志。

 

3. 总结

在系统中,一个模块会完成很多的功能,只有对程序流程了然于心,在遇到问题的时候,才能够快速定位和排查。

本文对系统中某模块的工作原理进行了详细的介绍,旨在使与该模块有交互的接口开发人员能够明白本模块的运行原理,同时为测试部和现场客服的同事展开相关工作提供了参考。

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

时间: 2024-10-15 05:31:16

让你提前认识软件开发(52):系统某模块工作原理详述的相关文章

让你提前认识软件开发(47):同行评审

第3部分 软件研发工作总结 同行评审 在<浪潮之巅>这本书中,吴军老师描述了在Google早期的工作方式,其中有一段是这么写的:我一般会在吃完晚饭后把代码修改的清单发给克雷格做代码审核,他一般晚上10点左右会回复我,给我修改意见,详细到某一行多了一个空格. 吴军老师所描述的内容,其实就是软件开发中的同行评审流程. 几乎在所有的软件项目中,都需要同行评审.一个人不管能力多强,看问题的角度总会受到限制,写出来的程序和文档等定不会是十全十美的.如果能够让懂行的同事给参阅一下,并提出他们认为正确的意见

让你提前认识软件开发---学长的软件开发经验总结(18)

第1部分 重新认识C语言 C语言中常用的文件操作函数总结及使用方法演示代码 在C语言中,有关文件操作的函数多达数十种,但并非每个函数都经常会被用到.        本文对实际软件开发项目中常用的C文件操作函数的用法进行了总结,并用实际的C代码来演示了它们的用法. 1. C语言中常用的文件操作函数总结 (1) fopen 作用:打开文件. 表头文件:#include <stdio.h> 定义函数:FILE *fopen(const char *path, const char *mode); 函

让你提前认识软件开发(48):集成测试

第3部分 软件研发工作总结 集成测试 [文章摘要] 一般的软件研发项目均涉及到多模块和多功能.在各个模块实现其功能之后,把相关模块结合起来进行集成测试以验证整个系统是否满足需求是很有必要的. 本文以作者的实际项目经验为背景,描述了集成测试的整个过程,并对集成测试过程中的一些常见问题进行了简单的介绍. 1. 前言 大部分软件开发人员在工作过程中可能都会有这样的经历:明明在自己模块中实现得好好的功能,一旦和其它模块结合就会出现问题.因此,集成测试就显得很重要.这就有点像很多国内的标准与国际标准不统一

让你提前认识软件开发(33):数据操纵语言(DML)

第2部分 数据库SQL语言 数据操纵语言(DML) 数据操纵语言(Data Manipulation Language,DML)包括insert.delete和update语句,用于增.删.改数据. 本文用以下的表tb_employeeinfo作为例子加以说明: create table tb_employeeinfo (     employeeno         varchar(20)       not null,       -- 员工工号     employeename    va

让你提前认识软件开发(43):软件产品升级流程

第3部分 软件研发工作总结 软件产品升级流程 一个软件产品做出来之后,并不是说永远都不用变了.基于以下的种种原因,我们需要对原软件产品进行升级: (1) 用户对软件功能提出了新的要求,现在运行的软件不能满足用户的新需求. (2) 原软件存在bug,用升级的方式来修补这些bug. (3) 对原软件的程序进行了优化,新的软件能够提升程序的执行效率. (4) 自主开发了一些新功能,能够提升用户的体验. 对于通讯类软件产品来说,升级是一项浩大的工程,其中牵涉到很多人,包括:市场人员.开发人员.测试人员.

让你提前认识软件开发(42):性能测试

第3部分 软件研发工作总结 性能测试 [文章摘要] 对于通信领域的某些中间模块,其主要功能是对收到的消息进行处理然后发送,在两个模块之间充当了一个"桥梁"的作用.由于消息的条数有多有少,这就对其性能提出了要求. 本文结合作者的实际项目经验,描述了性能测试的整个过程,并对性能测试过程中的一些常见问题进行了简单的介绍. 1. 前言 在完成项目新需求的编码之后,对代码进行自测以验证功能的正确性是在所难免的.一般说来,花在测试上面的时间要更多一些.通过对自己所编写程序的详细测试,开发人员可以发

让你提前认识软件开发(38):完成第一个新需求

第3部分 软件研发工作总结 完成第一个新需求 在入职后不久,我得到了第一个新任务:完成某个版本的一个新需求.所谓的"需求",就是用文档的形式告诉我们要做什么,要实现什么功能. 在得到需求文档之后,我仔仔细细地阅读了好几遍,发现有些地方自己并不是很明白.如果在自己都不是很确定的情况下修改代码,其后果是很严重的,项目经理曾经这样告诫我.我把自己的疑惑以邮件的形式发给了SE(系统工程师),让他把需求讲明白.在我们公司,SE负责写需求,他们要把用户想要实现的功能写成文档,然后让软件开发工程师来

让你提前认识软件开发(46):首先是为人编写程序,其次才是计算机

第3部分 软件研发工作总结 首先是为人编写程序,其次才是计算机 "首先是为人编写程序,其次才是计算机",这是软件开发的基本要点,软件的生命周期贯穿于产品的开发.测试.生产.发布.用户使用.版本升级和后期维护等长期过程中,只有易读.易维护的软件代码才具有生命力. 在实际的软件开发过程中,可能是由于工作很忙的原因,很多开发人员只注重实现程序的基本功能,而忘记了编程规范,因此写出来的代码只能让计算机看懂,人要看懂很不容易.更有甚者,有些项目组为了赶进度,明确要求组员以实现产品功能为主,代码能

让你提前认识软件开发(45):代码的第一印象

第3部分 软件研发工作总结 代码的第一印象 我们都很注重给别人的第一印象,也有很多书籍教我们怎样给别人留下一个美好印象的.确实,如果我们第一眼看到某个人,就觉得很不爽,那么一定会在心理上产生抵触,以后再见到他,会有一种疏远的感觉.也正因为如此,当今社会交往中的"面子工程"很重要,不管怎样,先撑足了自己的脸面再说. 代码也一样,也会给别人留下或好或差的印象.当我们看到优美的代码时,会有一种想继续研究下去的欲望,甚至会有一种觉得很享受的感觉.相反,当我们看到丑陋的代码时,就会咬牙切齿,因为