软件工程与架构
文章平均质量分 53
糖醋鼻子
一个IT小兵
展开
-
.NET也有ORM--Grove一览
ORM的全称是Object Relational Mapping,即对象关系映射。它的实质就是将关系数据(库)中的业务数据用对象的形式表示出来,并通过面向对象(Object-Oriented)的方式将这些对象组织起来,实现系统业务逻辑的过程。在ORM过程中最重要的概念是映射(Mapping),通过这种映射可以使业务对象与数据库分离。从面向对象来说,数据库不应该和业务逻辑绑定到一起,ORM则起到这样转载 2006-08-24 09:36:00 · 1718 阅读 · 0 评论 -
由一个故事想到--开源项目的三层模式
不久前第2次看到这个故事:一个富翁,在自己家院子里修建了一个 偌大的花园,怕被人践踏,便用高高的围墙围了起来。但即便是这样,也常有人翻墙进去采摘他的花草,为此他雇用了多个保卫,但收效甚微。一筹莫展之时,富翁决定进行逆向思维,索性将围墙拆除,解雇保卫,让大家都能享受花园的美丽。结果花园经过大家的呵护和浇灌,先前的顾虑再也没有了。当然,这里包含几部分前提:1、你有足够的实力来建立一个能原创 2007-04-07 13:48:00 · 1152 阅读 · 0 评论 -
丢失配置君莫怕――手动修复损坏/丢失的Starteam Server配置文件
昨天服务器被热心的同事冷重启了(其实是处理的东西太多,暂时没反应),结果,今天早上打开Starteam,提示无法连接服务器,于是照例打开“计算机管理”的“服务”,启动Starteam Server(每次重启服务器都需要手动启动服务,尽管该服务已经配置为自动,不知何故,请高手明示),但一个错误对话框告诉我情况并不是像往常那样简单。服务无法启动。打开Starteam Server原创 2007-04-19 09:59:00 · 3238 阅读 · 0 评论 -
适配器模式在Web Service返回值中的应用
很多时候,Web Service程序以应用在SOA系统中的无连接状态形式存在,即,服务端对客户端请求的数据都是即时返回,不会为客户端保留即时数据,而由于跨平台的特性,不同语言间可以无缝兼容的只有基本数据类型,因此,对于其它一些复杂数据,我的系统采用了XML格式的定义方式。对于返回的数据无外乎以下三种模式:1、 基本类型2、 键-值(-类型)列表类型3、 二维表类型原创 2007-07-23 22:32:00 · 2158 阅读 · 0 评论 -
使用反射机制实现实体列表到DataTable的深层字段转换
在《适配器模式在Web Service返回值中的应用》(http://blog.csdn.net/zhmnsw/archive/2007/07/23/1704235.aspx)一文中,我们使用到了IDataListAdapter接口来实现返回值数据表的转换操作,其中对于NHibernate返回的实体列表我们使用了TDlaEntityList类来进行转换。但是,对于TDlaEntityLis原创 2007-11-02 14:16:00 · 1715 阅读 · 0 评论 -
向苦于无法进阶的程序员朋友推荐三本书
谈到进阶,其实是技术向思想升华的过程,这对于很多挣扎于coding线上的程序员朋友来说,无疑是水平增长的最重要也是最艰难的过程。还好,我们的前辈已经记录下了他们走过的弯路,也非常幸运,这些事情也被写成了书,下面我就向大家推荐三本温伯格的书,注意,这里没有任何技术,不要担心你看不懂。1、《理解专业程序员》--认识你自己2、《你的灯还亮着吗?》--认识你的职业3、《程序开发心理学》--原创 2008-03-02 11:33:00 · 1080 阅读 · 0 评论 -
寻找通用设计的着力点――0和1的哲学之通用VS专用
厌倦了CPP式的开发,也厌倦了每次都是重复的read、write,最近一段时间打算把经常用到的一些固有框架从系统中抽象出来,可敲敲打打、修修剪剪,却发现成型的代码竟只是一堆接口,没有任何实现。或许真应了那句话,“当你打算设计一个通用的框架,你会发现你什么也没干,而当你着手开始做的时候,它已经不再是一个通用系统。”就如“最正确的真理是句废话”一样,通用与专用是程序员永远无法摆脱的矛原创 2007-12-29 21:31:00 · 1046 阅读 · 0 评论 -
今天还是明天――一个人的软件工程
到底为什么要用软件工程,这个话题有些大,有时候实在搞不清楚别人是在考自己还是他们真的想了解,经验的微薄,使得每每被人问起的时候,手都不由自主的伸向那本《软件工程》而后又若有所失的放下它――项目中没有遇到困难,那书上所述并无法回答这个看似简单的问题。而即便是勉强拿出自己的些许心得向大家解释之后,也往往得到一个让人无奈的结论:“我一个人做项目用不到软件工程”――实在不清楚目前这样的作坊式工程还有多原创 2008-05-12 22:45:00 · 2289 阅读 · 5 评论 -
梯式计划模型
引言方案是为了解决一个问题而存在的,因此所有的方案都有其原因,那我们今天的话题也不例外。作为软件工程的一部分,计划在整个过程中占有举足轻重的地位,可以用一句官僚的话来说就是,它是一场战争的排头兵,直接影响了任务的成败。当然我们没必要去评论这句话是不是有些夸大事实,但作为实务派的我们,这一点我们是切有体会的。前述读过《软件估算》这本书的朋友应该还记得这句话:估算和计划是两个相原创 2008-05-16 22:59:00 · 1235 阅读 · 0 评论 -
设计中的微创手术――使用重构原则消灭重复代码
与演习的作用一样,当我们认知了“重构”这个词之后,在设计时会时刻警惕法则所提到的各种味道,一旦嗅到一些坏的味道,那么就意味着我们要做一些改变了。当然,如果你并不知道这个可能神秘的词汇,那么也没关系,下面的情况我想大家都遇到过。我们有一个读取文件的函数readFile(string filepath),这个函数一直运行的很好。但是突然在某一天,我们要加入“读取特定格式的文件”这个新的原创 2008-11-13 23:58:00 · 878 阅读 · 0 评论 -
道法归一――BeijingOpenParty November:Attraction From Autumn Wind(秋风引)纪要
虽然我们亲爱的cleverpig把这次活动命名为“秋风引”,但老天爷似乎已经把冬天带到了北方。不过可喜的是,大家的热情丝毫没有受天冷的影响,活动反而更加的火热――竟然有人公开拉单身的GG MM们去相亲大会,嗯,据去过的哥们说,不是一般的热… 这次的主持人同样是我们的美女璎珞天色(很奇怪,为什么只有这个我才会想起介绍主持人来呢?…tin兄勿躁勿躁…)和tin。由于人比较多,站立原创 2008-11-17 22:35:00 · 1558 阅读 · 1 评论 -
瀑布和XP开发过程模型
瀑布与XP应该是当前开发过程的两个典型,他们分别代表了软件过程方法论的两大阵营,并在各自的领域中发挥着对方不可替代的作用。关于这两者的分析、讨论甚至争论,从它们被提出那天起就不绝于耳,作为初入门的开发者,也一时无法窥其真身,因此以下所述权当笔记,以一家之见总结一下。瀑布过程模型 瀑布过程模型描述了典型的瀑布式开发过程,以及各个阶段间的关系。 根据传统瀑布原创 2009-02-22 12:56:00 · 6592 阅读 · 1 评论 -
关于最小化设计(尽早实现)的一些想法
当提到最小化设计或者尽早实现时,保守派最强有力的反击就是“没有设计就没有编码”“最小化设计就是没有整体设计”“尽早设计会失去统一过程的控制”,但是事实到底是不是这样呢?问题(或者争论)的实质在于到底什么是最小化设计。我们先来看看最小化设计的描述:1、最小化设计要求尽早的实现用户所想要的优先级最高的需求点。2、尽快的让用户看到产品,以便确定其是否为用户想要的,并带着用户的反馈开始原创 2009-03-20 17:19:00 · 1293 阅读 · 0 评论 -
最小化设计(尽早实现)的时机
在《关于最小化设计(尽早实现)的一些想法》一文中,我们清楚了什么是最小化设计(尽早实现),但是只知道What还不足以让我们正确的实施它,那今天的话题就是When/Where--时机。上文我们提到了最小化设计(尽早实现)的两个方面,抽象和实现,在此我们也同样分开讨论。1、抽象的时机。 日积月累的丑陋设计(违反原则的设计)会腐蚀整个系统,到你不得不进行清理的时候,工作就不仅仅是擦擦盘子那样简单了原创 2009-03-27 10:24:00 · 821 阅读 · 0 评论 -
使用Starteam视图(View)管理项目版本分支
在《Starteam中使用标签管理里程碑版本》和《Starteam中使用View Label来自定义版本》中,我们使用了标签来管理项目的阶段性版本,此方法简单直观,但又不乏蹩脚之处。本文试图为您介绍一个基于视图(View)的项目版本分支管理方法。试想,当我们的项目在经历了1.0、2.0到达3.0版本时,发现2.0版本出现了一处问题,需要被修复,那么用我们之前提到的方法,就可以Check Out原创 2007-03-14 22:06:00 · 3258 阅读 · 1 评论 -
Starteam中使用View Label来自定义版本内容
在上次《Starteam中使用标签管理里程碑版本》一文中,我们介绍了使用标签来管理项目阶段性版本的方法,而实际应用中,我们却会遇到诸多类似这样的问题:我只想查看3.0版本所包含的工程文件,Starteam却给我显示了所有版本的;作为一名测试人员,我不需要看到开发人员的工程配置文件,而我却看到了所有。等等不一而足。其实,Starteam早已经为我们准备了功能强大的过滤器――View,而其下的Vi原创 2007-03-12 23:17:00 · 1897 阅读 · 0 评论 -
Delphi的世界,你在哪个位置?
Delphi,一个几近完美的语言。有人赞之,也有人厌之,这很正常,因为我们处在不同的阶段。你在哪个位置?我们一起跳出来看看吧。本文仅是小生几年来(几年?晕,几年就这水平?) 学习delphi的些许总结,也许很多东西并不适合你,因此只以此来抛砖引玉,望各位板砖多用在祖国建设的火热工程中。好,闲言少扯,这就开始。■崭露头角的Delphi Toucher心情:轻衫薄履,稍带羞涩的走近Delphi,为原创 2007-01-20 01:00:00 · 3005 阅读 · 3 评论 -
我“恨”ECO--ECO学习随笔
做了几个月的项目眼看要完了今天有时间学习了一下李维的ECO教程,突然发现,以前的工作几乎是白做了。ECO已经帮我们想到了大部分 ,今天看完了O/R Mapping,说实话,看完我几乎吐血了,要知道这块我可写了N天,而且异常的简陋,要是早用上ECO……。建立一个ECO Package,拖几个控件,用Together画几个类图,连几条线,编译...数据库、Mapping类统统建好了,没用我原创 2006-08-30 20:05:00 · 1199 阅读 · 0 评论 -
ECO资料之OCL详细说明书下载地址
http://www.omg.org在Document中搜索OCL即可最新的为03-08-08定义的原创 2006-09-06 09:38:00 · 1183 阅读 · 0 评论 -
CaliberRM 2005 R2 SP1升级一波三折
CaliberRM 是Borland的一款需求分析管理软件,是Borland ALM项目的一部分,其强大的需求管理和分析功能,配合Borland ALM其他工具,极大的提高了软件的开发效率和质量,你可以到www.borland.com下载一开始,我单位和家里的机器都安装有2005版,不久Borland将其升级到了 最新版本2005 Release 2 (简称R2) SP1,开始支持window原创 2006-05-01 01:20:00 · 2631 阅读 · 0 评论 -
小心你的全局变量!--“悬挂式全局”设计方式小议
很多时候(似乎昨天还有人在QQ上问Delphi怎么定义全局变量...),很多人都喜欢用全局变量来保存一些数据, 这样可以随时随地的调用他们。这样看似方便(实际上也很方便),但这个时候你却为自己埋下了很深的隐患。全局,顾名思义就是在任何地方都可以访问到的,也是任何机制都可以修改或显示的(当然你可以对它加一些限制,但这些限制终归也是全局的),那么这个时候,它就成了一个不可控量。所谓不可控量简单的说原创 2006-09-27 00:11:00 · 1352 阅读 · 1 评论 -
Web Service接口数据交换标准--类图及类说明
本文列出了我常用的Web Service接口数据交换标准,现拿出来与大家分享,由于是根据项目而来,所以通用性及效率可能有所欠缺,望共同探讨。代码使用C#实现类图及类说明 数据交换所涉及类图调用者调用远程接口时,将复杂数据参数(一维表数据)使用TStrList封装,并包装为XML格式,同时使用Tbase64类将其编码为Base64格式传出。接口端,TRe原创 2006-10-27 15:51:00 · 2557 阅读 · 0 评论 -
软件开发的几个阶段
1、编写代码2、编写程序3、程序设计4、软件设计5、系统设计6、架构设计原创 2006-10-31 19:03:00 · 1441 阅读 · 1 评论 -
WebService接口数据交换标准--参数
本节对参数相关的定义做了详细说明,包括参数相关类以及参数标准。参数相关类TReturnManagerpublic class TReturnManager ...{ int returnNo = 0; string returnMsg = "成功"; ArrayList returnStr; TStrList r原创 2006-10-27 15:56:00 · 10332 阅读 · 1 评论 -
Web Service接口数据交换标准--返回值
本节对返回值标准进行了详细说明,包括返回值相关类型和返回值数据标准。返回值相关类:TXmlReturn public class TXmlReturn { private int frno;原创 2006-10-27 16:00:00 · 3701 阅读 · 0 评论 -
通用管理系统的模糊框架(随手记1)
管理系统做的不多,但不论是什么语言开发,都能从中发现很多通用的地方,平时空闲了随时记下来的。1、登录登录对话框可以说是管理系统最常用的模块了,所以,有必要将其最大限度的重用。一个典型的登录对话框不外乎下面这几点:* 用户名输入* 密码输入* 角色选择* 验证权限* 信息反馈因此,用类封装好这几个属性或者方法即可。2、基本表增、删、改很多时候,系统对于基本表的增、删、改是原创 2006-07-06 21:33:00 · 1693 阅读 · 0 评论 -
Starteam中使用标签管理里程碑版本
在Borland Starteam中,我们每Check In一个修订版本,系统就会给这个文件的Revision设定一个新的版本号。所以,我们可以Check Out出任何一个Revision的文件,当然这是版本管理系统最基本的功能。文件拥有Revision版本号,当然一个工程也要有自己的版本,我们会在Starteam下管理该工程所有的版本,即里程碑标记(可以简单的认为一个工程在某个里原创 2006-11-24 15:39:00 · 2512 阅读 · 1 评论 -
通用管理系统的模糊框架(随手记2)
上次我们说到了数据库操作,由于水平有限,一些疏忽和错误还清大家批评指正,好了,我们接着说。4、角色管理说到角色,我们很容易联想到前面提到的登录框,其实它们之间是互相关联工作的。登录框只是角色管理的一个最基本的前台表现层,所以,重点还是在于后台角色逻辑的设计。一般的,我们设置的角色相对比较少,比如一个新闻系统,大致有管理员、录入员、维护员等角色,系统为每个角色指定了合法的操作,同时在每个原创 2006-07-21 09:47:00 · 1132 阅读 · 0 评论 -
ECO视频教程下载
是一个国内组织做的ECO教学视频,讲解比较直观,推荐下载地址:http://www.eimhe.com/bbs/forumdisplay.php?fid=272原创 2006-12-04 14:35:00 · 1631 阅读 · 1 评论 -
CaliberRM 2005 R2 SP1升级一波三折(后记)
早在去年5月初我写过一篇CaliberRM 2005 R2 SP1升级一波三折http://blog.csdn.net/zhmnsw/archive/2006/05/01/701660.aspx 虽然那时候稀里糊涂的把问题解决了,可最终原因到今天才柳暗花明问题的关键在于 caliber_srv.exe 这个程序,它负责了CaliberRM服务的启动工作。当时只是关注了它的一些原因,原创 2007-01-06 23:49:00 · 1172 阅读 · 0 评论 -
正在使用的自动化环境交互示意图
自动化环境帮助团队节省了大量的时间,覆盖了构建、回归测试、发布等各种容易出现浪费的阶段,使用可靠的计算机代替会感到疲劳的人。 现将目前项目所使用的自动化环境交互图放出,大家可以参考合理取舍,目的是减少无谓的浪费,让大家的开发更加专注。原创 2009-12-16 15:32:00 · 1250 阅读 · 0 评论