Friday, April 1, 2011

Passing SCEA5 Part 2 and 3

About Part 1
Part 1 is multiple choice questions with 64 questions in all. Candidate has to get passing marks of 57% to pass the part1.
Each question can have more than one correct answer but they do specify how many answers are correct. One get the marks only when he/she has provided all the correct answers otherwise nothing. There are some drag and drop kind of questions also.
It's a tough exam with a lot of scenario based questions. Questions are quite lengthy and the candidate has to develop fast reading practice. The question contains some hints to reject one/two wrong choices. But do read the questions carefully as SCEA5 is really a tough one. Generally they ask conceptual questions but don't get surprised if you get few syntax based questions. I got few syntax based questions in JSF. Candidate must organize time really well. For 64 questions allotted time frame is 120 minutes so it's roughly less than 2 minutes per question. Try to cover all the topics and don't leave anything. In case you are stuck for a question for more than 3-4 minutes, move on as you might leave some questions. There is no negative marking. One can mark the questions for review to come back later.
I just got 20 minutes after finishing the questions and then i reviewed all the questions marked for reviews.
Some of the questions and their answers are very much confusing . Try to have a very good sleep before the exam as it requires very good focus during the exam time. 50% of the questions you can answer are based on your past experience and whatever you read during preparation.Rest you need to very much mentally present to figure out the correct answers. Only go thru the question -2nd time if you are not getting it.
There were two drag and drop questions, few questions with one correct answer and there were few questions with 2-3 correct answers. I got few questions which have 4 and 5 correct answers also. Remember-you will get full marks only if you have selected all the correct answers.
I referred:
1) SCEA for JEE Study Guide by Mark Cade and Humphrey Shiel
2) JEE 6 tutorial
3) Mikalai tutorial
4) Core J2EE Patterns by Deepak Alur
5) Core security patterns
6) Java Passion website
7) Heads first Design patterns
8) EJB 3 in action
9) Some tutorials on IBM website and javaworld
10) Sun's ePractice and whizlabs SCEA5 exam simulator.
11) Real World JEE Patterns by Adam Bien
12) JavaRanch SCEA forum

13) Core JSF

A lot of thanks to Javaranch members in SCEA5 forum. It's very valuable website and most of the updates, strategies are being discussed out there. I contribute to that forum quite regularly.
At the end of it, I will say it's not the certification but what all we have learned during the preparation that matters. 

There was almost a gap of 2 years for me to go from part 1 to part2/3. I will advise all the readers to do the entire SCEA5 in one go so that you won't loose the momentum,

In terms of overall preparation for part1 - it took around 2.5 to 3 months for me with the average weekly effort of around 11-12 hours.

Part2 and Part3
Downloaded part 2 assignment during May 2009. It was Big Smokes Cigar Shop assignment. I submitted my assignment and also took part 3 essay exam on the same day on 6th March 2011. Ever since that day, I was checking my email regularly and waiting eagerly for the results. OCP team is very good in terms of providing the updates. After one week of submission of my assignment they told me that they have sent the part 2 assignment and part 3 for evaluation. Finally on 29th March, 2011-I come to know that I have passed my SCEA5. They just provide grade “Pass” or “Fail” and not actual marks. Passing marks are 71%.
Note : There is no deadline from Sun for the part 2.  After Sun being acquired by Oracle-I think they have kept the deadline to finish the assignment within 1 year.

What is expected in part 2?
  • Component Diagram(40 points)
  • Class Diagram(40 points)
  • Sequence Diagram(16 points)
  • Deployment Diagram(24 points)
  • Assumptions and Design decisions(Extras)
  • Technical Risks and mitigation(16 points)
  • Other diagrams and sections(Extras)
To a great extent I followed “Mark Cade and Humphrey Sheil's Sun Certified Enterprise Architect for Java™ EE Study Guide(2nd edition)” for all the deliverable.

Class diagram
I provided a very detailed class diagram here. Also shown the interfaces and their implementation classes.Provided JSF Beans, Business Delegate and all the Service interfaces and implementations.
In all around 88 classes and 8 JSPs.Apart from the class diagram-i provided documentation for major service facades and service classes with the important public methods.

Component Diagram
I refferred to Cade's book. Provided a very detailed component diagram with 53 boxes.

Deployment Diagram
I refferred to Cade's book. Provided a detailed deployment diagram containing 13 boxes.As deployment diagram consists of around 40 points-I provided a lot of details. Also provided layered architecture and system context diagram to complement it.

