`
it农民
  • 浏览: 28880 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
阅读更多

首先我申明这个词没有官方论证,只是我个人的一个命名。到现在是不是有点纳闷,有面向对象编程,面向接口编程,面向方面编程,怎么又忽然多了一个面向界面编程,不用着急听我慢慢道来。

叫 做开发模式好像不确定,实际上主要的目的就是更快更准的了解用户需求,让需求更改几率尽量降低,提高开发效率。我一直在思索这个问题,到底叫做方法论还是 模式,但是我又想如果这个叫做模式的话,就应该有一套辅助的设计框架,因为这个也是一个尝试,还需要进一步的论证和完善,这本书中我主要就是以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的简单响应。

系统分析师一位:分析系统结构和用户需求。

由于这个项目实施的时候并没有想到要写此书,很多原始的资料很难找到,就些截图,主要是方便大家理解。

分享到:
评论
3 楼 it农民 2008-10-29  
表面上看起来和原型设计非常的相似,原型设计的目的是进行产品规划,面对的工程师和项目实施成员,甚至是boss,是产品经理一个很重要的工作。但是面向界面设计的目的是为了摸清用户的需求,用户不会去看更多的解释和文档。所以就会遇见上边的兄弟说的ui设计很大的难度,但是从项目整个风险来说降低了。
2 楼 liusong1111 2008-10-29  
我们的情况,Project Manager团队负责产品需求,输出界面原型图+文档描述.
每个原型图都有一个page_id,便于交流时引用和QA验证.
这种方式确实很生动形象,也很务实.尤其适用于使用动态语言,开发方法敏捷灵活的团队.
apple上的omnigraph做出来的图很漂亮, firefox插件pencil sketching和传统的visio等工具也不错.

1 楼 metaphy 2008-10-29  
只是想讨论一下。

1.你所提的想法跟“原型方法”有什么不同
2.软件的复杂性就在于其不断在变化,这也是现在“敏捷”方式得以倡导的原因;界面是最最具体的形式,而所谓的思想是需要某种抽象的
3.界面就其本身的设计也是有时间的,比如字段的摆放,button的摆放,一旦陷入这种无尽的修改中,UI工程师离辞职也就不远了。。

相关推荐

    Delphi模式编程第一分卷

    1.3 从面向对象编程到模式编程 1.3.1 关于封装的哲学 1.3.2 利用继承实现变化的封装和简单的复用 1.3.3 借助模式封装多个变化 1.3.4 模式帮助我们解决问题 第2章 Delphi的模式编程机制 2.1 对象模型机制 ...

    Delphi模式编程第二分卷

    1.3 从面向对象编程到模式编程 1.3.1 关于封装的哲学 1.3.2 利用继承实现变化的封装和简单的复用 1.3.3 借助模式封装多个变化 1.3.4 模式帮助我们解决问题 第2章 Delphi的模式编程机制 2.1 对象模型机制...

    设计模式:可复用面向对象软件的基础--详细书签版

    作者从多年的面向对象设计经验中精选了23个模式,这构成了该书的精华部份,每一个精益求精的优秀程序员都应拥有这本《设计模式》。”--larry o'brien, software development    “[设计模式]在实用环境下特别有用,...

    面向对象编程课设:设计一个计算器类

    面向对象编程课设:采用Java设计一个计算器类;要求实现基本计算功能,有图形界面,采用M_V_C(模型——视图——控制器)模式。

    从实例谈面向对象编程、工厂模式和重构

    仔细分析这段代码,它其实是一种最古老的面向结构的设计。如果你要播放 的不仅仅是mp3 和 wav,你会不断地增加相应地播放方法,然后让 switch 子句越来越长,直至达到你视 线看不到的地步。 好吧,我们先来体验对象...

    三层架构设计模式MVC和AOP面向切面编程-SSM框架的学习与应用-Java EE企业级应用开发学习记录(第九天)

    本资源将深入探讨软件开发中两个关键的设计和编程概念:三层架构设计模式(MVC)和面向切面编程(AOP)。这两个概念是现代软件开发中不可或缺的组成部分,它们有助于提高代码的可维护性、可扩展性和可重用性。通过...

    java常用设计模式 ppt

    java 常用设计模式 ppt格式 分类 创建模式 结构模式 行为模式 优点 面向界面编程 降低耦合性 增加灵活性

    设计模式文档

    Java常用设计模式之追美眉技术详解设计模式 分类 创建模式 结构模式 行为模式 优点 面向界面编程 降低耦合性 增加灵活性

    Java与UML面向对象程序设计.pdf

    第5章使用这些面向对象观点分析了图形用户界面(GUI)和Java Swing类库。第6章以一个小规模的Java应用程序为实例,将前5章的内容结合到一起。 接下来的章节让您对面向对象编程的实践方面有较好的了解。第7章介绍了...

    写给大家看的面向对象编程书(第3版).[美]Matt Weisfeld(带详细书签).pdf

    本书是一部独具特色的面向对象技术著作。书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。此外,本书还讨论了各种与面向对象概念密切相关的应用主题,包括XML、UML建模语言...

    JAVA常用设计模式

    分类 创建模式 工厂模式;建造模式;原始模型模式;单例模式 结构模式 适配器;桥梁模式;合成模式;装饰模式;门面模式;享元模式;代理模式 行为模式 优点 面向界面编程 降低耦合性 增加灵活性

    易语言编程系统(全书PDF).part6

    “易语言”的面向对象的编程理念、丰富的界面元素、数千条系统命令、API与COM支持,足以满足各个行业不同应用层次的开发要求。“易语言”将是广大电脑用户的理想编程工具。全书由30章和3个附录组成。主要内容包括:...

    网络编程实用教程(第三版).zip

    2.4.3 数据报套接字的对等模式编程实例 45 2.5 原始套接字 47 2.5.1 原始套接字的创建 47 2.5.2 原始套接字的使用 48 2.5.3 原始套接字应用实例 49 习题 51 第3章 WinSock编程 53 3.1 WinSock概述 53...

    敏捷软件开发原则、模式与实践 C#版

    第33章 ABSTRACT SERVER模式、 ADAPTER模式和BRIDGE模式 第34章 PROXY模式和GATEWAY模式:管理第三方API 第35章 VISITOR模式 第36章 STATE模式 第37章 薪水支付案例研究:数据库 第38章 薪水支付系统用户界面:...

    易语言编程系统(全书PDF).part4

    “易语言”的面向对象的编程理念、丰富的界面元素、数千条系统命令、API与COM支持,足以满足各个行业不同应用层次的开发要求。“易语言”将是广大电脑用户的理想编程工具。全书由30章和3个附录组成。主要内容包括:...

    易语言编程系统

    “易语言”的面向对象的编程理念、丰富的界面元素、数千条系统命令、API与COM支持,足以满足各个行业不同应用层次的开发要求。“易语言”将是广大电脑用户的理想编程工具。全书由30章和3个附录组成。主要内容包括:...

    学生管理系统界面java编程

    学校大多要管理成千上万学生的信息,但仍有很多学校然传统的管理模式…… 使用计算机对学生信息进行管理,具有手工管理所无法比拟的优点.例如:出错可能性小、处理效率高、易于管理等等。 本系统为学生学籍管理系统,...

    设计模式 GOF 23

    本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...

    Visual C#网络编程技术与实践源代码

     1.4.1 C/S与B/S架构通信模式概述  1.4.2 编写客户端代码  1.4.3 编写服务器端代码 . 1.4.4 无阻塞套接字  1.5 本章小结 第2章 C#.NET高级网络编程技术概述  2.1 线程与网络通信  2.1.1 基于线程的...

Global site tag (gtag.js) - Google Analytics