首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>Java基础>正文

进阶-怎样成为优秀的软件模型设计者?

http://www.oklinux.cn  2008-01-21  来源: 赛迪网 mayu  会员收藏  游客收藏  【 】 


  13. 治理接口

  “UML User Guide”(Grady Booch,Ivar Jacobson和Jim Rumbaugh ,Addison Wesley, 1999)中指出,你应该在开发阶段的早期就定义软件模块之间的接口。

  这有助于你的开发人员全面理解软件的设计结构并取得一致意见,让各模块开发小组相对独立的工作。一旦模块的接口确定之后,模块怎样实现就不是很重要了。

  从根本上说,假如你不能够定义你的模块“从外部看上去会是什么样子”,你肯定也不清楚模块内要实现什么。

  14. 走近路需要更长的时间

  在软件开发中没有捷径可以走。

  缩短你的在需求分析上花的时间,结果只能是开发出来的软件不能满足用户的需求,必须被重写。

  在软件建模上每节省一周,在将来的编码阶段可能会多花几周时间,因为你在全面思考之前就动手写程序。

  你为了节省一天的测试时间而漏掉了一个bug,在将来的维护阶段,可能需要花几周甚至几个月的时间去修复。与其如此,还不如重新安排一下项目计划。

  避免走捷径,只做一次但要做对(do it o­nce by doing it right)。

  15. 别信赖任何人

  产品和服务销售公司不是你的朋友,你的大部分员工和高层治理人员也不是。

  大部分产品供给商希望把你牢牢绑在他们的产品上,可能是操作系统,数据库或者某个开发工具。

  大部分的顾问和承包商只关心你的钱并不是你的工程(停止向他们付款,看一看他们会在四周呆多长时间)。

  大部分程序员认为他们自己比其他人更优秀,他们可能抛弃你设计的模型而用自己认为更好的。

  只有良好的沟通才能解决这些问题。

  要明确的是,不要只依靠一家产品或服务提供商,即使你的公司(或组织)已经在建模、文档和过程等方面向那个公司投入了很多钱。

  16. 证实你的设计在实践中可行

  在设计的时候应当先建立一个技术原型, 或者称为“端到端”原型。以证实你的设计是能够工作的。

  你应该在开发工作的早期做这些事情,因为,假如软件的设计方案是不可行的,在编码实现阶段无论采取什么措施都于事无补。技术原型将证实你的设计的可行性,从而,你的设计将更轻易获得支持。

  17. 应用已知的模式

  目前,我们有大量现成的分析和设计模式以及问题的解决方案可以使用。

  一般来说,好的模型设计和开发人员,都会避免重新设计已经成熟的并被广泛应用的东西。

  http://www.ambysoft.com/processPatternsPage.html 收藏了许多开发模式的信息。
  18. 研究每个模型的优点和弱点

  目前有很多种类的模型可以使用,如下图所示。用例捕捉的是系统行为需求,数据模型则描述支持一个系统运行所需要的数据构成。你可能会试图在用例中加入实际数据描述,但是,这对开发者不是非常有用。同样,数据模型对描述软件需求来说是无用的。每个模型在你建模过程中有其相应的位置,但是,你需要明白在什么地方,什么时候使用它们。
  19. 在现有任务中应用多个模型

  当你收集需求的时候,考虑使用用例模型,用户界面模型和领域级的类模型。

  当你设计软件的时候,应该考虑制作类模型,顺序图、状态图、协作图和最终的软件实际物理模型。

  程序设计人员应该慢慢意识到,仅仅使用一个模型而实现的软件要么不能够很好地满足用户的需求,要么很难扩展。

  20. 教育你的听众

  你花了很大力气建立一个很成熟的系统模型,而你的听众却不能理解它们,甚至更糟-连为什么要先建立模型都不知道。那么你的工作是毫无意义的。

  教给你开发人员基本的建模知识;否则,他们会只看看你画的漂亮图表,然后继续编写不规范的程序。

  另外, 你还需要告诉你的用户一些需求建模的基础知识。给他们解释你的用例(uses case)和用户界面模型,以使他们能够明白你要表达地东西。当每个人都能使用一个通用的设计语言的时候(比如UML-译者注),你的团队才能实现真正的合作。

  21. 带工具的傻瓜还是傻瓜

  你给我CAD/CAM工具,请我设计一座桥。但是,假如那座桥建成的话,我肯定不想当第一个从桥上过的人,因为我对建筑一窍不通。

  使用一个很优秀的CASE工具并不能使你成为一个建模专家,只能使你成为一个优秀CASE工具的使用者。成为一个优秀的建模专家需要多年的积累,不会是一周针对某个价值几千美元工具的培训。一个优秀的CASE工具是很重要,但你必须学习使用它,并能够使用它设计它支持的模型。

  22. 理解完整的过程

  好的设计人员应该理解整个软件过程,尽管他们可能不是精通全部实现细节。

  软件开发是一个很复杂的过程,还记得《object-oriented software process》第36页的内容吗?除了编程、建模、测试等你擅长工作外,还有很多工作要做。

  好的设计者需要考虑全局。必须从长远考虑如何使软件满足用户需要,如何提供维护和技术支持等。

  23. 常做测试,早做测试

  假如测试对你的软件来说是无所谓的,那么你的软件多半也没什么必要被开发出来。

  建立一个技术原型供技术评审使用,以检验你的软件模型。

  在软件生命周期中,越晚发现的错误越难修改,修改成本越昂贵。尽可能早的做测试是很值得的。

  24. 把你的工作归档

  不值得归档的工作往往也不值得做。归档你的设想,以及根据设想做出的决定;归档软件模型中很重要但不很明显的部分。 给每个模型一些概要描述以使别人很快明白模型所表达的内容。

  25. 技术会变,基本原理不会

  假如有人说“使用某种开发语言、某个工具或某某技术,我们就不需要再做需求分析,建模,编码或测试”。不要相信,这只说明他还缺乏经验。抛开技术和人的因素,实际上软件开发的基本原理自20世纪70年代以来就没有改变过。你必须还定义需求,建模,编码,测试,配置,面对风险,发布产品,治理工作人员等等。

  软件建模技术是需要多年的实际工作才能完全把握的。好在你可以从我的建议开始,完善你们自己的软件开发经验。
