惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

NISL@THU
NISL@THU
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Darknet – Hacking Tools, Hacker News & Cyber Security
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
IT之家
IT之家
Cyberwarzone
Cyberwarzone
博客园_首页
博客园 - 聂微东
V
Visual Studio Blog
Cisco Talos Blog
Cisco Talos Blog
V
Vulnerabilities – Threatpost
Google DeepMind News
Google DeepMind News
Schneier on Security
Schneier on Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Hacker News
The Hacker News
雷峰网
雷峰网
Last Week in AI
Last Week in AI
Spread Privacy
Spread Privacy
L
Lohrmann on Cybersecurity
O
OpenAI News
人人都是产品经理
人人都是产品经理
AWS News Blog
AWS News Blog
小众软件
小众软件
T
Tailwind CSS Blog
The Cloudflare Blog
L
LINUX DO - 最新话题
有赞技术团队
有赞技术团队
Know Your Adversary
Know Your Adversary
The GitHub Blog
The GitHub Blog
L
LINUX DO - 热门话题
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
B
Blog
MyScale Blog
MyScale Blog
S
SegmentFault 最新的问题
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
大猫的无限游戏
大猫的无限游戏
罗磊的独立博客
Blog — PlanetScale
Blog — PlanetScale
博客园 - Franky
I
InfoQ
P
Proofpoint News Feed
量子位
S
Security @ Cisco Blogs

博客园 - n216

微查(测试版)上线了 跟我开发NSP(网上查询平台):如何选择开发项目 从C语言实战谈编程:vi(编辑源程序)下(2011-11-22) 从C语言实战谈编程:vi(编辑源程序)上(2011-11-22) “所见不所得”一次帮别人解决难题的全过程(2011-11-17) 从C语言实战谈编程:hello world 程序解析(2011-10-23) 从C语言实战谈编程:hello world(入门)(2011-10-16) 《从C语言实战谈编程》开场白 《以海量数据为标志的数据分析时代已经来临》(2011-10-12) 我与软件专业大学生们面对面(2011/06/22) 从程序制作到构架制作《程序员成长路线图:从入门到优秀》优秀篇(节选5) 成熟到优秀的瓶颈问题《程序员成长路线图:从入门到优秀》优秀篇(节选4) 程序员成熟的标志《程序员成长路线图:从入门到优秀》成熟篇(节选3) 你能当老板吗《程序员成长路线图:从入门到优秀》成熟篇(节选2) 程序员的上升空间在哪里《程序员成长路线图:从入门到优秀》节选1 意外惊喜:从博客园写博客到出书(2011-5-5) 《集中乎,分布乎》(2011-4-10) 《规划中一定要有架构》(2011-3-31) 《银行业信息化现状与规划之间的矛盾和解决》(2011-3-16)
跟我开发NSP(网上查询平台):如何对开发项目进行分析(2012-7-26)
n216 · 2012-07-27 · via 博客园 - n216
     

当我们选择好一个开发项目之后,我们对这个项目到底是什么样,还是比较模糊的,一般只能知道个大概。就NSP来说吧,当定下来开发NSP的时候,我们只是认为这是个好项目,是个具有市场价值的好项目,它应该是个网上查询平台。但是,网上查询平台具体是什么样,有什么功能?用户是什么?实现架构是什么?都还是不太清楚的,可以说到从开发目前为止,以上三个问题还没有完全弄清楚。所以,我们当确定下开发项目之后,首先要进行项目分析。如何进行项目分析?(其实,项目分析贯穿在整个项目的始终)以NSP为例:

一、关键点

首先要找出项目的关键点:NSP网上查询平台,有三个关键点:1、网上 2、查询、3平台。围绕着三个关键点,我们就会进行思考和分析。

1、      网上?什么是网上?网上的范围在什么地方,是企业内网,还是互联网?

2、      查询?什么是查询?查询的定义是什么?查询范围是什么?查询与搜索之间的联系和差别是什么?

3、      平台?什么是平台?平台与一般的查询系统的关系什么?查询平台与其他平台有什么相同之处和不同之处?

 

当把这些关键点反复考虑再三,分析一遍又一遍之后,你可能对项目有更加清晰的印象。大概知道你要做些什么了。

例如,关于查询。我把它定义为按照一定条件将数据库中的数据查找出来,并显示。同时,我把数据限定于文字信息,这样就排除了图像信息的查询和显示,避免了NSP的开发的复杂性,即使今后可能会加上图像信息,但是,还没动手开发之前也不要过分的扩大项目的范围,范围太大就会增加思考的成本和开发的时间。先缩小项目的范围,便于项目的实现这是一条有用的经验。

找出关键点之后,你就可以对项目有一个精炼的认知。比如:当时对NSP认知为:在企业内网和互联网上实现数据查询并放到一个平台之中。通俗地说,可以建立各种数据查询并放在一个平台上。用户通过这个平台实现各种数据查询。

当你不是完全由自己想出来的开发项目,而是由用户提出来的开发项目,你可以根据需求书,去寻找项目的关键点。大部分项目若无特殊的要求,一般只有一个关键点。例如,象我以前开发的反洗钱系统,这个系统并不强调网上,也不强调平台,只是强调如何产生反洗钱报文,所以这个系统的关键点就是反洗钱系统的报文和报文规则。但是,就是一个关键点,也需要你认认真真地去分析它的定义,含义,作用等。

