你被要求为你的公司或者客户开发一个电子商务(e-commerce)平台。这是你一生的机遇,而且其中充斥着诸如此类难以理解的行话:关键任务(missioncritical)、商业线(lineofbusiness)、高度可视(highlyvisible)、极端技术(bleeding-edgetechnology),还有,如果你幸运的话,你的作品将会被数以十万计的人看到。talent.mypm.net
但是,在我们可以沉醉于荣誉之前,请耐心一点,首先让我们向自己提几个基本的问题。在回答问题之前请确认你对自己是诚实的,因为这关系到你会成功还是失败。另外,这儿只有咱们俩,我又能告诉谁呢?service.mypm.net
首先,你曾经设计、开发并且配置过一个经过关键任务容错为99.9%的应用程序吗?你自信能设计和开发一个需要处理每天两万、三万甚至五万个事务的应用程序逻辑吗?你知道如何开发一种性能评测手段来检验你的作品吗?你能确认你的系统是百分之百的安全并且不会被黑客从外部攻破吗?你知道如何管理诸如均衡装载(loadbalancing)、系统冗余(systemredundancy)和主干集成(Legacyintegration)这样的问题吗?对这些问题,你的回答很可能大多数是;不;,如果不是全部的话。别灰心。你是在这样一种环境中,这里绝大多数软件开发人员和顾问也都面临同样的挑战和问题。事实上,我们中的大多数人也是直到最近才开始处理这些问题。项目经理圈子
这篇文章是一个三部曲系列的第一部分。主要是介绍一些技巧性的东西,提供一些方便的参考,并且给你一个大概的行动方案。然后我们将集中到与设计一个电子商务平台相关的核心问题上。我们将通过示范设计一个大规模的电子商务平台来结束本文。在本系列的第二篇文章中,我们将集中到开发问题上,诸如代码优化(codeoptimization)、调试(debugging)、源控制(sourcecontrol)、数据库设计(databasedesign)、提高性能的技巧(performancetips)和其他一些问题。在系列的最后一篇文章,我们将讨论如何使我们的工作富于艺术并且怎样在一个产品环境中管理它。本系列的目的是给你提供一个上述问题的基于真实世界的答案,以及你在设计、开发和配置一个电子商务平台的过程中可能会遇到的问题。我们将分析项目生命周期的每一个阶段,并且使你在短时间内使自己感觉像一个专家(当然,你还是需要一点时间的,但起码比你选择走上一条荆棘密布、错误百出的道路所花的时间要少得多)。我们在一起努力工作、付出辛勤的汗水,而得到的更多是趣味。现在需要提醒你的是,我在这里提供的信息不是来源于教科书、实验室,也不是来自教室,而是来源于实践的信息,我们是在一个真实世界场景下学习。我将同你在一起,并且分担那些看起来很不错但是最终会导致极大失误的令人尴尬的事情。带上你喜欢的饮料(我可不要,啊哈,我要开车啊),放上一盘好听的音乐,轰上油门,我们的旅程开始了!项目管理者联盟
技巧:为了成功,你需要了解什么?项目管理者联盟
我喜欢皮划艇、山地自行车、徒步旅行和雪板运动。这些运动都需要一定水平的技术来保证安全和享受成功。开发一个电子商务系统没有什么不同。如果你想要获得成功的话,你需要掌握一些核心的技术或者能明白你的开发小组使用的技术。项目管理培训
在这个部分,我要提供给你一张清单,列出了你的小组需要进行的基本任务。每一个任务都定义了在项目开始之前需要的技巧、知识和技术。小组的结构会因你所处的环境发生变化,但是如果你还没有一个框架的话,我强烈建议你看看MicrosoftSolutionsFramework。建筑/设计:在一些组织中,这项任务也许是由项目经理、开发组长和技术组长来分担的。这项任务的目的是:将商业要求转化为可以被你的开发人员和质量保证(qualityassurance,QA)小组利用的技术要求。这些人(指负责这项任务的人们)需要对基于Web的应用程序设计、Microsoft?SiteServer商业版的体系,数据库设计以及备份和修复技术有着深刻的理解。根据项目的不同,他们也许还需要理解主干系统集成(Legacysystemintegration)的含义。项目管理者联盟
开发人员:电子商务系统通常需要两种类型的开发人员:Web或者前端开发人员和组件或者后端开发人员。Web开发人员必须非常熟悉ASP(ActiveServerPages),MicrosoftVisualBasic?scriptingEdition(VBscript),HTML,Javascript等技术,并且对组件对象模型(ComponentObjectModel,COM)有基本认识。小组中的Web开发人员要负责创建站点的外观和为站点的整体感觉定调,因此图形设计也许也是非常必要的。项目管理者联盟
组件开发人员需要对基本的COM开发语言非常熟悉,像C++和VB。其中很重要的一点是:他们必须理解与COM相关的性能含义,因为一个错误的选择将会导致极大的性能差异。另外,他们还应该了解SQL事务。经常有人问我:为什么主要负责编写COM对象的组件开发人员还需要了解脚本编程(指SQL中的脚本编程)。答案很简单:通过编写客户端脚本,他们可以检验自己的代码并且节省宝贵的QA时间。在Web开发人员和组件开发人员之间的分界线并不是一成不变的。Web开发人员一般是在站点的前端表现层上工作,这可能是经常需要改变,并且必须以高度动态的方式来思考问题。组件开发人员往往是集中在开发完成这些任务的组件上:与主干系统(Legacysystems)互动的组件,封装商业规则和商业逻辑的组件,访问后台数据库的组件,以及进行计算的组件。质量保证:这往往是系统中最不受重视并且通常也是投资最少的部分。为了说明拥有一个强有力的QA资源是多么重要,下面有一个急智测验(quickquiz):顾客对买到的包装好的软件产品以及对一个电子商务系统的期望之间有什么差异?顾客需要两者都是稳定的,否则他们将做另外的选择。两者都需要是可靠的并且提供正确的信息。两者都必须是经过彻底的测试以避免潜在的错误。到目前为止,你应该明白两者之间并无区别。这就是为什么在你的小组中应该有一些精通性能测试、测试客户端开发、开发测试计划和全面管理QA过程的人员的原因了参考:在哪里能获得帮助PgMp.mypm.net
许多文章都是在结尾才向你提供资源和参考,我不知道为什么是这样的,但是现在是时候改变了。这儿有一个参考列表(而不是在本系列的末尾)。如果你现在正在进行开发工作,你可以在你最需要它们的时候得到一些帮助。如果你还没有开始你的工程的话,当你读到本系列的其余部分并且意识到你还需要在这个题目上深入发掘的时候,你也很容易回到这儿来寻求帮助。TuningHighVolumeIISSites IISandMTS2.0 CommerceTopicLinks SiteServerHomePage 行动方案:设计、开发、配置,这是一个很简单的事实:预则立,不预则废,花时间来规划站点结构,考虑如何建设和构筑我们的平台,然后把钥匙交给新的用户。起码我们应该清楚在我们的电子商务平台的;设计、开发、配置;中包含的步骤。pmp.mypm.net
我首先声明,对于电子商务平台开发来说,这个行动计划是一个普遍的指南,但不是一个非常详细的方案。在这里,我要提供给你一个大概的构架,这样你可以根据它来选择你的方案。blog.mypm.net
设计:通常情况下,站点的设计工作做的很不够。在一个电子商务平台的开发工作中,你需要分析所有各部分是如何联系在一起的,并且确保你已经和所有相关各方取得了一致。在其外观之下,电子商务平台是一个纯粹的分布式系统。在某些地方,你依赖于来自一个公司其他地方、商业伙伴或者第三方付费服务的数据。这些系统和服务之间的互动会对你的站点开发造成动态的影响。直接了解这些影响并且将其作为站点设计的依据是非常重要的。项目管理者联盟
注意:在最近的一个项目中,我要求每一个开发人员在开始编制代码之前做一份详细描述他们的组件设计的文档。这看起来有些过分,但是却使我们节省了大量的时间和金钱,因为我们能够直截了当的找到错误。在你的项目的生命期内,设计是一个持续进行的过程。开发:系统的开发也许是你的项目中最有趣的一个阶段。是把你的想象变成现实的阶段。但也是绝大多数梦魇的开始--你发现事情并不是象你想的那样去做。在开发阶段你仍然需要继续设计工作,重新审视那些没能很容易的协同工作的地方。在这个阶段尽快开展QA工作也是很重要的。配置:配置也许是最能使你的小组感到灰心失意的时期。这是你实际测试你付出的辛劳和汗水和检验你的设计的时机。;设计、开发、PgMp.mypm.net
配置;这三个阶段经常搅在一起。在项目中进行产品维护和继续审视设计阶段的工作是很重要的。当你从测试和QA处获得反馈时,你需要优化甚至重新编写代码。这是整个旅程的自然的组成部分,你应该事先做好计划而不是对此感到惊讶。我们现在对项目需要哪些类型的人有了一定的了解,我们还获得了一个基本的参考,在我们的旅途中遇到困难时可以使用它们。接下来的部分,我们将介绍一些与项目相关的设计问题并且给出一些初步的解答。然后我们将通过构建一个大规模电子商务平台的方法来把我们学到的理论付诸实践。现在是你换一瓶饮料,吃块三明治,播放另一张你喜欢的CD的最好时间。项目管理者联盟
设计:为你的理想绘制蓝图我假设你已经和你的小组一起做过一个项目规划以及技术要求文档。在这一部分,我们将提出一些问题和值得关注的地方,这些都是你应该理解的。我将在适当的地方提供可能的解决方案和建议。项目管理者联盟
范围:项目的大小项目的范围是决定你的小组应该有多大,完成任务的时间,和商业上的要求是什么等几个问题的最重要的因素。在你设定项目的范围时请首先考虑以下问题: 你如何验证付款? 你是否需要支持法人信用卡? 你是否需要支持虚拟贸易和仓库? 你如何完成产品交付? 你是否需要一个non-cookie解决方案? 你需要什么样的安全等级? 你需要后台集成吗? 如果是,怎么进行? 它能够批处理吗?你如何处理取消定单的要求? 你是否支持实时目录? 你如何管理退货? 你是否需要提供在线定单记录? 需要提供哪些进一步的支持? 你需要支持哪种检索机制? 你出售什么样的商品?这些产品是如何编组的? 是否支持定制价格或者折扣? 需要储存多少顾客的记录? 需要储存多长时间的在线事务记录? 你的产品目录有多大? 尽管这不是所有问题的完整列表,但仍然不失为一个好的开始。每一个问题都关系到你要花多长的时间来成功的配置你的电子商务站点。 时间:你有多少? 我所做过的或者听说过的电子商务项目看起来都是在昨天就应该发布了。一个值得考虑的问题是:把你的系统和无论主干(Legacy)或者第三方的系统集成起来要花多长的时间?如果你开发的是一个独立的电子商务平台,你就可以自由的决定一个强制性的时间表。我能给你最好的建议是:你要搞清楚,从你的项目一开始就存在着主干(Legacy)和第三方的资源。项目管理者联盟文章
提示:在商业部门结束规划以后就把项目要求和结构交给你的小组是一个好主意。这使得你可以使用自底向上逼近的方法来决定完成项目究竟需要多长的时间。项目管理者联盟
规格:成功的指示条 尽管我们花了很多时间来定义我们的要求,但还是没有足够的时间来指定与我们的要求相关的规格。电子商务系统通常需要三个评价标准:可伸缩性(Scalability):一般以平台能承受每天多少人或者多少次点击次数作为参考。可靠性(Reliability):这个标准经常用时间来度量,例如7x24。响应速度(Responsiveness):通常用系统把信息返回给终端用户所花费的时间来衡量。这些只是基本的规格,你还需要考虑更多的东西,例如下面列出的规格。你需要通过在你和商业部门之间的谈判来确定对规格的定义。在签字以前,你必须清楚的了解你的项目的要求和范围。例如,如果要开发一个集成主干(Legacy)应用程序的系统,你一定要很仔细的定义什么是你要达到的标准。如果你声明;平均用户响应时间将少于五秒;,这究竟是只包括Web平台呢?还是在电子商务系统和三个路程段(hop)以外的网络上,并且同时用于电话销售系统的目录数据库之间的整个周期?转自项目管理者联盟
正如你看到的,清楚的定义每一条规格,并且将其量化是非常关键的。如何理解和定义你的规格将对系统开销,需要配置的结构和整个设计造成巨大的影响。在一个严格要求99.9%有效和一个马马虎虎能达到99.9%有效的系统之间,开销和设计是有着天壤之别的。设计电子商务系统时,你起码应该给出下列规格的清楚的定义:项目管理者联盟
在24小时周期内,峰值装载时间是什么时候?一天所有通信量和峰值装载通信量之比是多少? 通信量是周期性的还是表现为随机的尖峰? 尖峰的峰值范围是多少? 计划可以接受的系统关闭时间是多少? 目录和产品信息的更新或者改变的频率是多少? 搜索索引更新的频率是多少?对以下事务要求的响应时间是多少:获得查询结果、向购物篮里添加一件商品、查看商品、确定付款信息、计算定单和验证目录级别? 第三方和主干(Legacy)对这些活动的影响是什么样的? 如果系统失败,你需要多长时间转移到后备系统上? 在分析上面每一个问题时,你都应该考虑答案将如何影响你的设计。在达成每一个规格的确定目标之前,你应该给你的开发小组充足的时间来考虑与之相关的每一项开发问题。项目经理博客
平台考虑项目管理者联盟
我们谈的平台是指将作为系统基础配置的底层(包括硬件和软件)。在这里所做的选择将有助于我们了解如何接近设计,同时也与配置系统和将来对系统的管理有关。选择平台要考虑的三个问题是:安全性、服务器选择和可恢复性。PgMp.mypm.net
安全性项目管理者联盟文章
典型的,绝大多数人都关注;消费者到商业;过程的安全,并且实现了安全套接字层(SecureSocketsLayers,SSL)或者安全电子转账(SecureElectronicTransfer,SET),以此作为事务的安全措施。但是我们的眼光要放开些,要理解电子商务系统是分布式的,我们必须注意到不同方面的安全性需要。Web安全性:SSL适于消费者和Web服务器的交互过程的安全要求,在我们的案例里,Web服务器是指MicrosoftInternetInformationServer(IIS)。为了加强适应性和便于管理,我的建议是利用站点服务器的签名和成员资格属性(SiteServerPersonalizationandMembership,P&M)。SiteServerP&M提供了对SSL,cookie验证、分布式密码认证以及HTML表单的支持。并且通过映射到MicrosoftWindowsNT?安全性上的创建安全组的能力,提供了一个强有力的结构和管理的基础。请记住将来需要一个操作小组来管理这个电子商务平台,所以你需要向他们提供管理工具或者利用已有的工具,例如支持P&M的微软管理控制台(MicrosoftManagementConsole,MMC)。项目经理圈子
组件安全性:利用微软事务服务器(MicrosoftTransactionServer,MTS)可以大大的简化COM组件的管理,它同时还提供了一种管理组件安全性的方法。我们可以向产品职员提供一种通过图形界面来管理安全性的工具,但是用不着我们自己编制,只要支持MTS就行了。主干(Legacy)安全性:在我们的设计过程中永远都需要考虑同后台系统的集成,尤其是涉及到安全性时。我们需要了解如何取得对主干(Legacy)系统的访问权限以及我们需要支持什么样的政策。MicrosoftSNAServer提供了针对IBM系统的集成的安全性。在非IBM系统上,例如UNIX,我们需要自己编写网关程序。也许你愿意考虑开发一种处理你的电子商务系统和主干(Legacy)环境的COM组件。商业到商业的安全性:虚拟仓库、执行定单和交易都依赖于公司间的安全连接。这种交易必须通过一种安全的方式进行,利用加密技术是很有前途的。虽然我们可以自己开发一种机制来实现这个目的,但是最方便的是利用那些公开出售的验证技术。作为站点服务器商业版的一个组成部分,商业交换管道(CommerceInterchangePipeline,CIP)提供了对加密、S/MIME和和DCOM,以及一种返回收条的机制一样的支持,后者是一种轻量拒付方式。项目管理者联盟
|