共3页: 上一页 [1] 2 [3] 下一页

上一篇:Java语言深入--对JAVA 的多线程浅析   下一篇:J2SE综合--JAVA实现把汉字转化成拼音


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Java语言深入--对JAVA 的多线程浅析
·J2SE综合--JAVA实现把汉字转化成拼音
·J2SE API读取Properties文件的六种方法
·JSP生成静态页面-Tomcat提高性能之王道
·JAVA进阶--使用Axis开发Web Service程序
·谈论什么是Servlet以及Servlet的优越性
·将java对象转为java String的几种方法
·使用J2SE API读取Properties文件的方法
·Java语言深入:在Java中使用VC++组件
·J2SE综合--讨论关于Java占用内存的研究
·通过反射调用其他类的private method
·高级:使用Spring更好地处理Struts动作
·Redhat9下的java中文问题解决
·基于JDK5.0一些collection类的使用总结
·String和StringBuffer之概览
·深入讨论JAVA规则开发篇
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java入门:状态对象--数据库的替代者
·Java语言怎样调用外部应用程序
·Java语言深入--关于Java语言的内存泄漏
·JSP/Servlet/JSF:Servlet/JSP配置详解
·进阶-怎样使用AJAX进行WEB应用程序开发
·基础:J2ME程序开发之新手入门九大要点
·Java入门--Java语言接口与继承的本质
·JAVA进阶--如何提升JSP应用程序的效率
·对Java中四种XML解析技术之不完全测试
·编写高级 JScript应用代码
·JSP/Servlet/JSF--对标签库的深入研究
·Java入门--关于字符串分割的两种方法
  阅读排行
·使用AJAX技术实现网页无闪自动局部刷新
·快速教您Apache Tomcat SSL的配置
·Java语言深入--java调用C/C 的过程
·用JSP JavaScript打造二级级联下拉菜单
·JAVA进阶--线程运行栈信息的获取讲解
·使用WEBWORK实现文件上传方法实例详解
·J2SE综合--JAVA实现把汉字转化成拼音
·一个非常有趣的使用spring框架AOP例子
·关于java中相对路径,绝对路径问题总结
·高级:lucene全文检索应用示例及代码简
·详细讲解Struts构架中action的跳转大全
·在Weblogic上配置JMS服务的方法
·Hibernate配置文件中的映射元素详解
·对Java中四种XML解析技术之不完全测试
·基于AJAX的动态树型结构的设计与实现
网摘收藏: