OCMJEA Part 2 e 3 – Aprovado!

Postado em Atualizado em

Aprovado2No mês passado fui aprovado nas últimas fases da certificação OCMJEA e hoje eu gostaria de compartilhar as minhas dicas para os novos candidatos. Na segunda fase da prova você é responsável por desenvolver um projeto completo baseado em um documento de requisitos. Neste documento vem descrito o cenário de negócio da corporação, os requisitos do produto a ser desenvolvido e que você esta sendo contratado para ser arquiteto responsável pela elaboração e a criação dessa nova solução. Como em qualquer projeto, o arquiteto precisa analisar o cenário da corporação, bem como seus requisitos e fazer a tomada de decisões de design.

Livros Sobre Decisões de Design

A minha primeira dica é relacionada aos livros que você pode ler para aprender quais são as decisões de design mais comuns em soluções corporativas e quais são os prós e contras de cada uma delas. Segue os livros:

  1. POJO in Action by Chris Richardson – Esse livro apresenta versões de produtos Java antigas, mas as decisões de projeto ainda continuam a mesma. Eu indico como leitura inicial para que os candidatos aprendam o core básico das decisões, desprezando os produtos tecnológicos antigos utilizados pelo autor.
  2. Patterns of Enterprise Application Architecture by Martin Fowler – Esse livro é o mais indicado para essa fase dois da certificação aonde Martin Fowler descreve detalhadamente cada decisão de design dentro de uma solução corporativa acompanhando com os seus prós e contras. Ele pode até ser utilizado como “regra de bolo” para suas decisões de projeto durante a certificação.
  3. Domain Drive Design by Erick Vans – Esse livro aborda o principal design da atualidade que é o fato de se construir e documentar soluções orientadas a objetos sem gerar amarrações com tecnologias ou plataformas. Nele Erick Vans te ensina a visualizar e construir uma solução puramente orientada e objetos, independentemente de plataforma ou tecnologia.
  4. Design Patterns: Elements of Reusable Object Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides – Esse livro contém o catalogo de padrões mais básicos do paradigma da orientação a objetos que sem dúvidas nenhuma você precisa para resolver as estruturas das classes/componentes na solução.
  5. Real World Patterns Rethinking Practices by Adan Bien – Esse livro trás o estudo feito pelo Adan Bien que readapta e aposenta os antigos padrões da versão J2EE para as versões mais atuais do JEE 6+. Nele você aprendera como e quais padrões continuar usando e aqueles que não precisam mais ser utilizados.

Cada livro te oferece conhecimento voltado para uma parte da solução da certificação e o ideal seria que o candidato investisse na leitura destes livros antes de encarar a prova, uma vez que o tempo de entrega da segunda fase é de apenas seis meses.  

Estudo de Casos Fictícios

A segunda dica é sobre livros e artigos que apresentam exemplos de soluções desenvolvidas para a segunda fase da prova, servindo também como estudo de caso para que os novos candidatos tenham uma noção básica e inicial de como a coisa é feita. Segue as dicas:

  1. Enterprise Enterprise JavaBean 3.0 by Bill Burke (chapter 21) – Nesse livro Bil Burke apresenta passos de como desenvolver uma solução JEE utilizando EJB3 recheado de detalhes e explicações que podem ser utilizados para aprender inúmeros detalhes semelhantes da segunda fase da prova.
  2. Sun Certified Enterprise Architect for Java EE Study Guide by Mark Cade and Humphrey Sheil – Nesse livro os autores cobrem todas as partes da certificação, apresentando nos capítulos finais uma solução exemplo com detalhes interessantes.
  3. Sun Certified Enterprise Architect for Java EE Study Guide (Exam 310-051) by Paul Allen and Joseph Bambara – Nesse livro os autores também cobrem todas as partes da certificação, apresentando nos capítulos finais uma solução exemplo com detalhes interessantes.
  4. Oracle Certified Master, Java EE Enterprise Architect Practice Guide by Amritendu De – Esse livro é o mais recente sobre essa certificação que foi lançado após eu ser aprovado no qual eu ainda não tive a oportunidade de ler, mas que como os outros, também possuem uma solução exemplo nos capítulos finais.
  5. Epractizelab Simulator – Simulador pago da empresa Epractizelab que traz um exemplo de um projeto e a solução que também pode ser utilizado como estudo. Como eu não comprei, não posso opinar se é bom ou não. Para todas as dúvidas acesse http://www.epractizelabs.com/certification/sun/scea-5-part23-exam.html
  6. Revista Mundo Java Edição 35 Artigo SCEA5 Certificação de Arquiteto – Artigo completo sobre um projeto e a solução fictício escrito por Marcio Varchavsky.