Sequence Diagrams
I went very much into details of it. Created 16 sequence diagram for 4 use cases. Almost a low level design.Provided a lot of comments and shown critical loops(alt, ref, loop etc...). Working on sequence diagrams is really tedius.

I keep on writing the assumptions on the daily basis. I can't make out whether i need to leave out anything out there as there is some vagueness in the assignment itself.

Almost came up with 8 risks but wrote in the order of priority

Design decision
This section i introduced on my own where i discussed in detail about my design decisions.

Provided flow chart, screen mockup(wire frame), layered architecture, system context, HA availability
deployment diagrams. Also provided good amount of information in the form of notes. I know there
is no extra marks for them, but it will make the evaluator to understand SuD in a better manner.

I know like myself, most of the SCEA5 aspirants are somewhat confused in terms of where to start and what all we need to do for the assignment? And most importantly how much detail they need to provide? In this blog, I will provide my approach and answers to all this and other questions in the best possible manner.
I will also suggest all the SCEA5 aspirants to go thru Javaranch SCEA forum.As this forum contains a very valuable information and  tips about SCEA5 from various aspirants.

How much time it takes for the entire part 2 and part3?
Most of the folks on Javaranch and other forums are saying that it takes around 80-120 hours to finish the assignment based on your knowledge and experience level. That’s true. But apart from that I feel if you can pay attention for your assignment without any distractions continuously without losing any momentum,  that will be great. For myself it took almost 160-180 hours(spanning across 2-2.5 months) to finish my assignment. This includes 10 hours of preparation for part 3. Though I will say my assignment solution was very detailed and I provided a lot of information. Another reason for extra time is due to two kids, I can only spend 30-45 minutes per day on week days and around 4-5 hours on weekends. I started working on this assignment somewhere during Christmas vacations(Dec 2010) and finished it by 3rd week end of Feb 2011. It took around 1 week for my peers to provide review comments. During this time, I did some more beautification of the assignment and worked on reducing the image file size. Good amount of time goes into understanding the problem statement.
Note : It will be good if you engage your peers to review your assignment. I had reached out to 3 peers(one SCEA Architect, one SCEA5 Architect and one non-SCEA Architect) to review my assignment. This way I really got their valuable feedback and I corrected some of the errors or confusions in the assignment.

Understanding the assignment
I will suggest go with the problem statement at least 4-5 times and keep on working on the assumptions and design decisions list with each iteration. Here I referred a lot of comments by folks on JavaRanch forum. Please make sure that you are not picking too much noise out here. As there are many solutions for the same problem by many folks. You should listen to them, but you may not want to go their way. As they have all passed the exams so all of them secured more than 71% but we don’t know who is better than others. You might observer a lot of conflicting views about the solution for the same problem. In fact understanding the problem statement and thinking in terms of designing the solution is the biggest obstacle in the assignment.
I started preparing a MS Visio process diagram to represent the use cases. This helped me later in the sequence diagram.
I also visited few eCommerce websites like this to understand some more insight in terms of understanding the problem.
Later I created a wire frame using MS Visio where I talked about various screens and talked about the flow to visualize the use cases. It was very helpful while peer review process as they can understand the overall assignment easily. Wire frame will help in terms of top-down design as one can visualize the views and how the user interaction will be taken care of in the application architecture.
The assignment is slightly vague and one need to make a lot of assumptions and that might affect your design decisions. Make sure you are making a note of all the assumptions and also thinking very much in terms of design decisions and making note of them. One can make assumptions (logical ones) around the aspects which you feel are vague, tell the examiner how the assumption has influenced your architecture and move on. There might be a situation where different people can come up with different assumptions and end with radically different architectures. All you have to ensure is that the assumption is logical and makes sense in context to the problem. In my assignment where I need to provide the architecture of the eCommerce website, there was no mention for User Authentication & Authorization, Admin utility, Web Content Management etc. I safely put them into assumptions so that I don’t have to spend any efforts regarding them. Simple rule of thumb, read the downloaded assignment/problem statement and try to scope out the work. If you feel, there is something which should be out of scope, put it into assumptions list.

UML version and the tools
I used three tools – Visual Paradigm, Astah(previously called Jude) community for UML and Visio for other diagrams. I provided at least 25% extra information than needed to make evaluator understand my assignment in a better way. Make sure your tool is UML compliant. No where in the assignment it’s mentioned which UML tool to be used but just to be in the safer side, I will say use the tool which is UML 2 compliant. Make sure that your UML diagrams are not cluttered. If they are getting cluttered, better to divide them into smaller parts. Visual Paradigm has a nice animation feature for the sequence diagram, which I really liked.

