Tuesday, 27 December 2011

SCEA/OCMJEA Part II assignment and Part III experience.

Prepartion for this exam started with different reason. I was mainly looking for refreshing my basics skills and learning few new techonologies so that I can cope up with the changing software market. Last year I wored Ayyapa mala (you need to workship Lord Ayyapa for 41 days with sanctity) and while following the rules and customs during the tenure, like wake up early in the morning and offer prayers before the sunrise. As my day starts early and I use to have plenty of time then I thought of making use of it and planned to appear for SCEA Part 1 which I was planning from many years but didn't get any time towards it. I started with Design patterns about the books and the material for SCEA part I, it is mentioned in my previous blog. By end of April I appeared and cleared part I but with I was not satisfied with the score and whole May I was busy with my office work and couldn't get any time for the part 2 exam.

Overall by completing part 1 itself I learned many new technologies in the stream of JEE 5. Before I was confident in few things like Servlet, JSP, EJB, JDBC and few things which were used lesser while working like Security, JSF. Apart from Security, JSF and many others things I have learned while I was preparing for part I.

Even though I cleared my SCEA/OCMJEA part 1 with just passing marks. I was not much confident of going for part 2. Timeline for submission of part 2 to avoid mandatory training sessions was 31st Aug and given this timeline added to it I don't have much experience in drawing UML diagrams. On 29th June I bought the voucher hoping that atleast in these 3 months I will think and implement what I have learned in part I in terms of building an end to end application. In my view its really very rare to get work experience of designing or thinking about the whole application right from the begining to end.

I downloaded the assignment and I felt its a new one which I haven't heard in any forum about this assignment, it's "Utility International". After reading the assignment thoroughly I felt it is associated with each and every JEE 5 technology starting from presentation, business and persistence tiers like JSP, EJB, JMS, WebServices.

I started designing the application with the things known to me very well and which are used in daily work. It was a simple class diagram by following the book of Mark Cade's. The flow of the application was like JSP->EJB->DAO and I started improving the design using J2EE patterns as well. The big mistake I have done in the initial design was adding a new class in domain model and also did some modifications to the relationships given in Domain model. By looking at the suggestions/comments in the javaranch forum about doing some modification in the domain model, it looked like it is not acceptable, until and unless you have good reason for the change.

There was an announcement from Oracle which contains good and bad news. Saying that assignment which is submitted before 31st Aug and if it is failed then there will be a second chance of submitting the assignment without going through mandatory course and also there is an extension of date saying 30th Sept. Assignments which are submitted before 31st Sept, if any one failed in assignment then mandatory course is required for resubmitting.

By this time it was second week of Aug and as the deadline was approaching and still my design was not in a good shape then I decided to submit it in Sept but with lot of risk. If I fail then there is no second chance for me. I thought if I missed then I will be stopped here itself. I was in a situation were I am left with only one arrow to hit the target without any backup.

When I read the deliverables section it was mentioned that whole assignments should be according to JEE 5. There was a slight confusion that my class diagram was mostly based on J2EE. There is no harm in designing it using J2EE but still couldn't digest the point of JEE and started redesigning the class diagram accordingly. This time the flow of the application goes like JSP page using JSF components, JSF components (Managed Beans) invokes stateless session methods, SLSB inturn uses Persistent objects. Most of the changes in the domain model were removed and used as is mentioned in assignment. One change required in my domain model with strong reason for changing it. I couldn't take any chances of doing any mistakes until I am totally convinced with my design.

There were 5 use cases which were mentioned. Each use case can be treated has a very big module if it is implemented in real time projects and it touches most of the corners of JEE 5 technology. For each and every use case sequence diagram is addressed. Every point in the use case if read properly it matches to any of non functional requirements. 

Component Diagram: It included with all the classes mentioned in the class diagram if we go according to the Mark Cades example, some people say it is kind of duplication of class diagram. But in this seperation in terms of tiers and how your application is interacted with the external systems and the framework used in. As DAO pattern was not used in my class diagram but when SuD interacts with the external system those details are to be gathered here and I used DAO to interact with the external system. This is also in similar lines of Mark Cades component diagram.

