While having independent and complete modules does seem wise from this software engineering perspective, such self-contained units do present a variety of problems. First, the modules must maintain a uniformity in the interface between separate modules. This is accomplished in Prodigy with its uniform knowledge representation. However, this representation precludes modules taking advantage of differing, more natural (and perhaps more expressive) representations for the individual modules. Secondly, it may be difficult to enable the modules to interact synergistically when insulated from one another. Both articles on Prodigy (see references) mention the desire for this type of behavior. Finally, in an article specifically addressing modularity, Minton discusses the uncertainty of deciding both when to create a module (grainsize) and if a new module is actually the right one (functional decomposition).
Return to the top of this architecture.
Go to a Discussion of this issue for multiple architectures.