好奇求知 积极热忱 善用资源 勇于责任 团队协作 恪守承诺 开放大度 激励奋发
                
                想象:
我们将想象化为实际行动,为客户、大众和社区工作
                解决:我们协助解决一些世界上最棘手的问题
                营造:我们推崇企业文化,拓展市场、培养人才、为股东创造价值
                领先:我们唯才是用,以学习进取、兼容并蓄、求新求变的精神保持企业领先

                GE: Imagination at work

谈谈我理解的WPF团队模型——在UI Designer与Developer之间

            谈谈我理解的WPF团队模型——在UI DesignerDeveloper之间
                          
周银辉

1,旧的模式已经不再适用

首先看看如果我们将旧的(.net3.o之前)模式直接引入到WPF中将是如何工作的。无论采用什么样的沟通方式,我们需要DeveloperUI Designer之间对软件的功能达成共识,然后我们可以得到当前界面的大体LayoutOK,这个被验证和确定以后,UI Designer会细化他的工作,提出一些她的一些新观念,软件UI风格,然后细化出一张张的效果图(利用PhotoShopPowerPoint等等)。接下来,Developer所要做的事情是:“照葫芦画瓢”,照着UI Designer的效果图,再Blend中将其模拟出来,以便形成可供程序使用的XAML。我们可以将这个过程称之为Translate(将效果图(PNGJpg)翻译成XAML)。

这所带来的问题:

(1)UI Designer的大部分“产出”的丢失,我们知道UI Designer除了告诉我们UI应该是怎样来展现以外,其设计过程中的大部分作品被抛弃掉了(比如设计了很长时间才做得很漂亮得一个按钮图片),这是由于其产出不能直接用到我们的Project中(我们要得是XAML而不是PNG,Jpg)。到最后UI Designer那边好像仅仅给我们提供了很多idea,而没有实质性的东西输出给我们以便用于我们的的Project.

(2)Developer这边“费力不讨好”。所谓“费力”指的是就大多数Developer而言本身就不擅长绘图(即便您有Blend这类傻瓜式的工具),所以你很难得再Blend中将美工那边提供的图形完全模拟出来,所以,Designer那边有意见了,您将人家美丽的艺术品转化得一团糟糕了。即便某某很牛,模拟出来了。仍然“不讨好”,因为这是重复劳动,DeveloperBlend中做得这部分工作事实上美工再Photoshop(或其它)中已经做过一次了。

一个可能得疑问是:为什么不让UI Designer们再Expression BlendExpression Design中工作呢?先说在Expression Blend中工作,除了培训成本(我想这个培训成本应该是相当高的)以外,就大多数UI Design团队而言面临的最严重的问题是:他们没有软件开发的观念和知识,无法将他们融和到开发流程中来,如果他们负责Blend这块的话,他们的一举一动将直接影响软件的性能和功能。比如他们不会按照Developer的观念来合理组织资源,他们不会考虑XAML代码对性能的影响,没有模块话的观念,不会顾忌软件的可维护性,稳定性。他们只会关心“这样的界面简直太漂亮太好用啦”。那么结果可想而知。再说Expression Design,事实上这是可行的,如果老板愿意出这部分培训费用和培训时间以及UI Designer乐于使用新工具的话。

2,新的模式有那些?

新的模式有好几种,这取决于团队中成员的技能和职责,但我比较推荐的有两种。

(1)集成模式

