Tuesday, July 14, 2015

My experience on OCMJEA

In this post I Just want to share some of my experiences and impressions in the process of achieving the “Oracle Certified Master, Java EE 6 Enterprise Architect” certification, hoping this to be useful for those who are on their way of become certified.

First of all I have to say that I obtained my certification in the past 6 of July, and that I got a score of 153 over 160, which make me feel so happy.

Nowadays the certification path is composed by many steps that you can consult in this link.

Step 1: Complete the course

This step is not necessarily the first step you must complete, but I advise you to do it first because it can help you to clarify many useful concepts that you need to manage in the next steps. I took the “Architect Enterprise Applications with Java EE” course and I think it is a good option although I think is kind of expensive course. In my country, Colombia, I recommend calling directly to the Oracle call center and ask for discounts on the price of the course; I got a good discount.

Step 2: Pass Exam Java EE 6 Enterprise Architect Certified Master 1Z0-807

As I said before, I think that “Architect Enterprise Applications with Java EE” course can help you to clarify necessary concepts for the multiple choice exam. Besides that, I recommend you to follow one of the many study books available for this exam. I studied with the new Oracle study book:

OCM Java EE 6 Enterprise Architect Exam Guide (Exams 1Z0-807, 1Z0-865 & 1Z0-866) (Oracle Press) by Paul Allen and Joseph Bambara.

Although I found this book interesting (Not only for this step but for next steps: assignment and essay); I don’t think it is enough to pass the exam. So I strongly recommend you making as many mock exams as you can. You can find many mocks exams on the Internet.

The exam topics can be found in this link.

Step 3: Java (EE) Enterprise Architect Certified Master Assignment 1Z0-865

For me the assignment is the most important and difficult part of the exam. My assignment was “Factory Homes”.

First of all I recommend you to read the assignment very well (more than once) and that you take the time to fully understand the scope of the problem to solve.

On a high level, the assignment file is composed by the following sections:

1. Background: This section provides an overview of the business context of the problem you must resolve.

2. Workshop output: This is one of the most important sections because it actually contains several important aspects to be taken into account as restrictions, non-functional requirements, legacy systems, etc.

3. Business domain model: This section contains the basic business model on which we must work. Is vitally important to fully understand this model, because it will be the basis for building the class diagram.

4. Use case diagrams and specifications: This section contains the use cases that must be taken into account. Is important to understand the scope of these use cases and to recognize the actors involved in the system.

5. Deliverables: This section contains the description of the deliverables you must construct and how to send them: Class diagram, component diagram, deployment diagram, sequence diagrams, top three technical risks, assumptions and decisions.

Before start with the assignment I think is a good idea to select the UML tool you will use, I recommend you to select a tool that already provides support for UML 2.0 and that allows you to export the diagrams as images easily. I selected Visual Paradigm v12.0 (trial version) mainly for the reasons mentioned before, and I must say that this tool leaves me a good impression by its versatility and because it allows you to make everything you might need for the assignment.

Next I describe my tips on each of the deliverables:

Class diagram:

Start building your class diagram based on the business domain model given in the assignment file. Do not modify the proposed domain model because doing so would alter the scope of the requirements.

You must consider adding classes for representing the presentation tier components, like JSP or JSF pages. Also I think is important to include some utility packages and classes useful for your solution, like cache or logging. In my case I decided to use EhCache Framework for cache, and the Java Logging API for logging.

I also think is very useful the use of stereotypes for clarifying the purpose and nature of the proposed classes, you may use stereotypes like: ‘JSF Page’, ‘ManagedBean’, ‘Interface’, ‘Auxiliary’, etc.

Moreover it would be helpful for the construction of the sequence diagrams to add some classes to represent important JEE framework classes, like the Entity Manager. Remember that the class diagram must contain all the classes included in the sequence diagrams.

Component diagram:

For the component diagram y suggest to present it by tiers, so that it is clear the components that belong to each application tier. Also remember that components should expose well defined interfaces, so use and include them into the diagram. I prefer the lollipop notation to show the components exposed and consumed interfaces.

Also you can group component in subsystems in such a way components related to the same functional purpose are logically grouped.

The following links can help you to clarify some concepts about the component diagram.

