20140415 第7章 原型模式
- 格式:pdf
- 大小:722.95 KB
- 文档页数:31
快速原型法--资料“快速原型法”在项目开发中的成功案例项目型软件的开发流程,通常会包括七个步骤:第一步:需求调研分析;第二步:概要设计;第三步:详细设计;第四步:编码;第五步:测试;第六步:软件交付准备;第七步:验收与收尾工作。
在项目型产品的开发过程中,依据软件工程思想的标准,遵循软件开发流程(Software development process)一步步的操作是最正统和最标准而且有效的做法,项目组人员的理解并落实这一点,整个项目就会朝着良性的方向发展。
狭义的项目组成员是指软件公司的人员,广义的项目组成员还应该包括客户方,对于客户来说,更关心的是结果而不是过程。
由于项目组成员们的专业素养和技术水平会有差异(比如项目开发方的长处在计算机方面,而合作方在专业知识),再加上沟通不畅等因素,会给项目带来一些负面影响,比如甲乙双方对于研发成果存在争议、项目无法按期完成等等。
简单谈一下Byteh经历的一个项目情况。
由于项目的专业性,摆在项目组人员的第一个问题就是理解需求其次才是后续步骤。
如果严格按照软件开发的流程,必然会出现一些不可控的风险。
我方项目组果断决定采用快速原型法和敏捷开发的思想作为此次项目开发的主导,主要有以下几个措施:1、在获取用户原始需求后迅速理解开发出一个雏形,把一个能看到的软件界面反馈给用户去探讨更进一步的需求,去更准确的把握用户需求,反复迭代。
这点对甲乙双方都是有利的,当你拿着一堆文档让客户确认需求签字,从文档上看双方理解一致就签字了,然而等中期汇报做出来成果会发现简直就是南辕北辙,下次再签字肯定就会犹豫了……下图来自网上,说明了各方理解的“需求” 和成果的差异:2、把编码工作提到了概要设计和详细设计的前面或者并行,不等待所有的文档都完成才去进行下一步的工作。
任何好的制度如果僵化,就会出现与制度目的背离的结果,请参考byteh的另一篇博文。
3、出现疑问和争议时抱着“友好合作协商解决”的态度去及时沟通,当然了也是个合作与斗争的过程,一味的满足用户需求做出承诺意味着“死亡”而且客户未必也会领你的“情”。
实验(上机)三原型模式实验(上机)目的1、练习使用创建型设计模式;2、练习使用原型模式的设计思路;3、练习使用原型模式实现“OA系统中工作周报创建”案例的实现。
实验(上机)课时2学时实验(上机)环境Visual Studio 2010\Visual Studio 2013预备知识1、原型模式概述;2、原型模式的结构与实现;3、原型模式的应用实例;4、原型管理器;5、原型模式的优缺点与适用环境。
实验(上机)内容在使用某OA系统时,有些岗位的员工发现他们每周的工作都大同小异,因此在填写工作周报时很多内容都是重复的,为了提高工作周报的创建效率,大家迫切地希望有一种机制能够快速创建相同或者相似的周报,包括创建周报的附件。
试使用原型模式对该OA系统中的工作周报创建模块进行改进。
新建解决方案,新建一个控制台应用程序,编写原型模式类实现代码,实现以上需求的案例,要求编写为控制台应用程序,并能调试运行。
实验(上机)步骤1、编制类结构图Client--prototypecopy: Prototype: Prototype+Operation () ...Prototype+Clone ()...: PrototypeConcretePrototypeA+Clone ()...: PrototypeConcretePrototypeB+Clone ()...: Prototype本实例类图:WeeklyLog----++++<<PropertyImplementation>><<PropertyImplementation>><<PropertyImplementation>><<PropertyImplementation>><<Property>><<Property>><<Property>><<Property>>attachment namedate content Attachment Name Date Content : Attachment : string : string : string : Attachment : string : string : string+++++++++<<Setter>><<Getter>><<Setter>><<Getter>><<Setter>><<Getter>><<Setter>><<Getter>>Clone ()set_Attachment (Attachment value)get_Attachment ()set_Name (string value)get_Name ()set_Date (string value)get_Date ()set_Content (string value)get_Content ()...: WeeklyLog: void : Attachment : void : string : void : string : void : stringAttachment-+<<PropertyImplementation>><<Property>>name Name : string : string +++<<Setter>><<Getter>>set_Name (string value)get_Name ()Download ()...: void : string: void 2、 打开VS20103、 依次点击菜单“文件(F )”>新建(N)>”项目(P)”,弹出下面对话框:4、在弹出的对话框中,在模板选项下选择“Visual C#”->“Windows”选项,最后选择“控制台应用程序”。
第5章高级交互AdvancedInteractions在以下两种对立的产品开发理念和实践方式上,Axure做了独特的权衡、调和。
这两种方式分别是:●以设计师为中心:快速高效地创建交互原型,最大限度地减少编码。
●以开发者为中心:非常依赖编码。
第一种方式非常吸引UX社区的活跃用户——一群追随Axure的从业者。
因为Axure让设计师不用编写HTML、CSS、JavaScript,也无须前端开发工程师的帮助就能将用户体验概念化、可视化。
原型是多面的也是临时的,它是在以用户为中心的设计过程中产出的信息架构和交互流程的体现。
UX架构师和设计师对用户行为研宄得越透彻,设计出的体验就越好。
Axure让构思、验证和迭代原型的过程变得更加快速和简单。
当然,Axure还提供了很多高级功能和选项让我们创建高保真原型,甚至是响应式HTML原型。
因此,Axure7可以说是最先进、最强大的以UX为中心的设计工具之一。
近几年,我们看到了很多Axure开发人员的出现——他们拥有熟练的编码技能,并利用自己的编码技巧去增强更多Axure高级功能。
但是,这样会不会束缚大部分UX从业者呢?毕竟大部分UX从业者是不会编程的,难道还要回到以前,设计师不直接掌控自己的设计,而是把设计交给开发人员吗?答案当然是“No”。
不要被本章的标题“高级”两个字吓跑。
我们会介绍触发事件(RaisedEvents)、条件逻辑(ConditionalLogic)和变量(Variables)这些高级功能,也会涉及一些编程相关的术语。
也许你不懂编程,也不感兴趣,想尽量避免使用这些Axure功能,这可以理解,但大可不必如此。
首先,请放心,这里不会涉及代码的编写。
到目前为止,你已经熟悉了Axure交互和情景编辑器功能,这两项功能只需要在界面上“指指点点”就可以创建交互,唯一需要输入文本的情况就是进行命名。
使用条件编辑器,也同样如此简单。
其次,我们使用的是交互设计中的一些术语和方法。
软件设计模式(JAVA)习题答案软件设计模式(Java版)习题第1章软件设计模式基础1.1 软件设计模式概述1.2 UML中的类图1.3 ⾯向对象的设计原则⼀、名词解释1.⼀个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展⼀个系统的⾏为。
2.⼀个对象应该只包含单⼀的职责,并且该职责被完整地封装在⼀个类中。
3.在软件中如果能够使⽤基类对象,那么⼀定能够使⽤其⼦类对象。
4.是⼀套被反复使⽤、多数⼈知晓的、经过分类编⽬的、代码设计经验的总结,使⽤设计模式是为了可重⽤代码、让代码更容易被他⼈理解、保证代码可靠性。
⼆、单选择题1.( A )2.( A )3. ( A )4. ( D )5. ( D )6.( A ) 7. ( D ) 8.( D ) 9.( D ) 10.( E )11.( C ) 12.( C ) 13. ( A )三、多选择题1.( A、B、C、D ) 2. ( A、B ) 3.( A、D ) 4.( A、B、C、D ) 四、填空题1.依赖倒转、迪⽶特法则、单⼀职责2.模式名字、⽬的、问题、解决⽅案、效果、实例代码3.超类、⼦类4.开闭5.⽤户6.依赖倒转7.组合/聚合8.结构型、⾏为型9.依赖倒转10.开闭11.需求收集是否正确、体系结构的构建是否合理、测试是否完全12.⼈与⼈之间的交流13.接⼝14.名称、⽬的、解决⽅案15.对象组合、类继承16.对象组合17.对象组合、类继承18.抽象类的指针五、简答题1.答:设计模式按类型分为以下三类:1)创建型设计模式:以灵活的⽅式创建对象集合,⽤于管理对象的创建。
2)结构型设计模式:将⼰有的代码集成到新的⾯向对象设计中,⽤于处理类或对象的组合。
3)⾏为型设计模式:⽤于描述对类或对象怎样交互和怎样分配职责。
2.答:设计模式的主要优点如下:1)设计模式融合了众多专家的经验,并以⼀种标准的形式供⼴⼤开发⼈员所⽤,它提供了⼀套通⽤的设计词汇和⼀种通⽤的语⾔以⽅便开发⼈员之间沟通和交流,使得设计⽅案更加通俗易懂。