Choosing the technology stack for the solution
It took some time for myself to figure out whether I should go with J2EE1.4 or JEE5? I have been working majorly with J2EE1.4 for quite some time and less experience with JEE5. But this is an important decision to be made as a lot of design patterns has been retired in JEE5. Moreover there are some significant changes in JEE5. To know more about the new Design patterns in JEE5, I referred Real World JEE Patterns book by Adam Bien. In fact I reached out to the author for some of the clarifications in terms of my understanding.
As this is a Sun/Oracle exam-I tried to play safe and chosen everything from JEE stack. Though in a real life project I will go with Adobe Flex/Ajax, Spring, Hibernate kind of solutions only.
You can definitely chose the frameworks from open source but make sure what Cade keep  on telling, they are more interested in getting the solution in terms of how and why rather than what. Only framework and no solution can fail you the entire exam. I stayed away from the temptation of using frameworks. I have mentioned Hibernate but only using the generic features of Hibernate which are available in JPA rather than Hibernate specific features. For mailing service I have assumed that Apache James Mail server will be a layer on top of Enterprise SMTP server to take care of soft/hard email bounces, message persisting.
Similarly I have used EJB timer services rather than open source Quartz even if later seems to be a better choice. At the presentation tier, I have used JSF though I am quite comfortable using Struts.
Note : Make sure the technology choices that you are using, you might be asked about the technology choices in part3 exam. Part 3 is all about defending your architecture solution.

How much detail into UML diagrams?
This is one constant question that every SCEA aspirant might have struggled with.
I started with a class diagram and mentioned the main attributes of the classes. I am quite verbose when it comes for class names or attribute/method names conventions.  Though it might clutter the diagram so I went ahead and used the abbreviations and in the notes section, provided the expansions of those abbreviations. Used some of the conventions like all the Interfaces are starting with ‘I’ etc. My class diagram was getting quite big, so I decided to split into two-front end and back end.  I had other alternative approaches in my mind like showing Business Domain model classes and the service classes also.
Then I moved onto sequence diagram. I am not very impressed with Cade’s approach here as they have shown very higher level class and sequence diagram.
I have worked with a boss in the past, who emphasize on the detailed design. This was my approach; I provided a very detailed class and sequence diagrams. I created some 5 sequence diagrams initially but they were very difficult to understand due to lot of details into it. My peer reviewers just turned it down and then I split them up into almost 16 sequence diagrams. Visual paradigm came quite handy as it has a animation feature via which you can verify the sequence diagram. Believe me sequence diagram takes most of the time in the assignment. It can take anywhere from 25-30% of overall time.
One need to go back and forth between sequence and class diagrams as any changes in the approach will require both to be updated. Remember one has to provide all the public methods being mentioned into sequence diagrams into the class diagrams with valid input and out parameters.
For Class and Sequence diagrams, I followed Cade’s approach but I went more deeper in terms of details to be mentioned. In the Sequence diagram, one can avoid providing the return calls just to avoid the clutter. In UML, there is a “ref” notation-I used it a lot as I am a big believer in DRY(Don’t repeat yourself). As and when I found in my sequence diagrams that it has already been mentioned else where-I used the ref notation to point to that.
Moreover I provided a good amount of comments in the Sequence and class diagrams using “dog eared” UML notation box. Also where ever there is a significant alt or loop-I have shown it. I went thru a lot of posts and I decided it’s better to provide more information rather than be very shallow. Too high level can decrease your marks may be. Moreover in my real life projects also I provide good amount of details in the design document so that Developers won’t assume a lot of things.
Note : Devising problem statement(assumptions and design decisions), Class and sequence diagrams might take almost 50-60% of your overall time.

