Topic: SCEA seminar

  Print this page

1.SCEA seminar Copy to clipboard
Posted by: jllu
Posted on: 2003-03-02 11:13

Sun Java Enterprise Architect Certification seminar



INDEX

INDEX *

1. Introduction *

2. Certification and the Market *

3. Theory test. *

OO Concepts: *

Common Architectures *

Legacy Connectivity *

EJB *

Protocols *

Applicability of J2EE *

Design Patterns *

Messaging *

Internationalization *

Security *

Assignment (test #2 and #3) *



Introduction
The goal of this seminar is to answer several common questions about the certification, such as:

What can this certification do for you;
What does it really tested;
How to prepare for it;
These questions are linked. Though I will try to answer them one at a time, but bits and pieces of the information will still be intermingled.

First, let me recap some of the information from the Sun web site. Only the Programmer certification is the prerequisite for the Architect certification. You don't have to have to be the Certified Developer.

The Architect certification consists of three parts.

multiple choice exam,
practical assignment
essay, where you have to answer several questions about your assignment.
The third step makes sure, that it was you who performed step number two. Sun's web site has a good list of the objectives and ten sample questions, which give you the idea about the questions at the multiple choice test. The test #2, practical assignment, has practically no time limit. You can take it as long as the certification program exists. Of course, once you figure out what must be done, it should takes you just couple days to finish it. Test #3 is a piece of cake, at least it was in my case. You won't have to prepare for it, only to review your design for the preactical assignment.

Certification and the Market
The most important question about the certification is how it helps to find a better job or earn more money. With the recent slump in the economy it is somewhat difficult to compare the rates, number of offers, etc. Nevertheless, my general impression is that though I don't get more money offered, the number of the offers has increased.

May be that happened because of the piece of paper, which came with this certificaiton. Probably having the piece of paper helps, but I think it is what you learn while preparing for the certification, which matters the most. The objectives for the Architect certification are the best self-study curriculum for Java developer. It is very practical and cover most of what you need to know to not only about the Java technologies, but also about the software development in general. And the tests show if you have mastered the material, which gives you some confidence.

So, studying towards it helped to organize what I already knew and to fill the blanks. All of the knowledge is very practical. I think it is more important than the certification itself.

The third benefit from the certification is that it prepares you for interviews. Most of the questions I was asked at the interviews for the Architect position I have had in the multiple choice test (that is test #1)

Are there any recruiters tonight?

Many recruiting companies, e.g. Matrix, are using their own tests to determine the programmer's qualification. I believe it comes from the lack of knowledge about the industry de facto standard tests, in Java case - Programmer, Developer and Architect certifications. For the benefit of the recruiters present here, let me try to summarize what having the Java Enterprise Architect certification should be telling them:

So, if the person has passed this certification, he is

Expert in EJB technologies;
Expert in UML;
Expert in design patterns.
Knowledgeable in architecture of the distributed applications. There is no detailed drilling on messaging, HTTP, CORBA or RMI - only "bird-eye" overview.
Should be able to be a project lead.
Theory test.
Now let's discuss what is tested. Let's start with the multiple choice exam.

I'd like for everyone, who has Programmer's certification to raise your hand.

So, some of you have Programmer certification, which also has the multiple choice test. Most of the questions in that test require a good memory. For example, you might be given a list of key words, some of which are C++, but not Java, and asked which ones are Java key words. Unless you have memorized all of the Java keywords, you would not be able to answer that question. Please, do not mind the value of such a question. I just wanted to demonstrate a question, which requires a good memory rather than a good reasoning. You can prepare for the Programmer's certification by going through the drills in one of the off-the-shelf preparation books, such as Boone, Roberts, etc. I am not trying to put down Programmer's certification, which has a lot of useful questions. I believe, having Programmer's certification means having solid knowledge of Java syntax and basics of the object-oriented programming - which is at least a solid Junior programmer.

Naturally, Architect is expected to know much more than junior programmer. So, "the spirit" of this Architect certification is quite diffirent. It tests not only your detailed memory, but also the scope of your knowledge. When I am saying "the scope", I mean the knowledge of the concepts. Like, you may understand the event-driven concept (concept), but not remember all the types of events (detailed knowledge).

And the split between these two types of questions for Architect certification is about 50:50. So, if you have read a book on EJB from cover to cover but don't have the actual practical experience, you will fail. Example of the general question: What approach would you use to interface mainframe - screen scraping, message queueing or CORBA-based interaction? All three would work, but one is better for the specified situation than the other two. Also, if you have a lot of experience, but haven't read over the Design Patterns or UML specs, you will also fail. Example: They give you four diagramms and ask which one is pure UML or which one has non-UML constructs.

The passing score for the test is 68%, wich means you have to answer 33 questions out of 48. They seem to go by the individual questions rather than by assigning equal weight to each section, the way they used to do for Programmer test. In the past, for the Programmer certification, they would determine what percentage of each section you answered and then determine average percentage by adding all sections and dividing by number of sections.

Here is the list of the sections:

Concepts
Common Architectures
Legacy Connectivity
EJB
EJB Container Model
Protocols
Applicability of J2EE
Design Patterns
Messaging
Now let's go through these sections using the objectives from Sun's web site.

OO Concepts:

Draw UML diagrams

Interpret UML diagrams

State the effect on:

Maintainability

Extensibility of encapsulation, inheritance, and use of interfaces.

Basically, you have to get a good UML book, such as "UML Distilled" by Martin Fowler or even UML standard from the web and make sure you not only understand the notation, but also know all the artifacts by heart. You have to know what IS the notation and what IS NOT the UML notation. Knowing other notations may play a trick on you, because I have encountered one or two questions, where they would put diagram with elements of other notations and ask which one is "pure" UML.

Common Architectures

Two tier
Three tier
N-tier architectures
Given an architecture described in terms of network layout, list benefits and potential weaknesses associated with it.

This is one of the topics which may be anything and truly hits the breath of your scope. You may want to peruse the collection of articles in "Designing Enterprise Applications with the Java 2 Platform, Enterprise Edition" book from Sun's Blueprint series. It is a very high-level overview of the architectures as recommended by the Sun's development team. Also, you may want to look through "Advanced Java 2: Development for Enterprise Applications" by Clifford J. Berg. The Berg's book is written in a very academic manner and covers not only concepts but also a lot of details, which makes it a difficult reading. It works well as a suppliment. Questions may be about the architecture with Java GUI client, browser client, interactions between web container and EJB container, interaction with the non-Java platforms, etc.

Legacy Connectivity

Distinguish appropriate from inappropriate techniques for providing access to a legacy system from Java code given an outline description of that legacy system.

You will have to have a good idea what messaging (JMS) and CORBA are, and how interfaces to mainframes are done. I have some idea about interfacing the mainframes from my days at Delta Air Lines. For information about JMS I downloaded the trial version of TIBCO Rendezvous from http://www.rv.tibco.com, read the documentation and that gave me a pretty good idea of what it can be used for. Tried to go for MQ Series, but IBM doesn't have the trial version of that…

EJB

List the required classes/interfaces that must be provided for an EJB.
Distinguish stateful and stateless Session beans.
Distinguish Session and Entity beans.
Recognize appropriate uses for Entity, Stateful Session, and Stateless Session beans.
State benefits and costs of Container Managed Persistence.
State the transactional behavior in a given scenario for an enterprise bean method with a specified transactional attributed as defined in the deployment descriptor.
Given a requirement specification detailing security and flexibility needs, identify architectures that would fulfill those requirements.
Identify costs and benefits of using an intermediate data-access object between an entity bean and the data resource.
EJB Container Model:

State the benefits of bean pooling in an EJB container:
pooling
passivation
monitoring of resources
Explain how the EJB container does lifecycle management and has the capability to increase scalability.
EJB is naturally one of the big ticket items. Most questions on this topic will be very detailed and precise. You will have to know exactly and in detail the way EJB functions and its internals. They are testing the knowledge of EJB-s similarly to the way Programmer certification tests the knowledge of Java syntax. You have to know the API, you have to know EXACTLY the life cycle of the EJB-s, how it works with the transaction management (including the transaction scopes used in the descriptors), etc. The book I used to prepare was "Enterprise Java Beans" by Richard Monson-Haefel. Got it almost memorized. Also found very helpful "Applying Enterprise Java Beans" by Vlada Matena and Beth Stearns. That one you will definitely need for the assignment part of the certification.

Please raise you hand if you have participated in the project using EJB?

Now, please raise your hand if you think, that you found development with EJB-s easier and faster than without EJB-s and the response time with EJB-s better than without EJB-s?

What I am tryuing to say is, that EJB-s are necessary evil. You want to use them only if you have to, and there are well-defined situation, when that is necessary. Preparing for this section helps to clarify the picture of when, where and how EJB-s should be used. Even if you are knowledgeable in EJB-s syntax and life cycle, you may benefit from reviewing architecture of the EJB applications in "Applying Enterprise Java Beans" and reasons for using EJB-s. Because they are testing not only where EJB-s should be used, but also where they should be used not.

You also have to know the exact meaning of the term "container", as it is different from the term "application server". Couple questions specifically ask "what is the responsibility of such and such container". Those of you, who have used Toplink with BEA have had a chance to see in practice that difference.

Protocols

Identify a protocol, given a list of some of its features, where the protocol is one of the following:

HTTP
HTTPS
IIOP
JRMP
Given a scenario description, distinguish appropriate from inappropriate protocols to implement that scenario. Select from a list, common firewall features that might interfere with the normal operation of a given protocol.

I have used RMI, but never knew, that the native RMI protocol is called JRMP. I also didn't know that EJB specs calls for RMI over IIOP. Nevertheless, you don't have to know the API of either of these protocols. Just how it goes through the firewall, how you can use HTTP tunneling, proxies, etc. - that's what you need to know. "Advanced Java 2" by Berg in chapters 4 and 5 provides decent overview of what you need to know.

Applicability of J2EE

Select from a list of those application aspects that are suited to implementation using J2EE. Select from a list of those application aspects that are suited to implementation using EJB. Identify suitable J2EE technologies for the implementation of specified application aspects.

This is one of those common sense things. You have to know what is included into J2EE standard, which is Servlets, JSP and EJB. You also have to know what each of these technologies does and is used for. Again, "Designing Enterprise Applications with the Java 2 platform, Enterprise edition" may help.

Design Patterns

From a list, select the most appropriate design pattern for a given scenario. Patterns will be limited to those documented in Gamma et al. and named using the names given in that book.

State the benefits of using design patterns.
State the name of a Gamma et al. design pattern given the UML diagram and/or a brief description of the pattern's functionality.
Select from a list benefits of a specified Gamma et al. design pattern.
Identify the Gamma et al. design pattern associated with a specified J2EE feature.
This is the one you have to know by heart. And not only the names and diagrams of the patterns, but also the names of the components of each pattern. And here is a small trick. In the Design Patterns book they are using OMT notation, and in the test you will see UML notation. Somewhat confusing. I would recommend to go through the pattern list on the cover of the book and draw them out one by one, writing the name of each participant of the pattern.

Messaging

Identify scenarios that are appropriate to implementation using messaging, EJB, or both.
List benefits of synchronous and asynchoronous messaging.
Select scenarios from a list that are appropriate to implementation using messaging.
Select scenarios from a list that are more appropriate to implementation using asynchronous messaging, rather than synchronous.
Select scenarios from a list that are more appropriate to implementation using synchronous messaging, rather than asynchnronous.
You will want to use TIBCO documentation and common sense for that. There weren't any questions about the specifics of JMS, only when and how you would use it.

Internationalization

State three aspects of any application that might need to be varied or customized in different deployment locales.
List three features of the Java Programming Language that can be used to create an internationalizable/localizable application.
"Core Java 2", Volume II covers this topic very well. I would recommend to memorize API, may be even try to write tiny sample programs. The questions may become rather specific about the "how to". Three aspects of the application are

Numbers and currencies. Use java.text package, NumberFormat.
Date/time. Use java.text package, DateFormat.
Text. Collator for ordering, MessageFormat / ChoiceFormat, what ResourceBundles can do for you, how PropertyResourceBundles work, etc.
In the exam this topic may well come under the section "Concepts". They may ask, for example, which design pattern is used for internationalization, which is, of course, Factory.

Security

Select from a list of security restrictions that Java 2 environments normally impose on applets running in a browser.
Given an architectural system specification, identify appropriate locations for implementation of specified security features, and select suitable technologies for implementation of those features.
This is a generic topic intermixed with the rest of the sections. To prepare for this I read all I could get about applet security, proxies, HTTP tonneling, SOCK, firewalls, VPN-s, etc. The book selection includes Advanced Java, "Network Tutorial".



Assignment (test #2 and #3)

The second part of the certification is the practical assignment. You pay $250 for Sun voucher, and in several days you receive instructions about downloading your assignment.

Once you download the assignment, you have practically unlimited amount of time to complete it - until this particular Architect certification program is discontinued. Usually it means, you have about a year to complete this test.

Once you complete the assignment you upload it and go to one of the designated locations to take the Part III of the certification, which is very easy. In fact, you don't have to prepare for it except review your practical assignment test. It asks things, such as "please explain what you used Entity beans for and what you used Session beans for, and why". Or "What did you use to persist the data to the database"? The answers are in free form and you just have to tell in text how you solved this or that task, and why.

After you took test #3 it takes over 4 weeks - and it is way OVER 4 weeks, to get the final results. It looks like Sun has cut down on its staff, so it takes a little longer, than what they promise on their web site.

My assignment was to create an architecture of an small airline reservation system using UML. The assignment consisted of the business background info, use case model, business domain diagram and the description of the deliverables. The assignment, though written very well, required me to make some assumptions. I believe that the ability to make the assumptions is tested as well. The deliverables are component diagram, class diagrams and sequence diagrams.

This assignment was probably the most useful learning experience I have ever had. But before we go on I would like to ask a question.

Please raise you hand, if you have ever drawn UML diagram.

Now, please raise your hand, if you have ever been to the project, which used UML for gathering requirements, analysis and design, before any coding started.

It was the same for me. I knew UML syntax well, drew UML diagrams for the documentation, used Rational Rose… to draw a diagram and paste it into the Word documentation. From time to time I tried to start using the UML to plan and develop the new systems, but after two or three days of monkeying with TogetherJ, Rose or Visio, I would give it up in favor of using more conventional means. So, to be honest, I always thought, that UML is like Freudean phsychoanalysis or Einsteinian theory of Relativity: everyone talks about them but very few have an idea of how to properly use it.

This assignment forces you to learn how UML should be used in the course of the project. Not only documenting existing code, but more importantly, reducing time and effort required to write new systems. In other words, you get the feel for the object-oriented methodology of requirement gathering, analysis and design using UML. And probably your methodology and take on this will be different from Rational's Unified or ICONIX methods or any other specific takes. You will probably arrive to your own hybrid method, which will help you to make object-oriented software development less of an art and more of a science.

This assignment shows, how to take the project from the requirement phase all the way to the coding without losing anything along the way. Or, by this token, wasting time on things, which are not needed in the system.

It took me about 1.5 months to get the feel of the flow from gathering requirements with Use Cases, through analysis using rebustness diagramms, screen flow diagrams to the design using sequence diagrams. Of course, I did take my time, trying not to overlook any implications. I knew all the syntax even before the assignment, but didn't get the "feel" of it. Nevertheless, once "the light went on", it took about 2-3 days to complete.

One of the areas you may want to cover is writing Use Cases. Though it probably not needed to complete the assignment, understanding that part helps you to see the whole process, from the requirements stage all the way to test cases. I am particulalry grateful to Mike Groble for helping to understand how to transition from the analysis to the design model. It took several books, such as "UML Distilled" by Fowler, "Use Case Driven Object Modeling with UML" by Rosenberg, "Building Web Applications with UML" (this one uses Visual Basic examples, but is still a great book), "Applying Enterpriser JavaBeans" (particularly good for Component diagrams), and, of course, "The Unified Development Process". The last one I use sparingly, it is slanted more to the academical audience rather than practical use by the simple folk like me.

So, here are the steps I took to get the assignment done:

Created screen mock ups and screen flow diagrams. Used PowerPoint.
Created Robustness diagrams. It is not a part of the formal UML, but is very useful.
Created Class Diagrams parallel with the Robustness diagrams
Created Component Diagram as I was determining the architecture of the system.
Created Sequence diagrams per each use Case Realization. Fluched out the functions per classes.
I am not going to walk through the diagrams - you may take a look at them on our company's web site.

This report shows the total points that could have been awarded in each section and the actual amount of points you were awarded. This information is provided in order to give you feedback on your relative strengths on a section basis. The maximum number of points you could have received is 100, minimum to pass is 70.

Class Diagram (40 maximum) ........................……………. 30

Component Diagram (40 maximum) ....................………… 35

Sequence/Colloboration Diagrams (20 maximum) ......……. 12



Well, that's all, folks!


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923