如何保证面向对象分析与设计的系统的完整性与正确性?
小弟日前在做课题,采用面向对象的分析与设计。说实话我是摸着石头过河,心里有一个疑惑始终不解:面向对象分析与设计是如何保证系统的完整性与正确性呢?分析有漏洞怎么办?设计有缺陷怎么办?
我迟迟不敢动手,导师骂的我好惨.....呜,呜~~~~
人认识问题的过程是一个渐进的过程,没有人能一开始就保证系统分析和设计的完整与正确,分析和设计中肯定会存在漏洞,这是必然的,但是这也正是OOA/OOD的优势所在:
在这里我不想说演进模型和迭代式开发,那是软件开发过程的事,单说面向对象方法的好处,既然前面说了分析、设计中通常都会有考虑不全面的地方,而这正是OO方法的强项,因为OOA/OOD使用同样的语汇和描述方法,它们之间过渡自然,而OOD也很容易转化为实际实现的OOP模型,这样当分析中出现失误,需要修改分析、设计和实现模型,其开销要比传统的方法小很多,如果使用结构化的方法,分析、设计、实现之间使用不同的语汇、表达方式,更难保证一致性!
如果采用结构化的方法,你是否就可以保证系统的完整性与正确性呢?
非常赞同mach(简直有点崇拜)
软件开发,难度最大的其实就是维护.面向对象之所以能取代结构化方法,就在于它的可维护性.
放手去做,何况你还有导师.
但是我怎么样保证它错误最少呢?出了错误,我应该怎么样去修改呢?谢谢!
无论用什么方法都不能保证不出错或错误最少,除了错误,首先要分析错误的原因,并找到解决的方法。比如是需求理解错误,那么要修正需求分析,并且对其后涉及的所有软件工程活动进行修正。。。
mach说的不错,开发软件并不是一气呵成,它是一个过程。
需求分析的好与坏、详细与简单等都会影响到后面编码、测试等很多问题,开发软件错误是肯定是有的。我认为错误是不可怕的,要勇于面对错误。这样才更有戏剧性和挑战性。
需求分析也不是一成不变的,它也需要不断的进化,从一个框架-->模型和文档-->产品,也是有一个更新反复的阶段。
我觉得不怕于错误,就先列出要做的工作和步骤计划,然后踏踏实实的一步一步来做下去。
我想你是一定会成功的。
最重要的心不要浮。
设计系统的完整性与正确性?
这个问题我觉得有必要讨论一下,因为我以前用面向过程的方法设计时,只要开始需求分析做对,然后逐步细化数据流图,最后再转换成功能模块图,一步一步很容易理解,也不会漏掉什么功能;
但如果使用面向对象的设计方法,开始画用例图还好办点,但怎么至底向上画出类图和对象图,我觉得不太容易定义得很全面,很完整。
大家有什么好的方法吗?
to seinfo(软工信天使)
是否能保证设计系统的完整性与正确性与使用的方法有关系,但不是能不能做到的问题,面向过程还是面向对象的方法都能做到,但是有难易的区别。
用面向过程的方法相对来说难度大一些,这是因为,这种方法在分析、设计阶段使用不同的方法、术语和模型,任何变换的过程都会产生误差,因此一个需求经过分析、设计、编码的过程可能产生歧义,而且由于上述方法、术语、模型的差异导致设计过程相对复杂,效率低。
面向对象的方法的好处在于过渡自然,分析和设计采用同样的术语、类似的方法和一致的模型,这样就没有了面向过程方法的上述缺点。
to: mach(照虎画猫)
哪我又怎么样知道我出错了没有呢?谢谢!
to: mach(照虎画猫)
分析之前不知道自己如何保证完整性与正确性,分析之后又不知道如何来查出错误。靠出错来保证完整性与正确性是不是太搞笑了点儿?
这里所讨论的这个问题正是OO思想的本质,也是它出现以后受到广泛欢迎的重要原因,使用OO更容易保证分析设计的正确和完整。原因在于你深入的研究结构化思想和OO思想。我想如果你精通c和java,经过比较就会理解它们的不同。
我相信,思想不是讲述的,而是实践之中慢慢体会的。软件工程的所有东西,都可以在编程,开发的实践里面理解。反对学院派。
思想不是万能的,没有思想是万万不能的。还是先做再说吧。
to: mach(照虎画猫)
谢谢你的解答,我也知道面向对象的设计方法肯定比面向过程的方法更接近现实世界,更容易适应变化,但我现在因为没有用面向对象的方法设计系统的经验,在尝试下发现定义类图和对象图好像不是很容易,如果大虾你用面向对象的方法设计过系统,能给我指点一二,告诉我怎么从用例图设计出类图和对象图吗?
谢谢!
首先我用的是rose,不支持对象图:(
至于类的识别,方法很多,但都不很是很好操作,有好多经验因素在里面,比如可以用名词分析的方法来查找候选类。
另外可以根据use case画出序列图,可以用序列图找到候选类。
to widewave(冯雨)
"靠出错来保证完整性与正确性是不是太搞笑了点儿"
怎么会是靠出错来保证完整性呢?
没有人能在一开始就考虑得很完整的,认识问题总是一个逐步的过程,很可能你的设计到了编码阶段才发现有问题,这很正常,再有经验的设计师也不能避免,从你的问题看好像你用面向过程的方法就能保证不会出错了吗?
要避免出错,但不能因为怕出错而迟迟不做决定!否则还不如出错。
经验非常重要,不要指望学了两年OO就可以大拿。。。。
不管采用什么办法,评审是很重要的,这是发现分析阶段错误的一个必要手段。
我记得《软件工程,实践者之路》上面说:主要应该靠“向后回顾”(大概是这个意思吧)来保证正确性。在每一个阶段的“向后回顾”可以保证与上一个阶段的一致性。
我觉得是这样:
不一定追求第一次设计系统就是完整的,
但是追求系统已经具有的功能是完善并且相对独立的,
而且追求一种柔性:增加新的系统特性时是容易而且安全的。
你应该好好参考一下RUP,其实要解决你这个问题靠的不是OO或结构化的方法,而是迭代。