软件架构设计之横切竖割需求

软件架构强调的是整体,而整体性的设计决策必须基于对需求的全面认识; 软件架构应该是稳定的,而遗漏了重要需求的架构设计面临的是返工的命运。 一言以蔽之,全面认识需求,是生产出高质量软件所必须的“第一项修炼”。 作为一个软件架构师,也不应对所有需求“胡子眉毛一把抓”,而是应全面认识需求——分门别类地将需求梳理清楚。 下图所展示的“需求空间分割图”揭示了全面认识需求的要求。要全面认识需求,意味着我们必须从不同级别来考察需求:组织级、用户级、开发级,还要对每个级别考虑不同类型的需求:功能需求、质量属性、约束。 一方面,需求是分层次的。一个成功的软件...
volte 发布于 2007-06-06 17:08 | 阅读 1906 次 | 评论 0 条

怎么办?

为什么博客的界面总是显示的时候出问题?为什么他们不相信我说的话?为什么他们还要坚持?为什么自己如此优柔寡断?为什么无法适应一个人?为什么不想学习?为什么学不会独立?为什么坚强不起来?为什么总有如此多的顾虑?为什么总有这么多的烦恼? 难道是自己太过为赋新辞强说愁?难道得不到的东西就只有美好的回忆,而在身边的却尽是缺点?
alicelifei 发布于 2007-06-06 05:23 | 阅读 1058 次 | 评论 0 条

Spring之概念入门(转)

Spring是什么spring是一个开源的java框架,集成了各种主流的技术包括web mvc,orm,ejb,rmi,javamail等他就象一个粘合济,在实际项目中,将前后台程序粘合在一起,构建出一个完整的系统。 spring中的各个组件也可独立使用,你可以在你的项目中选择性的使用spring提供的某一部分功能 Spring的核心是ioc和aop 什么是IOC Inversion of Control,控制反转或反转控制,其和另外一个概念DI-Dependency Injection依赖注入等价。 到底如何来理解IOC? IOC确切的说,他是一种思想、概念,跟OOP是一种...
jklm02 发布于 2007-06-06 02:49 | 阅读 1132 次 | 评论 0 条

[转载]VS.NET 2003集成环境插件开发指南

VS.NET 2003集成环境插件开发指南 转载自摩诘的博客,文章出处:http://www.cnblogs.com/dragon
ChenMo 发布于 2007-06-05 12:51 | 阅读 1053 次 | 评论 0 条

页角连接

<div><!----页角连接----> <% String linktitle = ""; String link = ""; String linkstop="||<<"; ResultSet rs_link=sql.query("select id,title from article where fid='"+fid+"' and id>'"+id+"' order by time limit 0,1;"); if(!rs_link.next()){ link=linkstop; } else{ rs_link.next(); linktitle=rs...
kingyor 发布于 2007-06-05 05:59 | 阅读 1901 次 | 评论 0 条

朋友?情人?

我只是一个很好的朋友,却不是一个合格的女朋友。
alicelifei 发布于 2007-06-04 20:26 | 阅读 1023 次 | 评论 0 条

[原创]小型在线考试系统(ASP+Access)

测试的管理员登陆帐号信息: 用户名(不区分大小写):admin 密码(数字): 1 本系统的作用: 仅用于 ASP 编程学习的参考,并无实际的用处。 系统的主要功能: 1. 后台管理考生及试题 2. 考生考试 下载地址: 请单击此处下载『小型在线考试系统』 反馈意见及建议: 有任何中肯的建议或意见,或添加删除功能,或了解系统编写过程,均可联系本人。 腾讯QQ: 6907185 E-Mail: ...
ChenMo 发布于 2007-06-04 05:43 | 阅读 3867 次 | 评论 0 条

考试魔鬼定律

本人考试时总喜欢左顾右盼,因而目睹作弊考生之种种惨死状。近年来回忆考场沧桑,总结了一些考试魔鬼定律。    一、递推定律:你偷看前面的人的考卷时,后面的人一定在偷看你的考卷。    二、莫非定律:你往往相信偷看来的答案是对的,可往往你自己的答案是正确的。    三、橡皮定律:捡掉在地上的橡皮时,你总有种做贼心虚的感觉。    四、不抬头定律:抄别人的答案时,千万别抬头。一抬头,老师就来了。    五、时间换算定律:考试前,一秒等于十分钟。考试时,十分钟等于一秒。    六、作弊者与监考老师定律:所有被抓住作弊的学生都说自己的行为是清白的,所有抓住作弊者的老师都说自己的判断是正确的。   ...
syuanq 发布于 2007-06-03 09:49 | 阅读 1061 次 | 评论 0 条

哲理人生

1、记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的 2、能冲刷一切的除了眼泪,就是时间,以时间来推移感情,时间越长,冲突越淡,仿佛不断稀释的茶。 3、怨言是上天得至人类最大的供物,也是人类祷告中最真诚的部分 4、智慧的代价是矛盾。这是人生对人生观开的玩笑 5、世上的姑娘总以为自己是骄傲的公主(除了少数极丑和少数极聪明的姑娘例外)6、如果敌人让你生气,那说明你还没有胜他的把握 7、如果朋友让你生气,那说明你仍然在意他的友情 8、 令狐冲说“有些事情本身我们无法控制,只好控制自己。” 9、我不知道我现在做的哪些是对的,那些是错的,而当我终于老死的时候我才知道这些。所...
syuanq 发布于 2007-06-03 09:47 | 阅读 1148 次 | 评论 0 条

RegExp DEMO version --[4][regexp.h]核心数据类型(3)

/*输出StateTable,测试用*/void showStateTable(pStateTable pst) { pState tmp; pStateCollectionEle pscele; printf("debug: ################### there is the NFA table basic info: #######################\n"); printf("debug: StateCount = %d\n", pst->stateCount); printf("head->%x\tcur...
rabbit5455 发布于 2007-06-03 06:44 | 阅读 2166 次 | 评论 0 条

RegExp DEMO version --[4][regexp.h]核心数据类型(2)

/*##############################################*//*####### *函数实现* ######################*//*##############################################*//*状态*/pState newState() { pState pS = NULL; pS = (pState)malloc(sizeof(State)); if (pS != NULL) { pS->destStateCollection =...
rabbit5455 发布于 2007-06-03 06:43 | 阅读 2107 次 | 评论 0 条

RegExp DEMO version --[4][regexp.h]核心数据类型(1)

这里是[regexp.h]的全部代码,所有的数据结构和针对他们的操作函数都在这里了,总揽一下哈: 终结符类型 状态 新建,销毁,置目标状态,克隆 状态集合的元素(相当于一条弧线:输入元素和目标状态) 新建,销毁,克隆 状态集合 新建,销毁,克隆,追加一个状态元素 状态表格 新建,销毁,克隆,追加一个状态,用于调试的showStateTable() 状态机 新建,销毁 ...
rabbit5455 发布于 2007-06-03 06:39 | 阅读 2571 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(7)dealState()

case REPEAT_RANGE_M_MORE: /*(A{m,})*/ pst_needed = repeatMachine_needed(g_repeat_m-1, pmnew); if (pst_needed != NULL) { g_st = joinStateTable(g_st, pst_needed); ...
rabbit5455 发布于 2007-06-03 06:34 | 阅读 2025 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(6)dealState()

case END_REGEXP: while_notfinish = 0; /*一会儿退出循环*/ printf("debug: end scan the regexp:\n\t\"%s\"\n", g_strRegExp); /*做一次状态机结束操作*/ case OR_MACHINE_END: if (symboltype == OR_MACHINE_END) { ...
rabbit5455 发布于 2007-06-03 06:33 | 阅读 1562 次 | 评论 0 条

寂寞日

站在喧闹的街上,看着来来往往的尽是情侣,我悲凉的心几乎就要崩溃了。为什么我仍学不会一个人?还天真的想象那个只见过两面的人可以陪在我身边。其实自己心里很清楚这是不可能的事情,可就是忍不住要想人家。
alicelifei 发布于 2007-06-03 00:40 | 阅读 985 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(6)dealState()

case END_REGEXP: while_notfinish = 0; /*一会儿退出循环*/ printf("debug: end scan the regexp:\n\t\"%s\"\n", g_strRegExp); /*做一次状态机结束操作*/ case OR_MACHINE_END: if (symboltype == OR_MACHINE_END) { ...
rabbit5455 发布于 2007-06-02 21:49 | 阅读 1797 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(5)dealState()

case DOT: for (OR_MACHINE_i=0; OR_MACHINE_i<(int)'\n'; OR_MACHINE_i++) { g_ele_ary[OR_MACHINE_i] = 1; } for (OR_MACHINE_i=(int)'\n' + 1; OR_MACHINE_i<=sizeo...
rabbit5455 发布于 2007-06-02 21:45 | 阅读 1423 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(4)dealState()

case OR_MACHINE_BEGIN: /*开始一个或运算子状态机(字母表),左括号: '['*/ pmnew = newMachine(NULL, NULL, g_scan_pos, -1, '|', NULL); pmnew->state_start = newState(); /*状态机开始状态*/ ...
rabbit5455 发布于 2007-06-02 21:43 | 阅读 1709 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(3)dealState()

case START_REGEXP: printf("debug: start scan the regexp:\n\t\"%s\"\n", g_strRegExp); /*做一次状态机开始操作*/ case AND_MACHINE_BEGIN: /*开始一个子状态机,左括号: '('*/ pmnew = newMachine(NULL, NULL, g_s...
rabbit5455 发布于 2007-06-02 21:41 | 阅读 1726 次 | 评论 0 条

RegExp DEMO version -- [3]核心函数(2)dealState()

case BACKTRACE: /*将当前状态与子状态机的结束状态连接*/ setdestState(g_st->curState, (int)g_st->eleCount, g_mstk->topM->state_end); /*将当前状态回退到子状态机的头部,开始一个新的分支*/ g_st->curState = g_mstk->topM->state_start; break; ...
rabbit5455 发布于 2007-06-02 21:36 | 阅读 1247 次 | 评论 0 条