http://www.agilemodeling.com/style/componentDiagram.htm
http://www.uml-diagrams.org/component-diagrams.html
http://agilemodeling.com/artifacts/componentDiagram.htm

Deployment diagram

In this diagram you should detail the hardware and software of your system, and the application components that run on those nodes. Before start building this diagram, you should think about your assignment restrictions like time and cost and about your assignment NFRs like reliability, availability, scalability, security, performance; and considering all these aspects, propose a scheme that allows satisfying them in the best way.

For example, you could consider a cluster topology with load balancing, running on dedicated servers in order to achieve good reliability and scalability, but also you could evaluate a cloud solution that may offer good flexibility and manageability at competitive prices. So, as I said before all depends on your non-functional requirement and restrictions and you should perform a trade-off between the options in order to choose the best for you.

The following links can help you to clarify some concepts about the deployment diagram.

http://www.agilemodeling.com/artifacts/deploymentDiagram.htm
http://www.uml-diagrams.org/deployment-diagrams-overview.html
http://www.uml-diagrams.org/deployment-diagrams-examples.html
http://aviadezra.blogspot.com/2009/09/uml-deployment-component-diagrams.html

Sequence diagram:

If you have carefully completed the class diagram, making sequence diagrams should be a simple and enjoyable work.

For these diagrams I just can advise you to remember that all the classes involved in the sequence diagrams should be present in the class diagram, and not to forget including in the sequence important application components like web pages, cache and logging.

Also remember to use of all the tools provided by UML to make a good sequence diagram, like “alt”, “loop”, “opt”, “ref” blocks, and make some comments if necessary.

The following links can help you to clarify some concepts about the sequences diagrams:

http://www.agilemodeling.com/artifacts/sequenceDiagram.htm
http://www.ibm.com/developerworks/rational/library/3101.html

Assumptions and decisions:

For this section I can only recommend you don’t let it for last, just go documenting your assumptions and decisions as you progress in solving the case.

I raised 12 assumptions of different nature, such as assumptions regarding the domain model, the use cases, the legacy systems, and as for the non-functional requirements.

As for architecture decisions, I raised 11 decisions justifying the choice of each of the framework, APIs, technologies and products used. For example, you may justify why select a server or database engine, why select some API to manage the cache or logging, etc.

Also in the architectural decisions you can justify why or why not use some kind of JEE framework component, so that it is easier for the evaluator to understand the proposed design and architecture.

Step 4: Java (EE) Enterprise Architect Certified Master Essay 1Z0-866

I strongly recommend you don’t miss much time after sending the assignment to present the essay.

The topics covered in the essay are not secret and focus primarily on how you solved the non-functional requirements associated with your assignment. Prepare well these points and your essay will be successful. Also in the case that English is not your native language (my case) try write a couple of test essays so that you can memorize words and key terms that will help you in the real test.

At the time of examination I recommend you read well all the questions before you start writing, as several questions can be related and some arguments might be best for some question than for another. In my opinion the time was short (120 min) and at the end I had only a few minutes left to give a final review of my essay, so you must be very careful with the time.

I found very useful the appendix B of the Paul Allen and Joseph Bambara book: OCM Java EE 6 Enterprise Architect Exam Guide (Exams 1Z0-807, 1Z0-865 & 1Z0-866) (Oracle Press). This book section gives a good approach to the real essay questions.

Also, I found the following link very useful to prepare my essay and I recommend you to read it:

https://srinichekuri.wordpress.com/2013/06/04/sceaocmjea-essay/

Step 5: Complete the course submission form

Although in the certification path this is the final step, this can be done at any time after completion of the course requirement. The purpose of this form is just to validate that the aspirant has fulfilled this requirement. So I consider that a good tip is to fill out and send this form as soon as you finish your preparation course to save time.

This link contains more information about the course submission form.

Final tips

1.    One of the best tools to prepare for all parts of the exam is CodeRanch forum, so I advise you to use it frequently to re
solve your questions.

2.    With some regularity Oracle launches promotion codes that can be applied when purchasing exam vouchers, so that, for example, you can get discounts or free retakes with these promotion codes. I recommend that before buying your voucher, you check if there are active promotion codes. For example, throughout 2015 it is active Java20 code with which you get a 20% discount on any Java exam.

My best wishes to everyone