第5章 用户需求变化

5. 用户需求变化

用户需求的变化说来就说,这是很常见的事情。本章,我们将根据用户需求的变化,讨论如何应对,并且会讨论如何在软件结构设计上做出改变,以应对更多的需求变化。

希望你已经对C#中的数据处理和以SQL Server代表的网络数据库技术有一些了解了,因为接下来,小李的E-mail会让我们的项目有很大的变化,而第11章和第12章内容正是应对这些变化的技术基础。

说到小李的E-mail,它的主要内容是这样的。


老同学,好! 你开发的软件我们经过试用,效果很不错,现在,有几个小问题需要改进一下,具体内容如下: (1)为了适应技术的发展,我们公司准备创建一个网站,你是不是可以在网站中添加网上调查的功能。 (2)为了核对人工录入数据的正确性,我们将采用两次录入对比的方法;所以,我们需要另一个录入操作,并且需要进行两次录入数据的对比。并可以通过网站查看报表。 (3)公司想把数据统一管理,也就是做个数据中心,而数据中心中的调查数据作为最终数据使用。

小李 yyyy年mm月dd日


三个小问题?或者我们可以将它们看成一个整体需求来看,下面,就一起讨论吧!

5.1. 需求变化的真相

小李的E-mail看上去是项目的需求扩展,但是,如果我们仔细思考一下就会看到,这实际上和重新开发一个项目并没有什么两样,所以,我们会发现,需求的变化从本质上讲就是新的需求,那么,我们获取需求时需要做些什么工作呢?希望你还没有忘记第2章的内容,没错,我们需要重头再来,完整的获取、分析和确定用户的需求。

毕竟,我们这里并不是在写故事书,所以,故事场景就不再多说了,现在,我们只是从开发者应该做什么的角度来重新进行获取需求的一系列工作。不过,经过了第4章中一个完整项目的开发,无论是从开发技术还是用户的工作本质上讲,我们应该已经有了一定的经验和积累,所以,从这个角度上讲,我们也不是完全是从零开始。接下来,我们就需要通过一系列的问题来了解用户的新需求。

5.2. 需求分析

从技术层面上讲,在第4章的开发中,我们会发现代码功能主要有三个方面,一是数据库的应用,二是操作界面,三是用户数据的处理。所以,我们从用户那里获取需求时,就可以从这三个方面着手。

此外,如果需要要进一步深入地分析小李在E-mail中提到的问题,就必须搞清楚一些问题,这些问题的答案决定了我们需要进行的开发工作,以下这些可以作为参考:

  1. 问卷数据需要进行重复录入(复录),采用什么样的录入方式?另外,两次录入的数据如何与数据中心衔接?
  2. 网站中的调查功能是不是独立的模块?如果不是,那么网站开发使用的主要技术是什么?
  3. 数据中心采用哪种数据库系统?

关于这三个问题,相信小李并不能有效地回答,因为他并不是专业的开发人员,但是,我们可以通过小李联系,并与网站的开发者进行技术上的交流,所以,我们并不用害怕小李不懂开发技术。

另外,还有两个小秘密,一是为了节省成本,网站的开发工作实际上也找了一个小型的团队;二是,当你完成本书的学习后,你也许可以接下这类网站的开发工作。

好的,通过与小李,以及网站开发团队的交流,实际上,前面的三个问题的答案也不难获取。下面进行进一步的讨论。

5.2.1. 问卷录入与报表功能

根据小李对复录操作的描述,其主要工作模式如下: - 使用Windows窗体录入时,人工操作非常高效(特别是当你在界面中添加了自动跳转功能以后);所以,刘经理希望人工录入的操作都由Windows窗体来完成,而不是在网页中进行。 - 对于调查的最终数据,只需要在数据中心保留一份数据就可以了;也就是说,经两次录入数据的对比工作后,将数据中心中的数据作为调查的最终数据。 - 为了方便远程操作,也可以通过网页查看和编辑问卷数据。 - 可以在网页中生成和查看报表。

现在,你有些什么想法?那就动手画一画吧!

图像说明文字

随手的一张草图是不是很能说明问题?

虽然数据中心还未说明使用什么数据库系统,不过,我们基本可以肯定的是,对于需要管理大量数据的数据中心,是不太可能使用Access数据库的;那么,我们就需要在Windows窗体中同时支持两种或两种以上的数据库系统。

好的,这是一个我们需要解决的问题,即一个软件中要同时对两种或两种以上的数据库系统进行操作,那么,我们是不是可以使用统一的操作方法呢?

5.2.2. 网上调查功能

网上调查实际上是非常简单的操作,从本质上讲,就是将数据的录入操作让参加调查的网友来做;然后,我们可以对调查数据进行统计、分析并生成相应的报表。这和使用调查问卷的工作流程是一样的。

我们知道,问卷调查和网上调查是比较常见的两种的调查方式,它们虽然在操作过程上很大的区别,但从本质上讲,它们对数据处理的基本方式和流程是一致的,即“数据录入>>计算汇总>>生成报表”。所以,当我们实现了问卷录入的功能以后,对于网上问卷调查的功能实现也是非常简单的。

不过,我们现在需要思考一些问题。

无论是Windows窗体项目,还是Web项目,只是界面操作的不同,而对于数据库的操作,以及用户对数据的操作方法是相同的;所以,我们有没有必要在不同的界面中重写大量的数据库操作和用户数据操作代码呢?

那么,我们需要思考的另一个问题就是,对于数据库操作和用户数据操作的代码是不是可以从界面中提取出来并进行封装,以便重复使用呢?

5.2.3. 数据中心

关于数据中心,有一个好消息,现在,小李公司的数据中心还只是一台数据库服务器在工作,并且,在网站开发团队的建议下,数据库使用了SQL Server;另一个消息是,网站使用的主要开发技术是ASP.NET,基于.NET Framework 4.0的。

好的,我承认我是在编故事,不过,这并不影响我们对于编程思想的学习和讨论,对吧?:)

现在,数据库的应用问题已经明朗了,那么,你真的想在Windows窗体中操作用户数据时,一会儿使用OleDbConnection对象连接Access数据库,一会儿又使用SqlConnection对象连接SQL Server数据库吗?或者,我们可以在界面中操作时不需要考虑数据库类型呢?这样不是更好吗? 接下来,是我们解决这一系列问题的时候了!

5.3. 新的设计方案

通过前面的讨论,我们可以看到,整个项目下来,我们需要两种界面(Windows窗体和Web窗体),两种数据库(Access和SQL Server);并且,Windows窗体需要同时访问两种数据,就像我们前面画的草图一样。

那么,我们如何才能有效地进行软件结构的设计呢?三层架构也许是个不错的选择:

  • 数据层或称数据访问层。一般是指对数据库的访问和操作。
  • 业务逻辑层。使用标准的、通用的数据访问层接口和组件操作用户数据。
  • 表现层,有时也称为界面。一般来讲,在这一层,我们可以使用业务组件进行操作,通过界面采集数据,并将数据处理情况或结果数据显示到界面。

下面这张图也许更详细地反映了软件的新架构。

图像说明文字

下一章,我们就从数据层的处理开始,相信在数据应用开发中,这也是一项基础工作,而我们的目标就是,对于这些代码的封装将可以在不同的项目中重复使用,并具有一定的灵活性和扩展性。

目录