Deployment diagram: To my observation for OCMJEA most of them got failed in deployment diagram and this plays an important role in passing the exam. It was a two pages diagrams, Here as well my diagram is similar to Cades one but with few additions to the diagram and one more to make it fit to the application. These diagrams depict how the non functional requirements are met by the application.
Whenever I revisited the diagrams from end to end there was one or more points which I would have missed and it got addressed. I revisited my diagrams a lot number of times to make sure everything is addressed for meeting the functional and non functional requirements. For every visit there is one or other point which I missed, would have resulted in class/component diagram change. But revisiting the whole assignment will definately beneficial.

For drawing UML diagrams I used StarUML. Its really a very easy tool to use, I don't have much experience in drawing

Part III:

It is about Questions on the assignment you worked on. It was like how we met non functional requirements in our design and why a techonology is considered instead of others.

Atlast I received long awaited mail from Oracle of passing SCEA/OCMJEA 5 certification after 3 months of the assignment submission. Marks obtained 142/160, I received my Success Kit which contains a letter of Congratulations, Certificate and a card from Oracle.

Once again thanks to javaranch forum, Every information is available in the forum and most of the doubts were cleared. Special thanks to Dariusz Skrudlik and Anthony. Last but not the least my family supported a lot to achieve this certification and my son Meera Madhav who missed his dad while playing.


  1. Hi,
    I have some questions regarding the component/ sequence diagram:
    1) In any application from Homepage if we click any search / create/ edit/ update page link then it opens that page from where we start other operations. Now question is in your assignment have you shown any flow to display how any page is getting generated from Homepage.
    For example after clicking search link from Homepage how that Serach page will generate for that have you shown any diagram? Because it may possible that in search page you have multiple dropdown with various values and to populate that value it’s require to go through java flow. So do we need to show that value.

    Or say if have to open an order creation page from Homepage. Now have you shown the flow how the order creation page is opening after clicking the link from Homepage. Because in your order creation page you may need to display some pre-populated data which needs to come from database. So do we need show any component/ sequence diagram for that or you can start your diagram from order-creation page directly.

  2. Hi Priam,

    It depends on your Use Case, your sequence diagram need to follow your Use Case. In the Use Case how point wise it is mentioned.

    Let us take editing an existing order, in your Use Case if it is said that logged in user is initially displayed with orders and then user edits an order. All orders are displayed saying OrderNum, OrderItem, Qty if an order is edited you need not go fetch the details of that Order again, using the OrderNum and the new values are to be updated in the database.

    How it is mentioned in your Use Case you need to put the same in your sequence diagram flow.

  3. Congrats Naresh.
    And thanks for writing down your experience.

  4. Hi. Enjoyed reading of your experience. I'm preparing to write the exams (that's what led me here). I don't know if it legal or not, but if it is can you please share the questions of the assignment you got. I'd like to know if I'm well prepared or not. Thank you.

  5. Part 3 is to test, how you met the non functional requirements in your assignment and whether you have considered alternative ways of achieving them and what made you to considered your approach has the best way.

  6. Hi!
    very nice blog and very informative. I am also preparing for the exam and got the same assignment. My assignment has a requirement that the system should be feasible for future enhancement of posting messages to customers.
    You handled this requirement in which part your assignment? (component diagram or deployment diagram)?

  7. Hi,
    I'm also working under "Utility International" and I have big dilemma about modification domain model. Few things are strange for me like relation one to one between customer and payment. I'm not sure why we need three separate units class ( gas, electricity, water ) instead of one generic. The same is for three bill classes. It is not optimal. What will happen if system need to handle new resource type ?

    How many changes did you do in domain model ?

    1. If I remember in BDM they have mentioned that inputs will come from different sources and those are to be recorded and bill has to be calculated for that utility.I prefer to have seperate classes as the logic of bill calculation is specific to utility. It is to accomodate the future requirements like introducing new other utility then existing logic will have less impact of changes.

      Usually it is not adviced to change domain model.There were very few changes in terms of association between domain model but it has to be supported with lot of assumptions for the change.