Other UML Diagrams
After finishing up my class diagrams, I provided the component diagram following Cade’s approach. I grouped similar/same components into one component and provided overall high level component diagram. I used some custom stereotypes so that it is easier for somebody else to understand it better. In component diagram, one can show the design pattern that you are using in your solution.
I also provided layered architecture and System context diagram to complement the Component and deployment diagram.
Deployment diagrams I followed Cade’s approach but provided more details. I stick to the Sun/Oracle infrastructure as much as I can. Also did the capacity planning, choosing the latest and the best hardware components. Here one needs to provide the protocols for all the communications. I provided one extra diagram to showcase HA deployment. Infrastructure architecture was virtualized same as in real world projects. Also mentioned about Development and UAT regions, load & stress testing for verification of various NFRs, Disaster recovery approach for application, data and data center DR. Also did some research for deploying the application in Cloud environment. Provided some recommendations in terms of what can go as IaaS, PaaS or SaaS etc.
Assignment is UML heavy and one needs to know UML. You can refer to this concise book on UML viz. UML Distilled by Martin Fowler.
Note : Sun has a reference J2EE blue print architecture/design for Pet store and other samples(that comes with JEE tutorials). One can refer to them as they will guide you in terms of how to document your architecture. One can refer “Designing Enterprise Applications with the J2EETM Platform, Second Edition” to this free book from Sun Microsystems also.

Other documentation
My solution was very much SOA based. So I decided to provide some write up about all the Service Facades and Services with the important classes. This way it will be easier for somebody who is going thru my class and sequence diagram to understand the role of important classes. I followed Java Pet Store's approach in terms of documenting this.  Here is the place where one can complement the diagrams and also write up about something special they are doing to solve the business problem.
I provided layered architecture diagram, System context diagram, screen mockups(wireframe), flow charts as extra diagram. You won’t get any extra marks to provide extra diagrams and contents but it will definitely improve your chances to pass the exam.

Technical Risks and mitigation
As part of this assignment, we have to identify top three technical risks and how the SuD(System under Development) will handle them.
I was under the dilemma what goes into Technical Risks and what goes under design decision and for that I reach out to JavaRanch forum also.
Please refer to Cade’s book. As per that
An architect mitigates the technical risks associated with a system. A technical risk is something that is unknown, unproven, or untested. Risks are usually associated with the service-level requirements and can occasionally be associated with a business requirement. Regardless of the type of risk, it is easier to address the risks early in the project while creating architecture, than to wait until the construction phase of the project, when you have a large developer base that could potentially be waiting while you are solving risks.
On the same lines, I documented how my SuD will address various NFRs as well as try to improve the performance(response time etc…). Also I mentioned how SuD will react in case some of the external interfaces are down(what are the fail back mechanisms). I provided 8 technical risks in the order of priority(what if the evaluator will look at the top three risks only).
Note : There is still a thin line between Technical Risks and design decisions, one need to be careful working on these sections.

Which tools to use for HTML and images?
Note : I had almost 30+ diagrams(small and large images) in my assignment. So I decided to reduce the color depth while keeping the resolution. For that I used index colors and used GIMP. Make sure that your UML tool can export the diagrams into PNG format. You can refer to this URL to get more details about using index colors in GIMP.
For HTML- I used SeaMonkey which is a very nice tool and create TOCs etc.

Tackling part3
Part 3 consists of 8 questions and of the duration 2 hours. It's all about defending your architecture. It’s objective to verify that it’s you who did this assignment plus it will help the evaluator to understand your assignment better.
My advice is to first go thru all the 8 questions and then only start answering. There are some questions where answers can overlap. You can’t cut copy paste the contents from one question to another. One can provide the numbered list as a answer for the questions. This is fairly easy. One can prepare for it while going thru the Javaranch posts. You can only write 250 words per answer in the text area.
Some questions were about NFRs(how does your solution achieve them?) while others were explaining why certain alternatives weren't better than others. They might also ask you why you have used certain Design patterns.
Note :  I submitted part2 assignment and also appeared in part 3 on the same day. So they definitely haven't seen my assignment. They evaluate part 2 and part 3 at the same time and grade it together.

My References(for part 2 and 3)

Closure comments:
  • You can make assumptions to simplify SuD. So don’t worry.
  • One can change the Business Domain Model to some extent. I can say some 20% changes are okay but don’t forget to justify those changes.
  • One need to be good in UML modeling.
  • Think more about solving the business problem rather than worrying too much about JEE Technical stack. JEE Technical stack is very standard and well defined.
  • Don’t change the problem statement in your SuD.

Other blogs that I liked:
Jeanne’s Blog

I cannot talk very much specific to assignment and it’s solution due to Oracle’s exam policy. I hope this blog will help someone to complete the exam successfully.
Best of luck for SCEA5!!!

Just getting too busy in the JavaRanch forum as there is a rush due to 1st Aug 2011 deadline.
Getting a lot of SCEA5 assignments for review purpose.

Now date has been extended to 30th September, 2011 for the candidates to submit the assignment - those who don't want to go thru the mandatory Oracle Training.