WPF角度看,团队中除了UI DesignerDeveloper以外,我们再引入一个新的角色Integrator。首先看看他们各自的职责:UI Designer的职责保持不变,但我们稍稍改变一下她的“输出”,其除了输出各种idea,布局图,效果图等等之外,其还将为我们输出其它所有的图形(比如一个漂亮的按钮),但是以XAML的形式(这会用到一些插件或小工具,你可以在这里找到http://www.cnblogs.com/zhouyinhui/archive/2007/12/08/987928.html)。请注意,其输出的是一些松散的XAML零部件,仅仅描述了图形,没有StyleTemplateTriggerResource等概念。这样UI Designer既不会改变惯有的工作方式,又可以专注与图形和用户体验。而Developer的职责也保持不变,其专注于后台逻辑,但放弃对界面的所有权,其是C#(或其它)的拥有者。而Integrator将致力于他们两者之间的结合,其负责将从UI Designer那里得到的松散的XAML按照软件开发者的观念在Blend中组合成真正的项目中的零部件,比如其将负责TemplateStyleAnimation以及界面的模块化,资源的组织,考虑其可维护性,稳定性,对性能的影响等等,其是XAMLBlend的拥有者。

这有一些明显的好处

(i)                  没让成员做不擅长的事。在旧模式中,让DeveloperBlend中绘制出艺术品或者让UI Designer按照开发者的观念来管理Blend端显然是强人所难,并且这也会分散他们的精力甚至带来抱怨。但目前的模式将这些负担转移出去了。

(ii)                避免了重复劳动。旧模式中,Developer来“翻译”UI Designer的成果的劳动是重复和痛苦的。而当前模式中图形的XAML直接来自于UI Designer。我们需要做的仅仅是整合。

(iii)               避免了实际“翻译”出来的UI与设计时的UI的不一致。两者差距有多大完全取决于Developer的“翻译”能力,但往往效果时不理想的,以至于UI Designer觉得自己的艺术品被扭曲了。

(iv)              有人专注于Blend端,那么软件的表现层端质量将更高,更容易维护。

(2)收割模式

WPF角度来看,这个模式中只有两个角色: UI DesignerDeveloper。这个模式对UI Designer的要求较高,其需要能熟练使用Blend来创造一些成品供Developer“收割”。比如我们需要一个漂亮的按钮,那么UI Desinger直接输出给我们该按钮的Style。其甚至可以输出其它更复杂的东西,比如UserControl(不可能是CustomControl,因为他们不会写程序逻辑,除非和Developer合作)。他们的工作是在解决方案中的某个辅助项目中完成了,而负责软件的真正表现的Blend端由Developer来负责,因为这里需要考虑很多软件开发的东西。

该模式同样拥有集成模式的各种好处并且与集成模式相比,UI Designer更加融入到了项目开发过程中,但对UI Designer的要求较高。

其它一些建议:合理地整合Blend端,如果发现XAML文件过大就模块化。保持UI项目始终能用Blend打开,否则将导致团队中某些角色出局或工作起来很麻烦。别让界面和逻辑耦合在一起,如果发现逻辑对界面元素引用过多,那么可能在BindingTriggerResource等方面做得不够好。另外,相比之下,我更推荐第一种模式,我在这种模式下工作了不短时间,Integrator是我的职责之一。

个人理解,还不成熟,欢迎评论。

posted on 2008-01-17 12:28 周银辉 阅读(2794) 评论(15)  编辑 收藏 所属分类: WPF

评论

#1楼  2008-01-17 13:11 横刀天笑      

其实这个我觉得应该向Web开发上学习。
在Web开发里有美工和程序员,美工和程序员的交互也成了个问题,美工做出来的图片,程序员很难将其还原,如实出现了UI,UI要不仅仅要懂得美工的一些工具,能够切图啊等等,还要熟练的运用html,css,页面优化等知识,将美工的效果图转移到静态页面,然后程序员再在静态页面上工作。
不过这也是个理想情况,在国内好多公司是没有UI的,呵呵,不过这个情况现在越来越好了。   回复  引用  查看    

#2楼  2008-01-17 13:15 努力学习! [未注册用户]

WPF 什么时候会流行,取代 .ASPX?   回复  引用    

#3楼  2008-01-17 13:16 redmoon      

考虑的有深度,值得借鉴。
但是,随着WPF及其相关工具的推广,一些美术设计师会逐渐增加wpf技能的学习,Expression 工具也和逐渐熟练掌握。
所以,我觉得,近期集成模式是一种替代的方式;远期还是应该以“收割”模式为主(毕竟XAML转换器不可能十全十美,做完全做到Expression 的效果)。这里看来博主的集成模式也可以称作“开荒”模式了。   回复  引用  查看    

#4楼  2008-01-17 13:24 Muse      

@努力学习!
WPF不是用来取代ASPX的,而是取代WinForm及Graphics的

@楼主
先由程序员做好程序,界面仅仅是简单布局,程序完成后,由UI Designer去设计界面这种方式合适吗?

  回复  引用  查看    

#5楼  2008-01-17 14:09 wfe [未注册用户]

请把美工和UI分开好不好。产品经理、美工负责页面设计(效果图),UI负责切图,CSS/HTML,Developer负责UI的HTML转换为控件或页面   回复  引用    

#6楼  2008-01-17 14:09 akinghaha [未注册用户]

sf   回复  引用    

#7楼  2008-01-17 14:19 张大磊(Ray Zhang) [未注册用户]

不错的思考!

除此之外,也可以参考微软PM+Dev+Test+UX的模式。


  回复  引用    

#8楼 [楼主] 2008-01-17 14:32 周银辉      

@张大磊(Ray Zhang)
thank you :)   回复  引用  查看    

#9楼  2008-01-17 14:41 伍迷      

应该是最合理的是第一种方案,不过需要注意这几个问题

