※ 引述《yungshiang (加油)》之铭言:
: 我想请教一下,怎样的class diagram才算好呢
: 比如:
: 一个类别有没有研究内含多少属性与操作是最好的
: 或者类别的数量与类别间各种关系的比例有没有一定准则
: 或者类别、属性、操作、关系,应依照时间怎样的成长才算好的
: 或者其他...........
: 有人想过吗?或者有相关研究?
: 恳请赐教,感谢
由于个人的读书习惯不良,所以只能提供一点印象派的讯息。
记得在 2000 年前后,就有一些相关研究,像是以 Java 类别库原始码做统计,
不过谈不上很有指导意义,应该仍然属于学术上的尝试而已。
这主题在早期 OOP 的发展中,就有很多人想过了,只是归纳分析不易,
大家能提出来的东西,以经验性的抽象原则占了多数。
不过比较可以多说一点的地方是,这种统计或科学化的软件工程研究和想法,
其实是过去结构化程式设计时代的软件工程研究的延续,
泰勒式的软件生产效率科学化研究,在 1980 年代是相当主流的学术方向。
当时所谓的软件工程,是真的把软件开发,当成土木工程管理一样的事情,
尽量加以数据化、规则化,并已开始尝试建立标准化作业规范了,
特别是在欧洲,在这方面的进展不比美国差。
但个人电脑产业的兴起,把这些东西全部扫掉了。资讯产业的不断革新,
也就一次次地打破这样的规范化尝试,在以 web 为中心的网络程式设计兴起之后,
又让 OOP 的规范化,只剩下少数人在做了。
因此大部分的相关发展,都是在 1990 年代中期就已经建构出来的,
此后都是比较小的改进或修正了。
当然,更重要的概念进展,是通过工具化且有弹性的方法,以适应不同的需要,
来取代过去那种不断细化叠加的硬性规制,也更尊重开发者的创新能力和自主性,
这种观念上的转变,也使得后来的软件工程研究,愈来愈少计算数字,
而主要变成一种不断调整改进的过程。
回到原题,软件生产过程中的 "关注目标"(不管那是什么)的过度简化或繁化,
都不适合实际作业。此外在生产过程不同阶段工作的平衡性,
也是增进分工效率的主要方法,相关的学术研究,则主要是经过统计和设计,
以得到切合最多数工作者现况的生产规范。
于是可以说,人性就是最重要的准则,对中小型团队来说,沟通协调还是最关键的,
与其依赖理论性的规则,不如好好去关心开发过程中,每个人的感觉和评析。