📄 200602281725525.html
字号:
<P> 5、面向对象的软件开发方法</P>
<P> 当前计算机业界最流行的几个单词就是分布式、并行和面向对象这几个术语。由此可以看到面向对象这个概念在当前计算机业界的地位。比如当前流行的两大面向对象技术<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604152041495.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604152041495.html'" tppabs="http://www.itisedu.com/phrase/200604152041495.html" target="_new">DCOM</a>和<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604031336425.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604031336425.html'" tppabs="http://www.itisedu.com/phrase/200604031336425.html" target="_new">CORBA</a>就是例子。当然我们实际用到的还是面向对象的编程语言,比如C++。不可否认,面向对象技术是软件技术的一次革命,在软件开发史上具有里程碑的意义。 </P>
<P> 随着<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604240956125.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604240956125.html'" tppabs="http://www.itisedu.com/phrase/200604240956125.html" target="_new">OOP</a>(<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200603050951565.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200603050951565.html'" tppabs="http://www.itisedu.com/phrase/200603050951565.html" target="_new">面向对象编程</a>)向<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231256315.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231256315.html'" tppabs="http://www.itisedu.com/phrase/200604231256315.html" target="_new">OOD</a>(<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200603050045535.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200603050045535.html'" tppabs="http://www.itisedu.com/phrase/200603050045535.html" target="_new">面向对象设计</a>)和<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200603050028345.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200603050028345.html'" tppabs="http://www.itisedu.com/phrase/200603050028345.html" target="_new">OOA</a>(<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231254345.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231254345.html'" tppabs="http://www.itisedu.com/phrase/200604231254345.html" target="_new">面向对象分析</a>)的发展,最终形成面向对象的软件开发方法OMT (<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231338435.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231338435.html'" tppabs="http://www.itisedu.com/phrase/200604231338435.html" target="_new">Object</a> Modeling Technique)。这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。所以OMT彻底实现了PAM没有完全实现的目标。不仅如此,<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231401365.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231401365.html'" tppabs="http://www.itisedu.com/phrase/200604231401365.html" target="_new">OO</a>技术在需求分析、可维护性和可靠性这三个软件开发的关键环节和质量指标上有了实质性的突破,基本地解决了在这些方面存在的严重问题。</P>
<P> 综上所述,面向对象系统采用了自底向上的归纳、自顶向下的分解的方法,它通过对对象模型的建立,能够真正建立基于用户的需求,而且系统的可维护性大大改善。当前业界关于面向对象建模的标准是UML(<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231301515.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231301515.html'" tppabs="http://www.itisedu.com/phrase/200604231301515.html" target="_new">Unified Modeling Language</a>)。</P>
<P> 这里我们需要谈一下微软的<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231607095.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231607095.html'" tppabs="http://www.itisedu.com/phrase/200604231607095.html" target="_new">MSF</a>(Microsoft Solutions <a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604241001145.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604241001145.html'" tppabs="http://www.itisedu.com/phrase/200604241001145.html" target="_new">Framework</a>)的框架,它简单的把系统设计分成三个阶段:概念设计、逻辑设计和物理设计。概念设计阶段就是从用户的角度出发可以得到多少个对象,并且以对象为主体,画出业务框架。逻辑设计阶段就是对概念设计阶段的对象进行再分析、细分、整合、删除。并建立各个对象的方法属性以及对象之间的关系。而物理设计实际上就是要确定我们实际需要的<a href="200603302222545.html" tppabs="http://www.itisedu.com/phrase/200603302222545.html" target="_new">组件</a>、服务和采用的框架结构、具体的编程语言等。MCF整个结构比较清楚是基于对象开发的一个比较好的可操作的框架系统。</P>
<P> 6、可视化开发方法 </P>
<P> 其实可视化开发并不能单独的作为一种开发方法,更加贴切的说可以认为它是一种辅助工具,比如用过SYBASE的S-Design的人都知道,用这个工具可以进行显示的图形化的数据库模式的建立,并可以导入到不同的数据库中去。当然用过S-Design的人不一定很多,但用过VB,DELPHI,C++ Builder等开发工具的人一定不少,实际上你就是在使用可视化开发工具。</P>
<P> 当然,不可否认的是,你只是在编程这个环节上用了可视化,而不是在系统分析和系统设计这个高层次上用了可视化的方法。实际上,建立系统分析和系统设计的可视化工具是一个很好的卖点,国外有很多工具都致力于这方面产品的设计。比如<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604240816305.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604240816305.html'" tppabs="http://www.itisedu.com/phrase/200604240816305.html" target="_new">Business Object</a>就是一个非常好的数据库可视化分析工具。</P>
<P> 可视化开发使我们把注意力集中在业务逻辑和业务流程上,用户界面可以用可视化工具方便的构成。通过操作界面元素,诸如菜单、按钮、对话框、编辑框、单选框、复选框、 列表框和滚动条等,由可视开发工具自动生成应用软件。 </P>
<P><STRONG>六、怎样培养软件工程的思维与方法</STRONG></P>
<P><BR> 作为软件开发人员的一个通病是在项目初期的时候,就喜欢谈论实现的细节,并且乐此不疲。我们更喜欢讨论如何用灵活而简短的代码来实现一个特定的功能,而忽略了对整个系统<a href="200604241328115.html" tppabs="http://www.itisedu.com/phrase/200604241328115.html" target="_new">架构</a>的考虑。所以作为一个开发人员,尤其是一个有经验的开发人员,应该把自己从代码中解脱出来,更多的时候在我们的脑子里甚至暂时要放弃去考虑如何实现的问题,而从项目或产品的总体去考虑一个软件产品。</P>
<P> 以下是我个人的一些经验:</P>
<P> 1.考虑整个项目或者产品的市场前景。作为一个真正的系统分析人员,不仅要从技术的角度来考虑问题,而且还要从市场的角度去考虑问题。也就是说我们同时需要考虑我们产品的用户群是谁,当我们产品投放到市场上的时候,是否具有生命力。比如即使我们采用最好的技术实现了一个单进程的操作系统,其市场前景也一定是不容乐观的。</P>
<P> 2.从用户的角度来考虑问题。比如一些操作对于开发人员来讲是非常显而易见的问题。但是对于一般的用户来说可能就非常难于掌握,也就是说,有时候,我们不得不在灵活性和易用性方面进行折中。另外,在功能实现上,我们也需要进行综合考虑,尽管一些功能十分强大,但是如果用户几乎不怎么使用它的话,就不一定在产品的第一版的时候就推出。从用户的角度考虑,也就是说用户认可的才是好的,并不是开发人员觉的好才好。</P>
<P> 3.从技术的角度考虑问题。虽然技术绝对不是唯一重要的,但是技术一定是非常重要的,是成功的必要环节。在产品设计的时候,必须考虑采用先进的技术和先进的体系结构。比如,如果可以采用多<a href="200603091754305.html" tppabs="http://www.itisedu.com/phrase/200603091754305.html" target="_new">线程</a>进行程序中各个部分并行处理的话,就最好采用多线程处理。在Windows下开发的时候,能够把功能封装成一个单独的COM构件就不作成一个简单的DLL或者是以源代码存在的函数库或者是对象。比如能够在<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604291151335.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604291151335.html'" tppabs="http://www.itisedu.com/phrase/200604291151335.html" target="_new">B/S结构</a>下运行并且不影响系统功能的话就不一定要在C/S下实现。</P>
<P>4.合理进行模块的分割。从多层模型角度来讲,一般系统可以分成用户层、业务层和<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604241152425.html \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon. \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604241152425.html'" tppabs="http://www.itisedu.com/phrase/200604241152425.html" target="_new">数据库层</a>三部分。当然每以部分都还可以进行细分。所以在系统实现设计的时候,尽量进行各个部分的分割并建立各个部分之间进行交互的标准。并且在实际开发的时候,确实有需要的话再进行重新调整。这样就可以保证各个部分齐头并进,开发人员也可以各施其职。</P>
<P> 5.人员的组织和调度。这里很重要的一点是到考虑人员的特长,有的人喜欢做界面,有的人喜欢做核心。如果有可能要根据人员的具体的情况进行具体的配置。同时要保证每一个开发人员在开发的时候首先完成需要和其他人员进行交互的部分,并且对自己的项目进度以及其他开发人员的进度有一个清晰的了解,保证不同部分的开发人员能够经常进行交流。</P>
<P> 6.开发过程中文档的编写。在开发过程中会碰到各种各样的问题和困难,当然还有各种各样的创意和新的思路。应该把这些东西都记录下来并进行及时整理,对于困难和问题,如果不能短时间解决的,可以考虑采用其他的技术替代,并在事后做专门的研究。对于各种创意,可以根据进度计划安排考虑是在本版本中实现还是在下一版本中实现。</P>
<P> 7.充分考虑实施时可能遇到的问题。开发是一回事情,用户真正能够使用好它又是另外一回事情。比如在<a href="200604241249435.html" tppabs="http://www.itisedu.com/phrase/200604241249435.html" target="_new">MIS</a>系统开发中,最简单的一个问题就是用户如果数据输入错误的时候,如何进行操作。在以流程方式工作的时候,如何让用户理解自己在流程中的位置和作用,如何让用户真正利用计算机进行协作也是成败的关键。</P>
<P> 以上是我个人的一点体会,实际上,作为一个软件开发人员,我也喜欢看到问题就坐在计算机前面直接编码,但是我确实认为软件工程对于我们系统开发的指导作用是巨大的。作为软件工程的拥戴者,下面我简单结合自己的开发经历介绍基于软件工程的开发方法、编程规范和工具使用等方面的问题。 </P>
<P><BR><STRONG>七、软件开发的发展变化</STRONG></P>
<P><BR> 国外很多项目的开发都是基于一些图形化的东西来做的,他们的目的是尽量少写代码甚至不写代码。代码能够通过图形化的方式自动生成,这样的一个好处就是如果用户的需求变化或者业务逻辑发生变化,我们需要做的就是对图形表示的调整,然后重新自动生成代码,这也就是国外开发很注重对项目的概念和逻辑分析的原因。</P>
<P> 他们的重点是把业务规则和需求用图形化的方式表现出来,然后通过CASE工具自动生成代码。所以当国人还在不停的开发一个又一个的MIS工具的时候,国外已经把很多精力放到了CASE工具的制作上。</P>
<P> 我们很多公司人员忙着写具体业务过程的相关代码,而国外很多都把精力放到对不同应用,不同行业的模型的建立和共性的提取上。所以,他们做出来的东西就相对具有很强的灵活性和扩展性,而我们是用户的需求稍微有一点变化,就要忙着改代码,甚至改体系结构。</P>
<P> 另外,因为他们注重模型的建立,所以在建立其他应用的时候,能够借鉴原先的模型,在高层次上做调整和优化,同时能够有效的提取原有系统中可以被使用的部分。所以我们应该从以代码为核心的软件开发模式转化到以模型为中心的、基于CASE的开发上来。</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -