<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.arquitecturadesoftware.org/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>João Cortez Blog</title><link>http://www.arquitecturadesoftware.org/blogs/joaocortez/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>What is Software Architecture and what is the role of the Software Architect?</title><link>http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx</link><pubDate>Mon, 26 Feb 2007 12:25:00 GMT</pubDate><guid isPermaLink="false">f91c5163-993a-4ad3-b0c6-9418870e089f:851</guid><dc:creator>jcortez</dc:creator><slash:comments>0</slash:comments><comments>http://www.arquitecturadesoftware.org/blogs/joaocortez/comments/851.aspx</comments><wfw:commentRss>http://www.arquitecturadesoftware.org/blogs/joaocortez/commentrss.aspx?PostID=851</wfw:commentRss><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;There are&amp;nbsp;a lot of different opinions and discussions of what exactly&lt;STRONG&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-FAMILY:Arial;"&gt;Software Architecture&lt;/SPAN&gt;&lt;/STRONG&gt; is. I personally like the definition from Bass, Clements and Katzman:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;"The software architecture of a program or a computing system is the structure or structures of the system, which comprises software components, the externally visible properties of those components, and the relationships among them".&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;The definition of IEEE (IEEE 1471) is more comprehensive in the sense that it includes the explicit connection to both the context and the underlying principles:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;“The fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution.”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;What is then the goal of Software Architecture? In my opinion, first and foremost a &lt;STRONG&gt;&lt;SPAN style="FONT-FAMILY:Arial;"&gt;Software Architecture is a solution which tries to maximize different (sometimes competing) objectives under a given set of constraints.&lt;/SPAN&gt;&lt;/STRONG&gt; As a result, the Software Architect needs to balance a large number of factors, such as economical, technical, political, social and&amp;nbsp;aesthetic under technology, personnel, schedule and budget constraints.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;Regarding the deliverable of Software Architecture, this is the “Architecture Description” (IEEE 1471), sometimes referred to as the “Architecture Blueprint”. The Architecture Description is a collection of views which present different perspectives of the same architecture blueprint. There is, however, no consensus about the set of views which must be included in an architecture description. The Zachman Framework, defines 36 views while the Rational Unified Process (RUP) defines 4+1 view models.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;There are usually more than one possible valid software architectures solutions for a given problem.&amp;nbsp;It’s important to stress the point that that an architecture can not be judged or evaluated unless the context of the problem on which it was developed is well understood. Based on that context, architecture alternatives can be assessed and compared against each other. Bass, Clemens and Katzman propose a methodology called Software Architecture Analysis Method or SAAM for short. Microsoft, in MSF v4 for CMMI Process Improvement, offers a similar methodology called Lightweight Architecture Alternative Assessment Method (LAAM). &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;Essentially, each architecture alternative is evaluated and ranked according different &lt;STRONG&gt;project specific attributes&lt;/STRONG&gt;, such as: performance, scalability, reliability, availability, usability and&amp;nbsp;functionality &lt;STRONG&gt;under constraints &lt;/STRONG&gt;such as technology, resources,&amp;nbsp;cost and schedule;&amp;nbsp;and against &lt;STRONG&gt;project business objectives&lt;/STRONG&gt;, such as: return on investment, time, budget and risk. This provides a structure and systematic methodology which should be documented for future reference.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx&amp;amp;;subject=What+is+Software+Architecture+and+what+is+the+role+of+the+Software+Architect%3f" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx&amp;amp;;title=What+is+Software+Architecture+and+what+is+the+role+of+the+Software+Architect%3f" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx&amp;amp;title=What+is+Software+Architecture+and+what+is+the+role+of+the+Software+Architect%3f" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx&amp;amp;;title=What+is+Software+Architecture+and+what+is+the+role+of+the+Software+Architect%3f" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx&amp;amp;;title=What+is+Software+Architecture+and+what+is+the+role+of+the+Software+Architect%3f&amp;amp;;top=1" target="_blank" title = "Post http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/2007/02/26/my-first-post.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.arquitecturadesoftware.org/aggbug.aspx?PostID=851" width="1" height="1"&gt;</description><category domain="http://www.arquitecturadesoftware.org/blogs/joaocortez/archive/tags/Software+Architecture/default.aspx">Software Architecture</category></item></channel></rss>