1. Digest the requirements:
Read the requirements very carefully and understand it. Take at least ten days to digest all the requirements because it is not complete and confusing at times. Grasp everything and have a big picture always. Give yourself a lot of time to understand repeatedly before put your hands on solving the problem. Where ever you have problem understanding or you find that something is missing make a not of it. This will help you make some assumptions later.
2. Class Diagram:
I started the part2 with Class diagram based on the Domain model and identified the Subsystems. I had only one class diagram with 15 classes and 5 subsystems. I was very careful about the Associations, aggregation, composition, navigatability, relationships (Classification, Generalization, Dependency, Realization) and cardinalities. I identified whatever attributes required and its accessibility to have in every class. I did not mention any operations or methods in the class diagram. For some of the classes I did not even give any attributes. I gave all the relationships some name that explains the interactions between the classes. I was very careful in giving the Stereotypes wherever required.
Do not get into too much detail and view everything from high level. That is what is expected for this architect level exam. At the same time make sure that do not lose anything. It is very important that how best you make others understand especially the marker with one class diagram. I have seen others break down the class diagram into more than one class diagram. Detailed class diagram is not necessary at this architecture level and will make others confuse and complicate the things rather than help understand
Component/Collaboration I cannot advice much here bcos I haven't scored 100%.
3. Component Diagram:
I divided the whole requirement into subsystems and made component diagrams for each subsystems. I have heavily used J2EE design patterns.
4. Sequence Diagram:
I made just one sequence diagram for each use case. Some of the use case may be little complicated to explain within a single page. Better to split the sequence diagram in this case so that it is not cluttered and complete the whole sequence.
5. Deployment diagram:
I had one deployment diagram according to the requirement. The deployment requirement was clear about the physical locations and machines. When I made the deployment diagram I was pretty clear where when the right protocols are being used and how the subsystems, legacy systems interact. Here I mentioned which component goes where and how each type of client accesses the system. Even though providing the deployment diagram is not a requirement I would suggest for your own sake and for the
examiner create a neat diagram.
Even though I went through Struts and Petstore architecture I did not use any of them. I designed my own framework and used it for the exam. However whatever framework you use it should be portable and should support the non-functional requirements.
Once you made all the diagrams check for consistency with all diagrams. Go through each diagram and try to improve the diagrams to satisfy all the functional requirements. Every time you make any changes to any diagram ensure the consistency among all the diagrams and assumptions.
8. Assumptions document:
This is the piece I had little trouble with which many guys had not a problem. I did not know what kind of assumptions and at what level do I need to make assumptions. Out of patience I made 2-3 pages of assumptions. My suggestion is that we don't need to go into too much detail here again.
UML Diagrams: As per the requirement all the diagrams should be UML compliant. I
used MagicDraw for Class Diagram and Component Diagram. When I started sequence diagram this tool did not let me allow drawing more than certain number of objects because I had the evaluation version. So I had to make the sequence diagram in Rational Rose. My suggestion is that adopt a good tool.
Documentation: For documentation use a neat HTML tool like FrontPage. Do not clutter the document with unnecessary fine details; the marker may not have patience to go through the entire document. So make it simple and neat and do not miss any essential points.
10. Service level /Non-functional requirements:
The non-functional requirements in J2EE architecture are performance, scalability, reliability, availability, manageability, extensibility, maintainability and security
11.Uploading the assignment:
Once done with the assignments revisit all the diagrams and assumption document. Try to make it smaller size. I heard that some people had problem uploading because of the fat assignment. I had problem uploading because I did not have access right to upload. I sent a mail to Prometric asking permission and got it the same day luckily. So make sure that you have access right to upload before the Part-III exam.
12. Part-III exam.
Give the Part-III exam ASAP. I uploaded the assignment the evening and gave the exam the next day afternoon during my lunch break. If you have done your architecture assignment according to the J2EE specification yourself Part-III is very simple. The four essay questions are basically to address the Non-functional requirements like performance, scalability, reliability, availability, manageability, extensibility, maintainability and security. Other things might include how are you taking care of your architecture to address transactions, persistence, authentication, authorization, et al. Here again my suggestion is to make it neat and simple. The marker does not need to be
explained with the theory behind transaction. Rather give him clear answer as to how did your design address the transaction.
1.<SCEA by Mark Cade is a very good book for part-II. I based by level of design on the example given in this book. >
2. <Core J2EE patterns>
3. <Java Petstore Application from the Java blueprint>
5. <UML Distilled>
14. Exam Result:
This is the long wait for about 3-weeks to get the result and you cannot do anything but wait.
As one or two people have emailed me for advice, I thought I'd pop up a few notes here on my take on how to approach parts 2 and 3 of the Java 2 Architect Certification. Note that I don't cover part 1 - that part is more than adequately covered by Aaron's notes and the messages on this group. I'm not sure if Aaron or somebody wants to pull these notes out and add them to a document in the files section of some sort?.. What follows is *my* approach to parts 2 & 3. I'm not saying this is how *you* should do it, but all I know is that this approach got me an over 90% score, which is more than good enough (in fact you only need 70% to pass). Please, please do not email with specific questions on design approaches and choices: that's what you are supposed to be doing as part of the certification. Do note, however, that there are many, many ways to 'skin a cat': Sun aren't hung up on you building the 'perfect' solution - it doesn't exist - but they are keen for you to show *why* you made certain decisions, and what the pro's and con's of different approaches you considered were. Anyway, here goes... 1. Read all the requirements documents supplied very, VERY carefully. The requirements supplied by Sun are, IMHO, incomplete, contradictory and confusing in places. Give yourself TIME to digest these documents - say at least a couple of weeks. Re-read them over and over again and MAKE NOTES as you go along of any assumptions you make - and YOU WILL have to make some assumptions. 2. Document your project submission properly. Don't just send off your submission with a quick list of what your diagrams are called and where they are located (you don't need this anyway as you'll HTML anchor them from your readme). Instead, write a proper, long HTML document that explains your approach. I had a section one which was my analysis of the project materials supplied, a section two which was my working assumptions coming out from the analysis (i.e. section one), a section three which was my design approach, and finally a section four which contained a brief description of my diagrams and HTML links to them. Make this document NEAT - get a decent HTML tool (i.e. don't just rely on Word) and TEST the neatness of your layout in at least two browsers. It may sound stupid, but you've no idea how many extra marks good, clean presentation can get you... 3. Don't get lost in the detail. I can't believe how much 'guess the detail' is exchanged in messages on the group! Remember, the submission is about OVERALL ARCHITECTURE, not how many EJBs/Beans/Servlets/JSPs/Classes/Methods etc., etc. you need, or whether Fly-By-Night should be doing this, or that, or the other. Don't loose sight of the BIG PICTURE - as that's what you are supposed to be presenting: a well-considered, reasonable, flexible architecture that serves the main goals of the requirements. Just because someone else on the group used an EJB/JSP/Servlet etc. where you used something different doesn't mean that your approach is wrong. Likewise, just because someone else has 50 more classes on their diagrams than you doesn't mean that you are missing something (in fact, I probably had half the number of classes I saw some people coming up with). Ditto the level of detail: don't litter you classes and diagrams with every method/attribute in the world; keep them simple, to the point, and easy to digest (remember, someone you'll never, ever meet has to read them and mark them - the last thing you'll want to do is confuse that individual.) 4. Books. I used the following three books *only* for part 2 & 3. I don't believe you need any others. Obviously if you don't understand these books when you read them, then you do need some others! However if you can't understand these 3 books, you shouldn't really be attempting the certification in the first place... Book 1: The Unified Modeling Language User Guide (Addison Wesley) - Booch, Rumbaugh & Jacobson. This book will help you with your diagrams no end. This is a longer book than Martin Fowler's UML distilled (also recommended if you are new to UML and want a quick taste) - and it repeats itself a lot - but it has better coverage of Component diagrams and stereotypes (er, and everything else UML). Book 2: Designing Enterprise Applications with the Java2 Platform, Enterprise Edition (Sun Microsystems Press). This book is a fairly easy read, and is the SUN BIBLE on architecturing J2EE applications. I would call you A FOOL if your submission did not follow the basic approaches detailed in the book (even if you don't agree with them.) The way I look at it, there is NO WAY Sun can fail your submission when you base it heavily on there own architecture book.
NB. The above book has a final chapter that talks about the Sun Java Petstore demo. Get yourself the latest copy of the code from the Sun site, and note that it has changed a bit from that listed in the book (esp. the use of XML to drive the request, event and screen processing). Study the petsore demo code and the book HARD. This took me weeks to go through in detail, but I learnt a lot. And hey, it's free!
Book 3: Java 2 Platform Enterprise Edition Platform and Component Specifications (Sun Microsystems Press). OK, you don't really NEED this, but I find I can't live without it. It is the printed version of the Servlet/JSP/EJB specs. on the Sun site. I found it more convenient to have them in one book than download everything and print it all out. This book goes into way more detail than you'll need for the project, but it's always good when you want some clarification on low-level detail. 5. Diagrams. Keep them clean and simple. I used Rational Rose. You can get a demo disk off them or download it from their site. This is the same tool that Sun used for the diagrams they supplied, and it's easy to save your work directly as HTML. Sorry I can't offer any more advice on other UML tools as Rational is the only one I've ever used. Use UML notes, stereotypes and sensible naming conventions to add clarity to your diagrams. Make sure you document your naming conventions in the document I listed above as part of your submission. Panic: Just three diagrams for the whole project submission! How on earth do I explain the universe of my submission in just three documents?!!! Like I said earlier, keep it SIMPLE. Don't put on any extraneous classes. For instance, I didn't put ANY GUI classes (JSP, Swing, etc.) on my Sequence Diagram. Why? Well, they just made the bloody thing too big! At the end of the day the GUI interface is just a 'request generator', so why not just show requests as the start of your sequence diagram elements? Better still, what about translating requests to events? All that machinery could clutter the diagram even further. So, LEAVE IT OFF. Just show events as the entry points on your Sequence diagrams... You see, in two simple steps you've halved the size of the Sequence diagram, leaving you to concentrate on showing how the Use Case Text's are actually processed by your 'back end' application architecture - and remember that's what you are being marked on: your ARCHITECTURE, not the VASTNESS of your diagrams. (NB. I got 100% for my Sequence diagram, so I must have got something right...
) Follow the same approach for all your diagrams - i.e. make sure they are logically consistent. This is pretty easy in Rose, as all your classes, etc. are stored in a repository, from which you select to place on your diagrams. A simpler tool may not offer this, so make sure you keep the consistency by checking all your diagrams side-by-side (and print them out first). 6. Follow-up exam. Take it as soon as you make your submission. Take a copy of the document you submitted along with your submission to the test centre and re-read it a couple of times before taking the exam (you won't be able to take this document in with you to the examining room, of course). The aim here is to make sure your exam replies are consistent with your submission. The exam questions are quite easy and fairly broad. Like the project, Sun wants you to concentrate on higher-level architectural choices, and the pro's and con's of various approachs, particularly the approach you chose for your submission. You will not be asked any detailed questions on EJBs/JSPs/etc., so relax!
The exam should take you no more than 10-15 minutes. I wasted time by not reading all the questions first, and therefore ended up repeating myself and having to go back and cut-n-paste answers around. Do yourself a favour and read all the questions first - I think there are only 4-5 of them anyway. Don't write too much. For detail, refer the examiner to the appropriate sections of the document you submitted. Spend some (most) of the huge amount of extra time you'll have left over by re-reading your answers and cleaning them up: layout, spelling, consistency and getting the detail balance right. Maybe expand some of your replies by detailing a few alternative approaches to those you used in your submission, and why you rejected them. Maybe also add a few notes on the 'real world' implications of your approach: for instance, if you keep state in stateful EJBs, would this state automatically propagate across clustered servers in a highly scalable solution? If not, what alternative would you suggest in this scenario? Anyway, that's it. My guide to parts 2 & 3. Really, if you read the books I listed above - especially Book 2 - and spend plenty of time studying the project requirements and the Sun Petstore demo there is no way you should fail. It's all down to plain hard work. How much it will take will vary from person to person, but I put over 100 hours or so, spread over a couple of months or more. Don't rush it, it costs too much money when you fail! Enjoy the experience, and make sure you take away from it much more than just the piece of paper that says you are a Sun Certified Archtiect. All the best, Steve Phelan.
导语 | Flink已经成为未来流计算趋势，目前在很多大厂已经有了大规模的使用。最近在学习Flink源码，就想把自己学习的过程分享出来，希望能帮助到志同道合的朋友。开始阅读源码，说明读者已经对flink的基本概念有一些了解，这里就不再重复介绍Flink了。本文作为学习过程的第一章，首先对Flink的工程目录做一个解读，了解了工程下各个模块的作用，才能在遇到问题时准确定位到代码，进一步学习。
Flink通过Checkpoint机制实现了消息对状态影响的Exactly Once语义，即每条消息只会影响Flink内部状态有且只有一次。但无法保证输出到Sink中的数据不重复。以图一所示为例，Flink APP收到Source中的A消息，将其转化为B消息输出到Sink，APP在处理完A1后做了一次Checkpoint，假设APP在处理到A4时发生错误重启，APP将会重新从A2开始消费并处理数据，就会导致B2和B3重复输出到Sink中两次。
implications of non-volatile memory as primary storage for database management systems