1. Digest the requirements:
Read the requirements very carefully and understand it. Take at least ten days to digest all the requirements because it is not complete and confusing at times. Grasp everything and have a big picture always. Give yourself a lot of time to understand repeatedly before put your hands on solving the problem. Where ever you have problem understanding or you find that something is missing make a not of it. This will help you make some
2. Class Diagram:
I started the part2 with Class diagram based on the Domain model and identified the Subsystems. I had only one class diagram with 15 classes and 5 subsystems. I was very careful about the Associations, aggregation, composition, navigatability, relationships (Classification, Generalization, Dependency, Realization) and cardinalities. I identified whatever attributes required and its accessibility to have in every class. I did not mention any operations or methods in the class diagram. For some of the classes I did not even give any attributes. I gave all the relationships some name that explains the interactions between the classes. I was very careful in giving the Stereotypes wherever required.
Do not get into too much detail and view everything from high level. That is what is expected for this architect level exam. At the same time make sure that do not lose anything. It is very important that how best you make others understand especially the marker with one class diagram. I have seen others break down the class diagram into more than one class diagram. Detailed class diagram is not necessary at this architecture level and will make others confuse and complicate the things rather than help understand
Component/Collaboration I cannot advice much here bcos I haven't scored 100%.
3. Component Diagram:
I divided the whole requirement into subsystems and made component diagrams for each subsystems. I have heavily used J2EE design patterns.
4. Sequence Diagram:
I made just one sequence diagram for each use case. Some of the use case may be little complicated to explain within a single page. Better to split the sequence diagram in this case so that it is not cluttered and complete the whole sequence.
5. Deployment diagram:
I had one deployment diagram according to the requirement. The deployment
requirement was clear about the physical locations and machines. When I made the deployment diagram I was pretty clear where when the right protocols are being used and how the subsystems, legacy systems interact. Here I mentioned which component goes where and how each type of client accesses the system. Even though providing the deployment diagram is not a requirement I would suggest for your own sake and for the examiner create a neat diagram.
Even though I went through Struts and Petstore architecture I did not use any of them. I designed my own framework and used it for the exam. However whatever framework you use it should be portable and should support the non-functional requirements.
Once you made all the diagrams check for consistency with all diagrams. Go through each diagram and try to improve the diagrams to satisfy all the functional requirements. Every time you make any changes to any diagram ensure the consistency among all the diagrams and assumptions.
8. Assumptions document:
This is the piece I had little trouble with which many guys had not a problem. I did not know what kind of assumptions and at what level do I need to make assumptions. Out of patience I made 2-3 pages of assumptions. My suggestion is that we don't need to go into too much detail here again.
UML Diagrams: As per the requirement all the diagrams should be UML compliant. I used MagicDraw for Class Diagram and Component Diagram. When I started sequence diagram this tool did not let me allow drawing more than certain number of objects because I had the evaluation version. So I had to make the sequence diagram in Rational Rose. My suggestion is that adopt a good tool.
Documentation: For documentation use a neat HTML tool like FrontPage. Do not clutter the document with unnecessary fine details; the marker may not have patience to go through the entire document. So make it simple and neat and do not miss any essential points.
10. Service level /Non-functional requirements:
The non-functional requirements in J2EE architecture are performance, scalability, reliability, availability, manageability, extensibility, maintainability and security.
11.Uploading the assignment:
Once done with the assignments revisit all the diagrams and assumption document. Try to make it smaller size. I heard that some people had problem uploading because of the fat assignment. I had problem uploading because I did not have access right to upload. I sent a mail to Prometric asking permission and got it the same day luckily. So make sure that you have access right to upload before the Part-III exam.
12. Part-III exam.
Give the Part-III exam ASAP. I uploaded the assignment the evening and gave the exam the next day afternoon during my lunch break. If you have done your architecture assignment according to the J2EE specification yourself Part-III is very simple. The four essay questions are basically to address the Non-functional requirements like performance, scalability, reliability, availability, manageability, extensibility, maintainability and security. Other things might include how are you taking care of your architecture to address transactions, persistence, authentication, authorization, et al. Here again my suggestion is to make it neat and simple. The marker does not need to be explained with the theory behind transaction. Rather give him clear answer as to how did your design address the transaction.
1.SCEA by Mark Cade is a very good book for part-II. I based by level of design on the example given in this book.
2. Core J2EE patterns
3. Java Petstore Application from the Java blueprint
5. UML Distilled
14. Exam Result:
This is the long wait for about 3-weeks to get the result and you cannot do anything but wait.
All of the world's problems can be solved in a garden - Geoff Lawton. Tiny ad:
RavenDB is an Open Source NoSQL Database that’s fully transactional (ACID) across your databasehttps://coderanch.com/t/704633/RavenDB-Open-Source-NoSQL-Database