1、多了一个角色,这个角色不是DEV也不是UID,所以完全合适的人很难招。(没有太好的解决办法,提高薪资吸引力或许能行)
2、Integrator这个人在开发前期和开发后期都可能没事做。因为前期UID在设计UI,DEV在设计底层,那Integrator在做什么?后期UID可以做下一个项目,DEV做细节开发,Integrator已经完成工作,无事可做。(解决办法是一个Integrator负责公司的多个项目的UI和程序整合工作,工作量满)
3、由于这样的人开发技术训练不多,UI设计能力不足,会造成换工作时找不到好的职位(特指目前国内行情,没有这样的职位),使得很多人都不会朝这个方向发展,导致第一点的发生。(解决办法,等国内的技术分工明确,市场需求渐高后,会有大量此类人员产生。或者是自己找到一家非常稳定的大软件公司,让跳槽想法不存在)   回复  引用  查看    

#10楼 [楼主] 2008-01-17 14:47 周银辉      

@伍迷
分析得很好
我觉得较理想的Integrator可以由不错的Developer然后又对UI有过较多的尝试的人来充当,能熟练使用Blend,其能站在Dev和UI Designer之间为两方做考虑。   回复  引用  查看    

#11楼  2008-01-17 15:08 David Fan      

Flex方向也遇到类似这种问题   回复  引用  查看    

#12楼 [楼主] 2008-01-17 17:22 周银辉      

@Muse
这还是涉及到Blend端由谁负责,UIDesinger输出什么等问题。   回复  引用  查看    

#13楼  2008-01-17 21:28 yAYX      

我们也有同样的问题
主要问题是Blend这个东西使用者的角色
说实话引入一个新的角色Integrator,这是很好的解决办法,这相当于Web开发中的切图人员
不过说实在的,WPF的切图难度远大于HTML页面!能承担Integrator这个角色的人短时间内搞定是很困难的~
主要问题在于WPF逻辑和界面的耦合性可以很大,你可以很容易的只写HTML+CSS不关心C# 但是你很难只关心XAML而忽视C#

我理想中的一种比较好的模式,是项目经理可以承担负责设计“每个页面有什么东西”的工作,就好像设计HTML页面首页要分几块,什么内容一样
然后由Developer设计出适当的布局XAML 包括border 各种panel grid等 主要是表现出一个布局的层次关系 甚至包括设计Triggers Binding之类的工作
而这些内容如何摆放,由专职的UI Designer负责 工具可以使用Designer Blend等
UI Designer和Developer工作一定要紧密合作,他们的工作需要是不断交流的

我们倒是几乎不在Blend里面打开项目,而只是用Blend做一些局部的设计,触发器,Template之类的设计,然后Developer直接通过代码写到XAML里面,维护XAML的纯洁~
这就好像做Web项目很少直接使用DW或者Expression Web生成的代码一样~很难奢望ASP.net的Web项目能直接用DW打开。虽然有这些工具,但是他们的功能只是帮助生成一些代码而已



  回复  引用  查看    

#14楼  2008-01-18 13:17 YoHan      

WPF用了有一年半多了,一直不温不火。

相对于UI Designer学习XAML,目前来看,还是Developer转译UI Design比较现实。

集成模式: Integrator? 应该是从分离Design,总结为Style等可以直接加在ResourceDictionary使用吧。可是,毕竟集成也需要时间。后期客户Design规模更新,一个人忙不过来吧。另外,对于各个控件来说,对Design也需要理解,毕竟对自己部分的理解会更深一些。感觉这样,相当于母鸟在外面捕食,小鸟张着嘴等着吃一样,对沟通和成长都不太好。

目前项目Public Style和疑难问题都是有专人负责的。可这种Integrator,不太赞成。

收割模式:客户提供成品供收割?Maybe以后WPF大行其道时会有可能。目前最理想的情况也就是Flash+Detail Design+png

WPF之路,我觉得是楼主在考虑的。开发人员之路,经验决定人不可能总是简单重复化。C# --〉架构师。WPF --〉what? 我是比较迷茫的。当时WPF&&Managed C++,真的很有劲头。现在......

楼主公司有没有用过内部的Vista SP1的版本测试?以前Work on的程序出错了好多,还都是特别诡异的问题,头疼......


  回复  引用  查看    

#15楼  2008-01-19 12:57 flyingchen      

图片---->div+css+htm---->dev似乎是正道。这个对ui这层要求还是挺高的   回复  引用  查看    

导航

公告

<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

常用链接

留言簿(77)

我参加的小组

我参与的团队

随笔分类(171)

随笔档案(162)

友情链接

积分与排名

最新随笔

阅读排行榜