<?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>MIH SWAT &#187; uml</title>
	<atom:link href="http://www.mihswat.com/tag/uml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mihswat.com</link>
	<description>MIH SWAT - the official blog of MIH's Strategic Worldwide Applications and Technology Team.</description>
	<lastBuildDate>Mon, 06 Sep 2010 10:24:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Vacancies at SWAT</title>
		<link>http://www.mihswat.com/2009/11/03/vacancies-at-swat/</link>
		<comments>http://www.mihswat.com/2009/11/03/vacancies-at-swat/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 11:27:04 +0000</pubDate>
		<dc:creator>Jacques van Niekerk</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[SWAT]]></category>
		<category><![CDATA[Semantic web]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[architects]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[digital TV]]></category>
		<category><![CDATA[geeks]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[IP-TV]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Microsoft .Net]]></category>
		<category><![CDATA[oo]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Sao Paulo]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Social Graph]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[VOD]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=977</guid>
		<description><![CDATA[Would you like to work at SWAT ? We have a few positions vacant at the moment &#8211; have a look: In Sao Paulo, Brazil &#8211; we need a junior front-end developer. You are highly skilled in front-end development, with specific skills in CSS, HTML and Javascript. You are a competent programmer, but you prefer [...]]]></description>
			<content:encoded><![CDATA[<p>Would you like to work at SWAT ?<span id="more-977"></span></p>
<p>We have a few positions vacant at the moment &#8211; have a look:</p>
<p>In Sao Paulo, Brazil &#8211; we need a<strong> junior front-end developer</strong>. You are highly skilled in front-end development, with specific skills in CSS, HTML and Javascript. You are a competent programmer, but you prefer to work on the front-end. You will be working under the guidance of an experienced and expert engineer.  You like working with bright and clever people, and you are passionate about the web. The successful candidate will speak English, and will be a paulistano, or be willing to relocate to Sao Paulo.</p>
<p>In Johannesburg &#8211; we are looking for a <strong>senior technical architect</strong>. You will have the opportunity to establish the blueprint and create the framework for truly cutting edge media delivery platforms that will change the face of media in South Africa. And that is no exaggeration. You should have outstanding technical skills, including the ability to code as and when required. You must be able to interact with a team of highly skilled professionals. You will ideally have experience of VOD, digital TV, IP-TV and related technologies. A background as a developer is essential &#8211; you will have in-depth knowledge of the Microsoft .Net platform, but also wider knowledge of open source platforms and languages. You are comfortable dealing with executives and senior managers. You&#8217;re not only an ubergeek, but also an inspirational tech leader. This is a challenging position &#8211; but it represents a massive opportunity to the right person. Detailed requirements <a href="http://www.mihswat.com/wp-content/uploads/2009/11/Lead-Architect1.pdf">here.</a></p>
<p>In Cape Town &#8211; we are looking for a <strong>junior tester</strong>, who will devote a great deal of time to ensuring that a large corporate social network meets the right quality standards. You will be part of the SWAT core team &#8211; you must be prepared to work with some of the best developers, architects, geeks and web-heads you are ever likely to meet. Can you execute tasks on your own initiative, prepare and execute test plans ? More details on the position can be found <a href="http://www.mihswat.com/wp-content/uploads/2009/11/Junior-Tester.pdf">here. </a></p>
<p>Cape Town &#8211; we are looking for someone to play the role of <strong>Internet Evangelist</strong>. This role is available to anyone who is absolutely passionate about the web, who is capable of conveying this passion to diverse audiences, who learns quickly &#8230; and who can teach others. Your role will be to evangelise the use of Web technologies (and other Internet related technologies) into the larger group &#8211; the challenge is to make people from all non-internet businesses see the Internet as an opportunity not a threat. In addition you will perform tasks as assistant community manager for the corporate social network, and you will assist the Analyst in the team with research tasks. You must be willing to travel in South Africa and abroad, as required. To apply for this job, you will have to demonstrate passion, interest and knowledge of the Web and related technologies. You are a well-spoken, confident geek, web-head and proud to be a Web addict. </p>
<p>Finally, and also in Cape Town &#8211; we want to recruit a <strong>PHP developer</strong>. You will be have outstanding technical skills, wide experience in web based development, and you will be able to hold your own amongst an elite group of developers and architects. Javascript, Zend Framework, AJAX, OO, Web 2.0, REST, SOAP and UML will be old news to you. You are passionate about the web. If you think Twitter is silly, you don&#8217;t need to apply. More information <a href="http://www.mihswat.com/wp-content/uploads/2009/11/PHP-Developer1.pdf">here.</a></p>
<p>If you are interested in any of these positions, please send your CV to <a href="mailto:mkoch@mihinternet.com">Melanie Koch</a>. We look forward to hearing from you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2009/11/03/vacancies-at-swat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object Orientation’s Worst Enemy</title>
		<link>http://www.mihswat.com/2008/10/14/the-object-orientations-worst-enemy/</link>
		<comments>http://www.mihswat.com/2008/10/14/the-object-orientations-worst-enemy/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 14:29:10 +0000</pubDate>
		<dc:creator>Otavio Ferreira</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[dependencies]]></category>
		<category><![CDATA[interfaces]]></category>
		<category><![CDATA[object orientation]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[up]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=242</guid>
		<description><![CDATA[Strong dependencies among classes (or components) are definitely the villains within a software architecture. The opposite of strong dependencies, ie completely decoupled architectures, do not exist however, because such a utopian schema would actually result in no messages being exchanged among objects at all. Architects should focus on minimizing strong dependencies, designing only well-planned ones. [...]]]></description>
			<content:encoded><![CDATA[<p>Strong dependencies among classes (or components) are definitely the villains within a software architecture. The opposite of strong dependencies, ie completely decoupled architectures, do not exist however, because such a utopian schema would actually result in no messages being exchanged among objects at all. Architects should focus on minimizing strong dependencies, designing only well-planned ones. I refer to the latter as healthy dependencies, and they undoubtedly bring a lot of benefits to a system.<span id="more-242"></span></p>
<p>Successful development processes such as <a title="UP" href="http://en.wikipedia.org/wiki/Unified_Process" target="_self">UP</a> (<a title="Unified Process" href="http://www-01.ibm.com/software/awdtools/rup/" target="_self">Unified Process</a>) are usually defined as architecture-centric, which basically means that development iterations are guided by the evolution of the architecture,  and by architectural artifacts such as <a title="UML" href="http://en.wikipedia.org/wiki/Unified_Modeling_Language" target="_self">UML</a> (<a title="Unified Modeling Language" href="http://uml.org/" target="_self">Unified Modeling Language</a>) diagrams. Therefore, the architect is responsible for establishing a high level of modularity in order to achieve both expandibility and maintainability potentials. Nicely designed modules connected by healthy dependencies have the power to minimize three undesired, internal properties: Rigidity, Fragility, and Immobility. Let’s have a closer look at each one.</p>
<p>The Rigidity property states that maintenance in a specific point in the architecture may oblige the developer to also change directly related points, generating a maintenance chain. I like calling it the <a title="Domino Effect" href="http://en.wikipedia.org/wiki/Domino_effect" target="_self">Domino Effect</a>. If you don’t enjoy reading Wikipedia articles, you can just read the following extract: “The Domino Effect is a simple chain reaction that occurs when a small change causes a similar change nearby, which then will cause another similar change, and so on in linear sequence”. It’s pretty clear, isn’t it?</p>
<p>The Fragility property, in its turn, states that maintenance in a specific point in the architecture may force the developer to change a point indirectly related to or far from the former point. We will call the consequence of ths property the <a title="Butterfly Effect" href="http://en.wikipedia.org/wiki/Butterfly_effect" target="_self">Butterfly Effect</a>. Again, another Wikipedia snapshot: “The Butterfly Effect is a phrase that encapsulates the more technical notion of sensitive dependence on initial conditions in chaos theory. Small variations of the initial condition of a dynamical system may produce large variations in the long term behavior of the system”. I am sure the meaning is clear.</p>
<p>Finally, the Immobility property takes place when a developer tries to reuse an existing component, but then gets blocked by other component’s classes that the desired ones depend on. I usually call this the Banana-Gorilla Effect, funny huh? This is because whenever you try to get just the banana, the gorilla comes after it. There’s no way of running away from the big animal, and you suddenly lost one of the major features of the object orientation tenet, <a title="code reuse" href="http://en.wikipedia.org/wiki/Software_reuse" target="_self">code reuse</a>.</p>
<p>OK, enough talking, let’s get back to business. How can we avoid having these three bad properties? How can we design only healthy dependencies? Quick answer: Using <a title="Interfaces" href="http://en.wikipedia.org/wiki/Interface_(computer_science)" target="_self">Interfaces</a> for <a title="dependency inversion" href="http://en.wikipedia.org/wiki/Dependency_inversion_principle" target="_self">dependency inversion</a>. An Interface is a partial description of a domain concept, and is certainly an invaluable ally for any software architect. Technically speaking, it’s a bunch of method signatures that allow further specialization. <a title="Erich Gamma" href="http://en.wikipedia.org/wiki/Erich_Gamma" target="_self">Erich Gamma</a> et al wrote an entire (best-seller) <a title="book" href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1223960343&amp;sr=1-1" target="_self">book</a> called “Design Patterns: Elements of Reusable Object-Oriented Software”, which provides a full set of solutions that address common object-oriented software problems. The solutions are divided in three categories (namely Creational, Structural, and Behavioral), and all of them take advantage of interfaces (holy thing!).</p>
<p>In the next post I’ll illustrate the discussion using a graphical, concrete example. Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2008/10/14/the-object-orientations-worst-enemy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