Criando a Solução

Segue algumas dicas para você começar a sua solução. Preste atenção na extração de requisitos:

  • Descrição da história da empresa.
  • Descrição dos sistemas legados.
  • Descrição de casos de uso.
  • Descrição da infraestrutura necessária.

Documentação de requisitos da certificação é obscura, incompleto e pode até vir propositalmente com alguns erros. Você poderá precisar fazer algumas correções e ou suposições em cima do contexto para complementar o projeto, tornando o implementável. É justamente por isso que faz parte da entrega da solução um documento de decisões de projeto no qual você deverá descrever suas suposições e como elas afetaram a sua solução final. Preste atenção na extração dos requisitos não-funcionais e destaque as descrições associadas a cada exigência. Exemplos:

  • Número de demanda para uso da solução
  • Expectativa de aumento de escalabilidade.
  • Tempo de resposta de usuário final.
  • Tempo de resposta de comunicação nas integrações com outros sistemas.

Faça Suposições

Na questão das suposições, você tem dois caminhos a seguir:

  1. Suponha que alguma coisa já exista na solução proposta e assim não faça nada relacionado com aquilo e documente essa suposição.
  2. Suponha que alguma coisa não exista na solução proposta e assim necessitando ser adicionando e considerado na arquitetura como parte da sua solução proposta. Tenha cuidado com esse caminho, uma vez que você estará aumentando seu projeto e consequentemente abrindo mais espaços para inconsistências e erros.

A minha dica sobre isso é: não assuma ou invente coisas que adicione complexidade ao seu projeto. Faça suposições de coisas que estão faltando com o objetivo de complementar as possíveis faltas de informações. Resista a tentação de fazer coisas mirabolantes.

Diagramas

Segue algumas dicas para a construção dos diagramas:

  • Os diagramas precisam estar desacoplados de qualquer detalhe de tecnologia ou framework especifico, independente de fornecedor.
  • A essência dos diagramas é apresentar a estrutura que resolve os problemas do contexto proposto e não a infraestrutura de tecnologia e frameworks adotada.
  • Mantenha os diagramas em alto nível. Ou seja, não se preocupe em mostrar coisas de baixo nível como algoritmos, detalhes de API, etc.
  • Comece com o diagrama de implantação, depois classes, depois sequencia e por fim o de componentes.
  • Não se esqueça de ir documentando todas as suposições e as decisões de design que você for fazendo ao longo da construção de diagramas.

Perguntas para a Parte 3

Na última fase da prova, o candidato precisara responder oito perguntas relacionadas ao projeto desenvolvido. A minha dica aqui é a seguinte: Responda as questões de arquiteturas durante a fase de projeto, ao mesmo tempo em que você produz o documento de decisões. Segue abaixo uma listagem de possíveis perguntas que poderá encontrar na prova:

  • How does your design handle availability? Why did you choose it? pros and cons of your approach?
  • How does your design handle reliability? Why did you choose it? pros and cons of your approach?
  • How does your design handle scalability? Why did you choose it? pros and cons of your approach?
  • How does your design handle performance? Why did you choose it?  pros and cons of your approach?
  • How does your design handle security? Why did you choose it? pros and cons of your approach?
  • How does your design handle extensibility? Why did you choose it? pros and cons of your approach?
  • How does your design handle maintainability? Why did you choose it? pros and cons of your approach?
  • Set of design patterns on which layer and why?
  • How does your design support session/state handling?
  • How does your design handle persistence?
  • How does your client tier talk to business tier?
  • How does your design handle Qos 5 Sec in peak time?
  • How does your design handle transactions?
  • How does your design handle authentication and authorization?
  • What technology u have used in presentation and business tier why?
  • How many SB’s you used and purpose of them?
  • Why have you chosen framework If any If not why not ?

Não deixe para pensar e elaborar essas respostas na hora da prova por que você não terá tempo hábil para isso. Respondendo elas antecipadamente, te ajudara a chegar a ultima prova bem preparado e até mostrar erros que você cometeu durante a elaboração do projeto, levando você refatorar alguma coisa.

Eu me coloco a disposição para qualquer eventual dúvida relacionado a arquitetura ou sobre a certificação. Agora é renovar a metas e continuar avançando. Até a próxima pessoal!

“Os lábios do justo apascentam a muitos, mas, por falta de senso, morrem os tolos.” Provérbios 10:21