首先我申明这个词没有官方论证,只是我个人的一个命名。到现在是不是有点纳闷,有面向对象编程,面向接口编程,面向方面编程,怎么又忽然多了一个面向界面编程,不用着急听我慢慢道来。
叫
做开发模式好像不确定,实际上主要的目的就是更快更准的了解用户需求,让需求更改几率尽量降低,提高开发效率。我一直在思索这个问题,到底叫做方法论还是
模式,但是我又想如果这个叫做模式的话,就应该有一套辅助的设计框架,因为这个也是一个尝试,还需要进一步的论证和完善,这本书中我主要就是以PHP开发
SaaS应用为例,演练一下这个模式,顺便会提供一个简单辅助开发框架,方便界面设计,就先叫做模式吧!
下边是我个人认为值得一起的口号(原则):
1、
精确界面描述,胜过大量用户看不懂的需求规格说明书;
当
我们做一个系统的时候,做用户的需求是最难的事情,这个就不用说明理由,尤其在中国这个问题让人头疼,没有行业的标准,老板的喜爱很重要,在国外有专业的
咨询公司,能写出一份详细完善的需求说明书,但是在中国可以说是天方夜谭,因为用户本身就不知道他自己需求是什么样子的?我们做系统的设计的人,想真正了
解用户的需求那是难上加难。
我在研究模式设计的时候,也发现很多系统架构师在做“符合中国的开发模式”的命题研究,但是这个宏伟的目标什么时候才能实现,我希望他能早点把理论建立起来,我们再想办法实现。
以
前做项目的时候,用户总会告诉我,你们先设计一个大概能操作的东西,我再看看需要什么,那里不对,这样会让很多设计人员哭笑不得,还没有理清需求,也就是
说还没有评估项目的风险就要开动工,这样对软件企业的风险很大。最近在为一个软件公司做IT咨询的时候,发现该公司遇见的这样的问题更是恼火,用户更本就
不考虑系统的安全性和程序的健壮性,做验收的时候只看界面的操作流程,是不是符合自己的流程和习惯?
于是我就再想,如果我们工程师在做需求的时候,放弃过去报表,文档的整理,而让我们的UI工程师和界面编程人员在了解大概的需求之上做出可操作的界面,让用户在可见的界面上提出需求,我们不断的修改界面,以达到用户的需求,这样就可以避免用户需求不明的问题。
2、
详细界面输入设计,胜过要求用户提供数据字典;
以
前我们在做需求的时候,就要整理用户的各种单据,但是往往单据上表现的数据并不能完全呈现完输入的数据,比如一个产品订单的时候,他不会呈现出这个订单相
关的合同信息,但是在输入订单的时候就会有相关的合同编号,甚至还会录入一些合同的必要信息,比如金额。这样我们再整理数据字典的时候就会出现麻烦,我们
要把能收集的单据全部整理再一起,再进行数据分析,整理数据字典,就在用户完全紧密配合的情况下我们做到100%的正确也是相当有难度的。
如
果我们把这些都做在界面上,让用户在界面上实现自己的工作流程,他就会很清楚的告诉我们单据上的东西还会有合同上的那些必要信息,不要问他为什么会知道?
这个是他的工作流程。这样我们的界面上就是完整的用户需求数据字典,我们在根据这些表象的数据输入界面来分析数据字典是不是容易了很多。甚至清楚的描述了
各个实体对象之间的关系。
就上边的例子,我们详细分析这个案例:
订单样例(纸张)【Order】
订单
产品列表
|
数量
|
质量
|
时间
|
标准
|
厚度
(cm)
|
氧化
|
I
|
II
|
III
|
IV
|
铝A
|
20
|
2
.5
|
不需要
|
08-08
|
|
是
|
|
|
铝合金B
|
50
|
1
|
需要
|
08-08
|
|
|
|
是
|
合同样例(纸张)【Contract】
甲方:A公司
|
乙方:B公司
|
合同内容;
合同责任;
合同金额;
付款条件;
2008年8月26日16:49:55
|
具
体的工作流程是市场部门签订合同,开始下单要生产部门,但是下单的时候合同的金额保密,所以单据上就没有金额,每个订单有一个编号,市场部门的签单人员和
老板会根据合同找到订单的编码,再询问生产部门,控制整个生产的进度。这里就有一个问题,合同怎么找到订单呢?他们目前的操作是在每个合同中增加一个扉
页,专门记录生产的跟进记录。因为还有一种情况,就是合同追加产品,比如我刚签订了20个产品的合同,送给我的时候,我觉得很不错,还需要200个,就不
需要在重新签订合同了,在上次合同上追加200个产品,这样合同只是增加了附件,而订单都要重新下到生产部门。
还隐含这样一个问题,根据合同跟踪订单生产只是一个工作,假如公司的业务非常繁忙,老板就决定先做大单,后做小单,这样就需要及时告诉生产部门进行调整单子生产计划。
如果我们做需求就分为三步:
第一步:收集这两个单据;
第二步:整理出两个实体对象(Order和Contract)
第三步:分析上边所讲的工作流程,建立E-R关系模型,难度就在这里,用户能不能清晰的描述出自己的需求?
如果我们用界面输入设计,也是三步:
第一步:收集这两个单据;
第二步:做4个界面,Contract输入、Order输入、Contract显示和Order显示;
第三步:让用户操作,就能清楚的告诉你,显示的时候少那些元素,输入的时候少那些元素,也就是让用户需求表象化。这样就容易很多了,目的一样能达到,而且用户接受度更高。
3、
不同分工的界面,胜过用户提供业务逻辑;
要
分析用户的业务逻辑实际上就是做use case,当然我们在需求很明确的情况下都非常好办,有很多优秀的工具能协助我们完成,但是问题恰恰出在我们不
懂,需要和用户不停的交流,甚至要去参加用户的具体工作中,为了解决这个问题,就出了一个新的办法user story,就是系统分析人员假设很多卡片
(令牌),用户按照自己的工作流程一步一步的拿走自己想要的卡片,系统分析人员都记录下来,用这样的办法来完成use case。
上
边的这个方法是现在比较常用的方法,但是在实际操作过程又会遇见很多客观的因素,用户能不能很好的配合系统分析人员的工作?而且用户有可能出差,开会等等
耽搁。我们在做系统分析的时候更需要企业的管理层参与,但是企业的管理层都是“忙人”,所以这个方法在系统分析的时候也会遇见很多不可预知的难度。
下边就讲讲我的一个案例,做一个网络企业的项目管理系统。说是项目管理系统,但是这个系统比较复杂,包含了人事的很多功能,还包含了CRM的部分功能以及合同管理。
大
概的需求是这样的:市场人员谈项目,在项目差不多的时候会从财务部领取合同,当时项目敲定的时候就会签订合同(当然有合同签订不了),财务审合同和客户资
料。合同一旦确定,单子就会下放到技术部门,项目经理根据合同建立项目,设立项目监督,分配工作建立任务,系统生成甘特图。被分配到实施任务的技术人员就
会看到自己的任务,以及计划工期,每天完成任务的时候进行跟进和反馈,项目经理进行进度监督,项目监督进行质量监督。
就
这点功能来说不算是复杂的系统,这个是多人协作的办公系统,我们采用了B/S架构,但是我和我们的工程师进行交流的时候,就希望这个系统能有扩展性和通用
性在权限这块就做了很大改变,准备做成自定义权限,再基于角色分配这些权限。具体的实现到后边再详细做说明,这个系统的核心是客户和合同,大家都是围绕这
个工作展开。和几位工程师沟通之后就决定尝试下我们的逆向设计思维。
人员安排:
UI一位:此角色的工作就是做用户的输入界面了,把我们设想的界面都做了,实际上工作量很小,因为这个是一个软件,不需要很多华丽的图片和动画做装饰,基本都是html。
前端开发工程师一位:此角色的主要工作是重构页面和整理js框架,这里的重构的主要工作就是为了配合js工作,比如要给某写元素加上id方便控制,js采用jQuery框架,编写了适合自己操作的插件。
php工程师一位:此角色的工作量很小,因为前端用了很多ajax实现,配合做ajax的简单响应。
系统分析师一位:分析系统结构和用户需求。
由于这个项目实施的时候并没有想到要写此书,很多原始的资料很难找到,就些截图,主要是方便大家理解。
分享到:
相关推荐
例如,在图形界面设计、游戏开发、数据库管理系统等领域,OOP都是首选的编程模式。 ### 2. 非面向对象编程 #### 2.1 概念与特性 非面向对象编程,也称为面向过程编程或面向数据编程,它的核心是通过函数或过程来...
《Delphi面向对象编程思想》是一本专注于介绍如何在Delphi环境下运用面向对象编程技术的专业书籍。这本书由刘艺撰写,旨在帮助读者深入理解和熟练掌握面向对象编程的基本概念、原则和技巧,以及如何在实际的Delphi...
在本项目"JSP_javabean_DAO_面向接口编程_工程模式.rar"中,我们将探讨如何结合JavaBean、DAO(Data Access Object)、面向接口编程以及工厂模式来构建一个高效且可维护的Web应用程序。 首先,JavaBean是Java中的一...
在本文档的第三部分,作者探讨了如何在实际的模式中运用这一原则,通过分析MVC(Model-View-Controller)模式和.NET平台的分层架构来深入理解面向接口编程的优势。 MVC模式是一种经典的软件架构模式,用于分离应用...
事件驱动编程使得用户界面的交互变得简单而直观,开发者只需编写处理特定事件的代码,而无需关心事件何时触发。 关于Delphi的面向对象编程实践,书中可能会通过案例分析和实战项目,让读者了解如何在实际开发中应用...
在IT领域,高级界面编程是构建用户友好、美观且功能丰富的应用程序的关键环节。这份"高级界面编程文档与示例"涵盖了窗口设计、皮肤定制以及工具栏的实现等多个方面,旨在帮助开发者提升用户界面的设计和交互体验。...
事件驱动编程模式使得程序能够响应用户的交互或系统发生的事件,如按钮点击、文件加载等,从而提高了程序的交互性和响应性。 在实践部分,作者刘艺可能会通过一系列的实例,展示如何在Delphi中实现面向对象的设计...
《Delphi面向对象编程思想》是一本专注于介绍如何在Delphi环境下运用面向对象编程的书籍。面向对象编程(Object-Oriented Programming,OOP)是一种软件设计范式,它基于“对象”的概念,将数据和操作这些数据的方法...
在Java编程领域,面向对象编程(Object-Oriented Programming,OOP)是一种广泛采用的设计模式,它基于类和对象的概念,使代码更加模块化、可维护性更强。在这个"Java面向对象编程-ATM取款机系统"项目中,我们可以...
9. **设计模式**:面向对象编程中的设计模式是解决常见问题的模板,例如工厂模式、观察者模式等。本书可能会深入讲解如何在Delphi中应用这些设计模式,提升代码质量。 10. **单元测试**:Delphi支持单元测试框架,...
《Visual C++面向对象编程教程》是清华大学王育坚教授编著的一本深入浅出的教材,旨在教授读者如何利用Microsoft的Visual C++环境进行面向对象的程序设计。该书结合了理论与实践,旨在帮助初学者理解面向对象编程的...
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它基于“对象”的概念,将数据和操作这些数据的方法封装在一起。在PowerBuilder(PB)中,OOP的应用使得开发更加高效,代码复用性更强,且...
《Delphi面向对象编程思想》是一本深入探讨Delphi编程技术的著作,旨在帮助读者理解和掌握面向对象编程在Delphi中的应用。这本书可能是由超星公司制作的电子书格式,通常这种格式包含丰富的文本和可能的图像,方便...
Java是一种广泛使用的面向对象编程语言,其设计理念是“一次编写,到处运行”。面向对象编程(Object-Oriented Programming,简称OOP)是Java的核心特性,它通过类、对象、封装、继承、多态等概念来组织和管理代码,...
通过这个综合实验,你可以深入理解MFC如何将面向对象编程思想应用于实际的Windows程序开发,学习如何组织代码、处理用户输入、管理文件以及创建复杂的用户界面。同时,这也是提高编程技能和项目实践经验的良好机会。
面向状态的编程模式是一种以状态为中心的编程方法,它强调程序的行为主要由其当前状态决定。在这样的模型中,程序的执行流程被视为一系列状态转换,每个状态都有可能触发到下一个状态的转换。QP(Quantum ...
通过深入学习《Visual C++面向对象编程教程(第2版)》,开发者能够逐步熟悉MFC的编程模式,提高Windows应用程序的开发效率,同时也为掌握更高级的Windows编程技术打下坚实基础。不过,由于MFC的复杂性和深度,需要...
《Visual C++界面编程技术》是一本专注于使用Microsoft的Visual C++开发图形用户界面(GUI)的应用程序的教程。Visual C++是C++编程环境中的一部分,它提供了丰富的工具集,尤其是MFC(Microsoft Foundation Classes...