Review high-level system architecture and modularity
Status: Beta
Brought to you by:
mark-jj
After the extended discussion we have had on on forum, I believe it would be a good idea to stop, think and review the modularity of the entire system. We should look for the highest level components and establish their information sharing needs with the rest of the application.
http://sourceforge.net/forum/forum.php?thread_id=1682648&forum_id=664085
If there is a need to redesign and refactor, then we should do so now -- as we are introducing the project to the open source world.
Logged In: YES
user_id=1691791
Originator: YES
I am attaching my very first simplistic look at the high level modules. These are the highest abstract pieces of functionality that I believe exist today within GreatCOW web application. They should stand alone, decoupled; as much as possible...
See the attachment ArchitectAbstraction-V1.png
First cut -- subsystems (modules) architecture at high-level of abstraction.
Logged In: YES
user_id=1691791
Originator: YES
File Added: Architecture-Abstraction-V1.PNG
Logged In: YES
user_id=1691791
Originator: YES
After talking to Adam today, I have divided each module horizontally along 2 layers: Business and View. Currently we have Business and View layers: these layers span pretty much throughout the entire application. We want to slice the entire application pie into several smaller pieces and still maintain the Business and View layering of the entire cake. This would give us good modularity and also keep the strong separation between the business/view layers.
I am attaching the Architecture-Abstraction-V2.PNG.
Logged In: YES
user_id=1691791
Originator: YES
File Added: ArchitectureAbstration-V2.PNG
Second cut - layering modules into Business/View and adding a few more modules.
Logged In: YES
user_id=1691791
Originator: YES
I am attaching here my attempt to divide the whole big GreatCOW into smaller pieces. I have looked at the functionality and chosen to split the entire system into 14 subsystems. Please look at the attached UML diagram in jpg format (GreatCOW-Modularization.jpg), which shows the new proposed top level logical view. Each subsystem should be further divided into Business/View layers with the exception of these five subsystems: InfoCenter, Forum, Global Notifier, Global Navigator, Application Installer (for these 5 the Business/View layering may or may not be true - don't know yet).
If you are interested in this portion of project re-architecting, then I would strongly recommend that you download and install a very nifty little tool that we like to use around here: StarUML (http://staruml.sourceforge.net/en/). I am also attaching here the actual StarUML file (GreatCOW-Modularization.uml). This file contains more documentation and a little more depth of decomposition. Also, I have started working on the Peer Advertising College (PAC) use cases - which you can also find there.
This is an exploratory phase -- the elaboration phase. You are very welcome to submit your comment. Your comments do help. They make us think harder. Thanks. :)
This file is in StarUML format and contains most depth.
Logged In: YES
user_id=1691791
Originator: YES
File Added: GreatCOW-Modularization.uml
And here's a flat picture of subsystems in jpg format.
Logged In: YES
user_id=1691791
Originator: YES
File Added: GreatCOW-Modularization.jpg
Logged In: YES
user_id=1691791
Originator: YES
Adam, I have just finished my first quick-scan review of all 338 classes (I hope I have this number right?). Based on our JavaDocs (which are not so good) and based on the java source code, I have tried to determine the future subsystem ownership for each class. The spreadsheet is located at http://spreadsheets.google.com/a/greatcow.com/ (file name Classes Re-architecting). Specifically, I need you to look at and review the classes (rows) which are highlighted in yellow. My comments are in the third column. These need your attention. Simply go to the fourth column and start typing your comments and replies to my questions for these yellow highlighted classes. Later we can further discuss if need be.
BTW, I would like to publish (post) this entire spreadsheet on greatcow.org or some other place where our work can be visible to the community (Wiki on greatcow.org would be best). But I am not exactly sure how to do it with Google docs, maybe now that you have the Admin privileges you can figure it out and let me know.
Let's work on this task before continuing with greatcow.com page implementation. We need to focus our effort on improving architecture.
Cheers,
Mark
Logged In: YES
user_id=1691791
Originator: YES
Adam, the javadocs that I was working from were old. I have synchronized my old version to the new version and I have updated the spreadsheet. Here are 4 issues I need your feedback on:
1) CommonCallback is used only by the PictureAlbum (pical)? And currently it is not used by Internal Mail (imail) at all (but perhaps it should be?
2) About FlashHTMLCallback... What is the Flash Applet that is being called back in this class and what subsystem(s) is/are affected? I do not quite understand the meaning of this class (particularly the connection between the GWT and Flash)
3) LimitedTextArea is used by/for GWT voting and nothing else right now? So I assume that currently only the Member Account subsystem uses this class?
4) Unrelated question. Do you have some mechanism to ensure that we always update our javadocs when we create new class? For example a script that runs during deployment showing a message where a new class is missing a javadoc, or something similar. I just want to make sure that we have some automatic feedback (reminder) when we forget about javadocs.