二、功能点

 通过关键点的思考,你就会发现项目的核心功能是什么,NSP核心功能是什么是查询。那如何实现这个查询呢?首先要看看别人一般是如何实现查询的,然后再想想自己如何实现查询,找出两者的不同,分析两者的优劣。目前,实现数据查询大概有以下几种方式:

1、需求定制方式

需求定制方式就是按照用户的查询需求编写出查询功能或查询系统来。这种方式的特点是直观,直接。但是,要知道具体的数据库,数据表,要知道查询条件项等。然后写出SQL语句,执行这个SQL,得到查询结果,再将其显示到固定的位置上。

这种方式和NSP的初衷是格格不入的,NSP是一个通用的查询系统,不可能与具体的查询系统和查询功能挂钩。

2、参数方式

很早很早就做过,查询的参数化设计。在数据表固定情况下,让用户自己选择字段,选择操作符,输入查询条件。然后选择多个查询条件的表达式直接的与或非等,用户点击执行后,将这些参数形成SQL语句,执行SQL语句得到查询结果。

同样,现在好多数据库工具也是采用交互参数方式实现数据的查询。这种方式的好处是有点通用,用户可以有自由选择功能。但是,NSP是想建立一个查询系统,是用户使用的查询系统,不是一个懂得SQL语句的程序员使用的查询系统。所以,这种方法有一定的参考价值,但不是实现NSP方法。

3、手工方式

在数据没有查询系统的情况下,用户会把需求提给信息科技人员或程序员,由他们通过编写SQL语句实现数据的查询。这种非交互编程方式,显然不是NSP所要的方法。

那么除此之外,还有没有其他方法?如果我们不去深入研究,总是被眼前的一切蒙住双眼,可能也想不出其他方法。我在上篇博客中谈到了积累问题,我在此之前就有过查询的想法,只是从理论上,感觉可以,并没有去编程实现它。这个方法就是配置方法。这种方法把一个查询分成2个部分,一部分是由程序员来实现,叫做配置,另一部分是由用户来操作叫做查询。缺点是多出了一个环节。但是,这个环节很重要,也许是改变软件编程方法的一个重要环节。

这就要我们设计好配置,提供一个配置的程序,让程序员进行配置。

通过分析,我们看到NSP的功能点在于配置和对配置的解释产生的查询。

  

了解到了功能点后,我们大致就知道我们要编写什么程序了,从以上可以看出,我们要编写一个配置程序,进行查询的配置,另外,我们要编写一个查询程序对配置进行解释和执行。当然,这个时候,你不要关心,如何去编制配置程序,也不要关心如何去编写一个查询程序。只是在心中把这两个功能点给记住就行了,至于如何编写程序,到编写程序时候再说。压制你的编程欲望非常重要,在开发当初,每每有让人动手编程的冲动,这样不好,一定要把大的东西想明白,想明白之后再编程就会好得多。

三、用户对象

一个软件系统一定要搞清楚他的用户对象是谁。毕竟用户是软件的使用者,不同的使用者,由于其特点的不同,最终反映在软件设计上也有所不同。在企业信息化中,一个应用系统中的用户一般是企业的员工和管理者,是最终用户。由于最终用户的不同,你考虑的问题也不同。就NSP而言,配置的用户和查询的用户就是两种类型的用户,配置用户由于懂得电脑,懂得SQL所以,功能界面设计就相对简单一些。而最终用户只会操作,所以功能设计要简明一些,时尚一些,易用性一些。这些对你的软件设计是有非常大的差别的。


很多情况下,一些软件设计师和程序员,不太注重系统的用户,而只关心功能的完成,这是一个值得思考的一个问题。有的程序员干脆不知道这个软件是给谁用的。这些不重视用户,不重视用户的分层,很难说你会站着用户的角度上设计软件,很难说,你编写的软件就能满足用户的要求。

四、一个案例

一个系统终究要通过一个场景实现其功能,开始分析项目的时候,你无法很细致地考虑到一个案例,但是,你一定要先准备一个案例,通过编程来实现这个案例。通过一个案例来粗线条地实现这个系统的主要功能。表明这个系统是能够完成案例要求的。以NSP为例,我当时就设想了这样一个案例:公安部门通过查询人口信息查询到某人具体信息之后,通过这个人的身份证号码来查询到银行中这个人所有的交易。实现公安和银行的互通,反之也然。这当然是我自己设想的案例,现实中公安和银行双方是否能够允许互联并不是我所关心的事,我只是通过这个案例来说明NSP的功能,那就是跨系统和跨行业的查询。

 

在项目分析阶段一定要有一个案例,哪怕是一个粗一点的案例也行。这样你对项目由一个很直观的感受。

好了,当你完成项目的关键点、功能点、用户和案例之后,你就会把一个很大的一个项目需求,通过一个很简要的归纳和案例表示出来了。记住这些,这是你开发最初阶段的重点。接下去,你可能就要费点精力编写项目总体设计方案了,费点精力来继续项目分析了。不要担心项目分析,时间太长,项目分析应该是无止境的,这就我们习惯于开动我们的脑筋去思考问题。以后,我们就会明白这个道理:磨刀不误砍材工。

下面一篇,我将讲一讲如何编写项目总体设计方案。