`
61party
  • 浏览: 1047729 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

麻雀虽小,五脏俱全:从一个小功能看软件开发过程

阅读更多

周一到周三,我的领导亲自操刀,完成了一项小小的功能。

功能虽小,但从构思到实现,再到稳定运行,几乎包含了软件开发的全过程。

这个过程完美的展示了 编写一段优秀的代码 需要考虑多少东西,我记下来给大家分享一下。

需求很简单

分析各类日志文件(如:Oracle的错误日志)的内容,并将其中符合条件的行转发到Syslog。

需求分析

读取日志并过滤内容比较简单,这个需求的关键点在于:必须考虑时效性和性能。

通常日志是不断增长的,

时效性,要求程序尽快分析新增日志。

性能,要求程序能够对日志做增量分析,以免去不必要的I/O开销。

制定方案

根据需求分析得到的功能需求和非功能需求,我们一致认为,需要一种手段来实时获取文件中的新增内容。

在Unix/Linux上,tail指令可以实现这种功能。

我们调查tail指令后发现一个严重的问题:

tail无法处理日志的切换。

这一问题否决了我们使用unix已有指令写shell的想法,于是决定自己编写一个类似tail的小工具。

在实现方案上,可以采用C或者Java两种方式,基于如下考虑:

1、日志在Unix/Linux上的情况占80%以上

2、目标主机上不一定具备java环境

3、要求对目标主机的资源消耗尽量小

因此,决定采用C来做实现,由于项目组人员以JAVA为主,所以领导亲自上阵了。

技术预演

技术预演是为了验证方案的可行性,如果方案的设想因为技术原因无法实现,则需要修改方案。

这个小功能的技术预演主要包括:

1、分析tail源码,了解tail实时获取文件增量的原理。

2、调查C中如何发送Syslog

实现

基本功能

领导最初认为这个功能很简单,不会超过30行代码,而基本功能也确实很简单。

功能增强

支持打开多个文件,

支持日志切换,

支持使用正则表达式对行进行过滤,

支持通过命令行参数制定Syslog输出的Severity和Facility

测试

将程序编译后挂到实际环境中测试,很快发现一些问题,

比如:

对参数的异常情况考虑不足

文件切换有两种模式,需要兼容(一种inode变,一种不变)

需要检查目标文件是否存在、是否为普通文本文件(二进制文件无法处理、目录也可以当做文件打开)

程序修正

解决测试中遇到的问题,

增加文件类型判断、兼容文件切换模式、参数错误时输出Usage等

除此之外,程序还进一步考虑了异常情况下(如:进程被kill)对资源的释放等。

再测试

在HP-UX平台上,功能测试基本没发现问题,

但迁移到Linux平台上发现正则表达式解析有问题,不能过滤掉无用的行。

再次修正

这次修正主要解决跨平台兼容性问题。

验收测试和稳定性测试

在个平台上部署,并长时间运行。

打包发布

预编译出常见平台的二进制代码,

编写相关安装和使用说明。

----

软件开发,无论功能大小,其实都需要这些过程,

只是对于小功能,每个阶段的切换很快(有时候只是脑海里的想法而已),

但心里要清楚:

有时候想省事儿,可能反而会更加费事儿,比如需求分析的时候搞不清楚就开始做,只会引起很多的返工。

而另外一些时候,卡在一个地方太久,想不清楚,可能需要先试着向前推进,很多问题就会“迎刃而解”。

山穷水复疑无路,柳暗花明又一村,

这是在软件开发过程中经常能够体会到得心路历程。

分享到:
评论

相关推荐

    软件开发流程介绍加简单例子

    一个用Python开发的例子加测试的例子介绍软件开发的过程。麻雀虽小五脏俱全。。值得一看

    C#运控框架 雷赛运动控制 DMC系列 运动控制项目 C#源码 1.别看它界面丑,里面的应有应该尽有; 2.麻雀虽小五脏俱全,很

    C#运控框架 雷赛运动控制 DMC系列 运动控制项目 C#源码 1.别看它界面丑,里面的应有应该尽有; 2.麻雀虽小五脏俱全,很适合新手的一个学习项目,绝对推荐

    该项目完成了一个小型的操作系统。麻雀虽小五脏俱全,包含了操作系统的内存管理、进程管理、文件系统等部分.zip

    管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: ...

    源码学习-BookChat 微信小程序工程源码

    秀气:简洁、美观,给您焕然一新的视觉体验,让你都不敢相信这是一个后端程序员设计和开发实现的 丰富:注册、登录、搜索、书架、书签、阅读偏好设置等功能齐全,麻雀虽小,五脏俱全 强大:微信官方小程序开发工具...

    microbit 2.0.2 Linux 离线编辑器 积木编程 开发工具

    micro:bit是由英国BBC公司推出的面向青少年编程教育的微型计算机,别看它身材不大,但麻雀虽小五脏俱全,一块小板子上集成了加速度传感器,磁力传感器,两个可编程按钮,25个单色led,蓝牙等常用传感器设备,而尺寸...

    Java进销存管理系统

    采用Swing+SQLServer 2000实现了一个简单的进销存管理系统,正所谓麻雀虽小五脏俱全,对于初学者具有一定的参考价值,是不错的学习资源。 实现企业信息化管理是现代社会中小企业稳步发展的必要条件,它可以提高...

    基于Springboot + Mybatis +maven 开发的火车订票系统,课程设计,源码

    这是在软件测试课程里面开发的一个用来学习软件测试的小系统,麻雀虽小,但五脏俱全,提供给大家学习使用(agiltest文件夹为项目源代码) 项目名:火车订票系统 技术使用:后端Springboot + Mybatis + Maven包管理 ...

    结构化方法及其数据流图回执方法

    软件产业从诞生到如今的高速发展,不过经历几十年的时间,但是,麻雀虽小,五脏俱全。软件的开发过程经历了由浅及深、由简单到复杂的n多过程。包括由面条式编程到结构化编程再到后来的面向过程以及面向对象。 面条式...

    BeeGo框架实现的一个WEB应用实例

    本应用是用BeeGo框架进行的一个WEB应用快速开发,是一个在生产环境实际运行的商业软件。 适用数据库MySQL,详细配置请参阅conf\global\app.ini。本应用打包部署工具为Bee。 前端采用了amazeui制作工作台页面,标准的...

    PHPshop v1.0

    麻雀虽小五脏俱全,是一个很好的学习php项目开发的案例. 4: 代码完全开源,无任何加密,目的就是希望可以让更多的人来了解php ,学习php,使用php. 5: 源代码中重要功能部分已经加注详细注释说明,方便使用者和程序爱好者...

    办公系统设计-asp.net

    论文叙述了一个公司内部办公信息管理系统的概况。重点介绍了企业内部办公信息管理系统的实现过程:包括系统分析、 系统调查、 数据流程分析、功能设计、 数据库设计、 系统实现、 系统测试和调试。本系统主要...

    KTDEVBox一号机组.zip

    北京:北京:北京:北京:北京:北京:北京:北京:北京:北京:北京:北京图书馆图书馆图书馆图书馆图书馆图书馆图书馆图书馆,北京得到方式实现,很难形成比较完整的一个功能逻辑,也很难从更全的角度去来展示某些...

    小牛电脑计时软件v2.0

    麻雀虽小,五脏俱全,本软件功能强大,设计细微,是您电脑计时计费的不二之选。 2.0版采用Delphi工具开发,克服了1.0版使用C#开发,软件占用内存比较大,需要.NET Framework 3.5的支持,安装文件较大等缺点,使软件...

    爱易浏览器 v1.0.2.zip

    爱易浏览器(iie)是一款小巧简洁但功能完备的新型浏览器。他是基于IE内核,由爱易工作室耗时一年多开发完成的。   麻雀虽小但五脏俱全。爱易浏览器就是这样一只可爱的小麻雀。   多窗口打开页面,较小的系统...

    junit 4 资料

    Martin Fowler 如此评价 JUnit:在软件开发领域,从来就没有如此少的代码起到了如此重要的作用。它大大简化了开发人员执行单元测试的难度,特别是 JUnit 4 使用 Java 5 中的注解(annotation)使测试变得更加简单。 ...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    《单片机原理及应用》pdf

    就是一个电脑,只不过是微型的,麻雀虽小,五脏俱全:它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也...

    小牛电脑计时软件 2.0版

    麻雀虽小,五脏俱全,本软件功能强大,设计细微,是您电脑计时计费的不二之选。 1.开机启动,自动最小化到系统托盘,不影响正常操作。 2.软件乃作者亲手封装,无任何垃圾插件,不向系统文件夹增加垃圾文件,可任意...

    图像查看器 FastStone Image Viewer 7.5 中文多语版.zip

    FastStone Image Viewer 中文版是由 FastStone 公司开发的一款免费且小巧的看图软件,它提供使用者方便的操作界面,让使用者可以通过它的操作界面来浏览图片,且还支持了连续播放的功能,让使用者能够轻松的浏览目录...

    免费开源的截图工具 Greenshot 1.3.108 绿色中文版.zip

    虽然体积很小,但是其功能却毫不含糊,该有的功能都有了,只所谓麻雀虽小五脏俱全。通过快捷键即可进行截图:区域截图(Print),窗口截图(Alt+Print)和全屏截图(Ctrl+Print)。如果是笔记本,截图快捷键貌似需要...

Global site tag (gtag.js) - Google Analytics