<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JavaPulse &#187; architecture</title>
	<atom:link href="http://javapulse.net/tag/architecture/feed/" rel="self" type="application/rss+xml" />
	<link>http://javapulse.net</link>
	<description>a finger on the pulse of the freelance Java&#0153; market in the Netherlands</description>
	<lastBuildDate>Sat, 19 Jun 2010 11:00:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Study Tips for Sun Certified Enterprise Architect (SCEA) Exam</title>
		<link>http://javapulse.net/2009/06/23/study-tips-for-sun-certified-enterprise-architect-scea-exam/</link>
		<comments>http://javapulse.net/2009/06/23/study-tips-for-sun-certified-enterprise-architect-scea-exam/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 14:12:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[scea]]></category>
		<category><![CDATA[suntone]]></category>

		<guid isPermaLink="false">http://javapulse.net/?p=153</guid>
		<description><![CDATA[It&#8217;s been a year since I attended a bootcamp for Sun Certified Enterprise Architect and I noticed that I never published these study tips. The course went from fundamental architectural concepts to using current Java technology to design software.
I really liked learning the SunTone Architecture Methodology &#8211; specifically the SunTone cube, which helped me visualize [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a year since I attended a bootcamp for <a href="http://www.sun.com/training/certification/java/scea.xml" target="sun">Sun Certified Enterprise Architect</a> and I noticed that I never published these study tips. The course went from fundamental architectural concepts to using current Java technology to design software.</p>
<p>I really liked learning the SunTone Architecture Methodology &#8211; specifically the SunTone cube, which helped me visualize and make connections to infrastructure. What I liked less is the focus on Java design patterns, some of which are outdated, and a focus on (although a little understandably) Sun technology. The problem is these days &#8211; knowing the Sun way of doing things (EJB3, JSF, etc) is not the only choice. There is definitely a gap there for a more comprehensive Java Architecture course that comprises of all mainstream Java technology and help make the choices between them. Overall, I found that it was a good opportunity to focus and learn for a week on architecture and design. I&#8217;m glad to find that UML is still relevant in the face of agile development, although people haven&#8217;t talked about it much in more than 10 years.</p>
<p><strong>SunTone Architecture Methodology</strong><br />
To aid in the development of enterprise applications, Sun Java Center formulated the SunTone Architecture Methodology (SunTone AM) in the late 90&#8217;s. Enhancing RUP with the SunTone cube, it has now evolved to have more agile influences. SunTone AM introduced the SunTone cube to describe primary concerns in enterprise applications. The three faces on the cube represented layers, tiers, and systemic qualities.</p>
<p><strong><em>Layers</em></strong><br />
Layers are usually in the domain of infrastructure architects, where the application sits on top of infrastructure components.</p>
<ul>
<li>Application &#8211; software</li>
<li>Virtual Platform &#8211; interfaces to the middleware for decoupling</li>
<li>Application Infrastructure &#8211; middleware</li>
<li>Enterprise Services &#8211; OS</li>
<li>Compute &#038; Storage &#8211; hardware</li>
<li>Network Infrastructure &#8211; network</li>
</ul>
<p><strong><em>Tiers</em></strong><br />
Tiers are well-known to application architects. They describe how an application is decomposed into modules to reduce coupling and enhance system flexibility. Annoyingly, tiers are sometimes called layers, when not in the context of SunTone.</p>
<ul>
<li>Client Tier &#8211; browsers, standalone clients</li>
<li>Web Presentation Tier &#8211; HTTP requests</li>
<li>Business Tier</li>
<li>Integration Tier &#8211; interfaces with resources</li>
<li>Resource Tier &#8211; DBMS, mainframe, EIS</li>
</ul>
<p><strong><em>Systemic Qualities</em></strong><br />
Systemic qualities help establish the quality of service that a system can deliver. Different systemic qualities impose different constraints on the design of a system. This list correlates to Non-Functional Requirements (NFR) that when prioritized help make choices in system design that take quality, time, and costs into consideration.</p>
<ul>
<li>Manifest Qualities
<ul>
<li>Performance</li>
<li>Reliability</li>
<li>Availability</li>
<li>Usability</li>
</ul>
</li>
<li>Operational Qualities
<ul>
<li>Throughput</li>
<li>Manageability</li>
<li>Security</li>
<li>Serviceability</li>
<li>Testability</li>
</ul>
</li>
<li>Developmental Qualities
<ul>
<li>Realizability</li>
<li>Planability</li>
</ul>
</li>
<li>Evolutionary Qualities
<ul>
<li>Scability</li>
<li>Maintainability</li>
<li>Extensibility</li>
<li>Flexibility</li>
</ul>
</li>
</ul>
<p><strong>The Multiple Choice Exam</strong><br />
A lot of passing the exam has to do with learning the terminology.<br />
The multiple choice exam tests knowledge from roughly 8 areas:</p>
<ol>
<li>Application Design Concepts + Principles
<ul>
<li>encapsulation, inheritance, separation of concerns</li>
</ul>
</li>
<li>Common Architectures
<ul>
<li>2-tier, 3-tier, multi-tier, rich clients vs. browser/thin clients, web services</li>
</ul>
</li>
<li>Integration + Messaging
<ul>
<li>communication w/ external systems, WS+XML over HTTP, JCA, JMS</li>
</ul>
</li>
<li>Business Tier Technology
<ul>
<li>Enterprise Beans, Enterprise Classes, Stateful/Stateless Session Beans, Message Driven Beans</li>
<li>CMP/BMP, JDO, JPA, ORM, DAO, JDBC, JAX WS, EJB 3.0</li>
</ul>
</li>
<li>Web Tier
<ul>
<li>Web Framework, JSPs, Servlets , JSF</li>
</ul>
</li>
<li>Applicability of J2EE Technology
<ul>
<li>Designing modular solutions, SOA, measuring NFR, refactoring</li>
</ul>
</li>
<li>Design Patterns
<ul>
<li>GoF Design Patterns</li>
<li>Core J2EE Design Patterns</li>
</ul>
</li>
<li>Security
<ul>
<li> Client-side security: WebStart, applet deployment</li>
<li>potential threats</li>
<li>encryption, hash, SHA, asymmetric vs symmetric</li>
<li>JAAS</li>
</ul>
</li>
</ol>
<p><strong>Resources</strong></p>
<ul>
<li><a href="http://www.makeitfly.co.uk/Presentations/suntoneam_wp_5.24.pdf" target="suntone">SunTone Architecture Methodology</a></li>
<li><a href="http://java.sun.com/javaee/5/docs/tutorial/doc/" target="javaee">The Java EE 5 Tutorial</a></li>
<li><a href="http://en.wikipedia.org/wiki/Gang_of_Four_(software)" target="gof">Gang of Four Design Patterns</a></li>
<li><a href="http://www.corej2eepatterns.com/Patterns2ndEd/index.htm" target="corej2ee">Core J2EE Design Patterns</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://javapulse.net/2009/06/23/study-tips-for-sun-certified-enterprise-architect-scea-exam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smart = Agile++ by Ivar Jacobson</title>
		<link>http://javapulse.net/2008/12/24/smart-agile-by-ivar-jacobson/</link>
		<comments>http://javapulse.net/2008/12/24/smart-agile-by-ivar-jacobson/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 15:10:17 +0000</pubDate>
		<dc:creator>Clara Ko</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[devoxx08]]></category>
		<category><![CDATA[smart]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://javapulse.net/?p=131</guid>
		<description><![CDATA[One of the most entertaining talks I went to was the Be smart! by Ivar Jacobson. Although the concepts that he presented were definitely not new, he found a very clear and entertaining way to present them. A RUP guy, he told it how it is &#8211; about what I consider to be agile &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most entertaining talks I went to was the <a href="http://devoxx.com/display/JV08/Be+smart!" target="Devoxx">Be smart!</a> by <a href="http://ivarblog.com" target="Ivar Jacobson">Ivar Jacobson</a>. Although the concepts that he presented were definitely not new, he found a very clear and entertaining way to present them. A RUP guy, he told it how it is &#8211; about what I consider to be agile &#8211; while calling it not agile &#8211; but smart.<br />
According to Ivar, here are a list of things that we don&#8217;t learn in school:</p>
<ul>
<li>people</li>
<li>teams</li>
<li>projects</li>
<li>requirements</li>
<li>architecture</li>
<li>modeling</li>
<li>testing</li>
<li>documentation</li>
<li>process</li>
<li>knowledge</li>
<li>outsourcing</li>
<li>tools</li>
</ul>
<p>From the above, I believe that teamwork and testing are becoming increasingly relevant and valuable in our professional.<br />
I must agree with him that these topics were either not taught at all or they were not taught very effectively due to the lack of focus given to these &#8220;non-technical&#8221; topics (with the exception of architecture &#8211; which usually didn&#8217;t get ). At least that was how it was when I was at university (I graduated in 1996 at U.C. Berkeley). Perhaps there is more focus on them these days. At that time, they were starting to realize that being able to work in a group is important for the students into workplace. So they started putting people in groups to do assignments. I believe in teamwork because it is better for the company as a whole. A team that can work together and share knowledge amongst members is more valuable to the company than an individual who is supposedly `really good´. If this individual does not share his/her knowledge, then the company gets only limited benefits of the individual&#8217;s potential. In a story that I heard from <a href="http://jeffsutherland.com/" target="Jeff Sutherland">Jeff Sutherland</a> &#8211; one of the creators of Scrum &#8211; the combined effort of a team out-performed the effort of a &#8216;really good&#8217; individual &#8211; an individual considered 5 times as good as the other team members. This performance was measured when the Scrum master kicked the &#8216;really good&#8217; individual out of the team. Turned out that he was disrupting the performance of the other team members by refusing to work together with them.</p>
<p>Another topic is increasingly relevant these days for a developer is testing. Again, testing is hardly ever taught in school. I&#8217;m glad to see as over the years testing has become more and more prominent. Any developer that does not know or does not care about testing is definitely old-school and out-dated. A good developer cares about about writing testable code and has is equipped with a list of testing tools in his skillset.</p>
<p>Here are some of the great quotes from the talk:<br />
<em>A fool with a tool is still a fool but a dangerous fool</em><br />
Tools are not enough, but proper use of the tools is what is important. Companies often decide on new tools without investing in training for these tools.</p>
<p><em>Software is developed by people not by process and tools</em><br />
I have been always saying about agile is that it puts the human element back into software development. That is the really that it has an effect on motivating people. Feedback motivates people. Doing a good job motivates people.</p>
<p><em>Software development is like a football game &#8211; lose together or win together</em><br />
When you play football, you don&#8217;t say, &#8220;I did great &#8211; I scored 3 goals &#8211; but the goalie, he let in 5 goals &#8211; he&#8217;s terrible.&#8221; Either you win as a team or lose as a team. Winning or losing may come down to your ability to work as a team.</p>
<p><em>Think big, build incrementally</em><br />
This reminds me of the discussion about whether people prefer to use <a href="http://www.mountaingoatsoftware.com/article_view/27-advantages-of-user-stories-for-requirements" target="Mountaint Goat Software">user stories</a> or use cases in agile. A <a href="http://alistair.cockburn.us/A+user+story+is+to+a+use+case+as+a+gazelle+is+to+a+gazebo">good explanation</a> of the difference highlights the reservation that people have about user stories as being too narrowly focused. With requirements as with architecture, it is important not only to keep the big picture in mind, but to find a good balance between the big picture and the details. Some companies have a good grip on the big picture, while losing sight of the details, while some other companies focus on the detail without a big picture, resulting with an inflexible system.</p>
<p><em>Architecture without executable code is a hallucination</em><br />
This is something that I feel strongly about. I call myself a hands-on architect &#8211; perhaps I should call it non-ivory-tower architect. <a href="http://www.agilemodeling.com/essays/agileArchitecture.htm" target="Agile Modelling">The real world is not perfect like it seems from the ivory tower.</a> Architecture is only valuable when it has been proven. Ivar says: Start by building a skinny system to demonstrate that all critical risks have been eliminated.</p>
<p><em>Law of Nature: People don&#8217;t read documentation</em><br />
Only write the essentials and leave room for conversations and self-discovery later. In school, we are taught to think for ourselves, but often in the workplace, especially a big company, we are asked on our first day to read endless documentation. Honestly, I do a skim through of the table of contents and maybe the first pages. It is a pain to read through a big document. Write down the essentials with attention to bringing across the main ideas in a few words as possible.</p>
<p><em>The smart way to do testing: We are all testers!</em><br />
Clean up after ourselves. Testers are the real thinkers.</p>
<p>I really agree with what Ivar ended the talk with:</p>
<blockquote><p>
We cannot all be equally smart, but we can all become smarter.
</p></blockquote>
<p>You got a team of people, so why not make sure everyone is working at their best potential.</p>
]]></content:encoded>
			<wfw:commentRss>http://javapulse.net/2008/12/24/smart-agile-by-ivar-jacobson/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
