<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-35969180</id><updated>2011-11-27T17:24:01.887-06:00</updated><category term='product evaluation'/><category term='TopLink'/><category term='HP&apos;s Ecosystem'/><category term='politics'/><category term='capabilities'/><category term='architecture plan'/><category term='TCO'/><category term='architecture process'/><category term='open source'/><category term='Java'/><category term='SOA'/><category term='Enterprise Architecture'/><category term='technology evaluation'/><category term='outsourcing'/><category term='interface'/><category term='Service-Oriented Architecture'/><category term='software architecture'/><category term='iPod'/><category term='Framework'/><category term='innovation'/><category term='architecture deliverables'/><category term='iBatis'/><category term='architecture inputs'/><category term='maintainability'/><category term='Spring'/><category term='EA'/><category term='architecture'/><category term='innovation pyramid'/><title type='text'>Imagination is more important than knowledge</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-35969180.post-8036484329842669376</id><published>2008-04-20T14:19:00.001-06:00</published><updated>2008-04-24T14:26:43.896-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>The Appeal of Simplicity and the Java Franchise Model</title><content type='html'>Over the last few decades, the franchise business model has proliferated, and been very successful. Around 75% of franchisee-run operations still survive, after the first 5 years of doing business. One of the reasons for this success rate is that the franchise model tries to keep the day-to-day operations of running a business, as simple as possible. This helps to quickly train unskilled workforce, and to rapidly expand the business.&lt;br /&gt;&lt;br /&gt;Now, let's take a look at the Java franchise model. The initial appeal of Java was its relative simplicity, when compared to its first cousin, C++. In my view, this greatly reduced the barrier to entry into the field of Java programming. As Java caught on, droves of Java programmers came about. And a lot of them were not from the traditional Computer Science background. &lt;br /&gt;&lt;br /&gt;Then Enterprise Java arrived, with its component model. Along with that, came a wave of new JSRs, frameworks, toolkits, etc; each with their own set of APIs and methodologies. Pretty soon programming in Java was not as simple as it used to be. There was so much more that now needed to be learnt. To make matters worse, with each new wave, things became increasingly more complex. One could argue that people had now begun to use Java to solve really complex problems. And those complex problems required complex solutions. Nevertheless, things had changed.&lt;br /&gt;&lt;br /&gt;All of this makes me wonder about the future success of the Java franchise model. Now that it has lost its original appeal, the appeal of simplicity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-8036484329842669376?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/8036484329842669376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=8036484329842669376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/8036484329842669376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/8036484329842669376'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2008/04/appeal-of-simplicity-and-java-franchise.html' title='The Appeal of Simplicity and the Java Franchise Model'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-1902486222570207596</id><published>2007-10-24T13:07:00.000-06:00</published><updated>2007-10-24T13:24:24.660-06:00</updated><title type='text'>Embedded Databases</title><content type='html'>&lt;p style="font-family: verdana;"&gt;An embedded database is a software component that is generally a part of the application. The ones that I have looked at: &lt;/p&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; Have a small footprint, about 2 megabytes for the base engine and embedded JDBC driver.  &lt;/li&gt;&lt;li&gt; Based on Java, JDBC, and SQL standards. &lt;/li&gt;&lt;li&gt; Require zero or limited human administration &lt;/li&gt;&lt;/ul&gt; &lt;p style="font-family: verdana;"&gt;&lt;a target="_blank" href="http://www.dbazine.com/ofinterest/oi-articles/koopmann5" class="external text" title="http://www.dbazine.com/ofinterest/oi-articles/koopmann5" rel="nofollow"&gt;Click here&lt;/a&gt; to find out more about embedded databases.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3 style="font-family: verdana;"&gt;HSQLDB&lt;/h3&gt;HSQLDB support is available from HyperXtremeSQL, and is available under the BSD license. It is a pure Java database, has a small footprint, and comes bundled with third party products like OpenOffice, JBoss, RSA crypto libraries.&lt;br /&gt;&lt;br /&gt;&lt;h3 style="font-family: verdana;"&gt;Observations &lt;/h3&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;It has an 8Gb database limit, it does not support blobs greater than 4Kb, and does not support server side cursors. &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;Database Directory&lt;/b&gt; &lt;ul&gt;&lt;li&gt; Each HSQLDB database consists of between 2 to 5 files; all named the same but with different extensions, located in the same directory. For example, the database named "test" consists of test.properties, test.script, test.log, test.data, test.backup, test.lck. &lt;ul&gt;&lt;li&gt; The script file contains the definition of tables and other database objects, plus the data for non-cached tables. &lt;/li&gt;&lt;li&gt; The log file contains recent changes to the database. &lt;/li&gt;&lt;li&gt; The data file contains the data for cached tables. &lt;/li&gt;&lt;li&gt; The backup file is a zipped backup of the last known consistent state of the data file. &lt;/li&gt;&lt;li&gt; The lck file is also used to record the fact that the database is open. &lt;/li&gt;&lt;li&gt; The log and lck files are deleted at normal SHUTDOWN. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;Deployment Options&lt;/b&gt; &lt;ul&gt;&lt;li&gt; HSQLDB can be run in a number of different ways. In general these are divided into Server Modes and In-Process Mode (also called Standalone Mode). &lt;/li&gt;&lt;li&gt; In-Process Mode &lt;ul&gt;&lt;li&gt; Faster as the data is not converted and sent over the network. &lt;/li&gt;&lt;li&gt; More secure as it is not possible by default to connect to the database from outside your application. As a result you cannot check the contents of the database with external tools such as Database Manager while your application is running. &lt;/li&gt;&lt;li&gt; In 1.8.0, you can run a server instance in a thread from the same virtual machine as your application and provide external access to your in-process database. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;In-Memory Only Database&lt;/b&gt; &lt;ul&gt;&lt;li&gt; It is possible to run HSQLDB in a way that the database is not persistent and exists entirely in random access memory. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;Shutdown&lt;/b&gt; &lt;ul&gt;&lt;li&gt; In 1.8.0, a connection property, shutdown=true, can be specified on the first connection to the database (the connection that opens the database) to force a shutdown when the last connection closes. &lt;/li&gt;&lt;li&gt; When SHUTDOWN is issued, all active transactions are rolled back. &lt;/li&gt;&lt;li&gt; A special form of closing the database is via the SHUTDOWN COMPACT command. This command rewrites the .data file that contains the information stored in CACHED tables and compacts it to size &lt;/li&gt;&lt;li&gt; The SHUTDOWN should also be executed when accessing the database using the HSQL Database Manager tool. &lt;/li&gt;&lt;li&gt; If the DB is not shutdown properly, SHUTDOWN via JDBC, the occasionally HSQLDB all data changes (updates, inserts, deletes) made during the session. This is despite the fact that the: &lt;ul&gt;&lt;li&gt; Database is not configured as “In-Memory” type &lt;/li&gt;&lt;li&gt; Database is configured to frequently flush data to disk &lt;/li&gt;&lt;li&gt; JDBC transactions were executed in an “Auto-Commit” mode &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt; If the DB is not shutdown properly, SHUTDOWN via JDBC, the physical lock files have to be manually deleted. Otherwise, upon JVM restart, HSQLDB complains that the database files are locked by another process. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;Boot Database&lt;/b&gt; &lt;ul&gt;&lt;li&gt; When a server instance is started, or when a connection is made to an in-process database, a new, empty database is created if no database exists at the given path. This feature has a side effect that can confuse new users. If a mistake is made in specifying the path for connecting to an existing database, a connection is nevertheless established to a new database. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;SQL Standard&lt;/b&gt; &lt;ul&gt;&lt;li&gt; The SQL dialect used in HSQLDB is as close to the SQL92 and SQL200n standards as it has been possible to achieve so far in a small-footprint database engine. Not all the features of the Standard are supported and there are some proprietary extensions. In 1.8.0 the behavior of the engine is far more compliant with the Standards than with older versions. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;Types of Tables&lt;/b&gt; &lt;ul&gt;&lt;li&gt; Memory tables are the default type when the CREATE TABLE command is used. Their data is held entirely in memory but any change to their structure or contents is written to the &lt;dbname&gt;.script file. The script file is read the next time the database is opened, and the MEMORY tables are recreated with all their contents. &lt;/dbname&gt;&lt;/li&gt;&lt;li&gt; CACHED tables are created with the CREATE CACHED TABLE command. Only part of their data or indexes is held in memory, allowing large tables that would otherwise take up to several hundred megabytes of memory. Another advantage of cached tables is that the database engine takes less time to start up when a cached table is used for large amounts of data. The disadvantage of cached tables is a reduction in speed. &lt;/li&gt;&lt;li&gt; It lets you use CSV files directly as Database tables, which is very handy for testing. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;Write Delay&lt;/b&gt; &lt;ul&gt;&lt;li&gt; The purpose of this command is to control the amount of data loss in case of a total system crash. &lt;/li&gt;&lt;li&gt; This property can only be set (permanently) by executing the SET WRITE_DELAY SQL command, using the Database Manager Tool.  &lt;/li&gt;&lt;li&gt; The default is TRUE and indicates that the changes to the database that have been logged are synched to the file system once every 20 seconds. FALSE indicates there is no delay and at each commit a file synch operation is performed. This will slow the engine down to the speed at which the file synch operation can be performed by the disk subsystem. &lt;/li&gt;&lt;li&gt; Values down to 10 milliseconds can be specified by adding MILLIS to the command, but in practice a delay of 100 milliseconds provides 99.99999% reliability with an average one system crash per 6 days. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3 style="font-family: verdana;"&gt; Additional Documentation&lt;/h3&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;a target="_blank" href="http://hsqldb.org/web/hsqlDocsFrame.html" class="external text" title="http://hsqldb.org/web/hsqlDocsFrame.html" rel="nofollow"&gt;All documentation&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a target="_blank" href="http://hsqldb.org/doc/guide/ch09.html#datatypes-section" class="external text" title="http://hsqldb.org/doc/guide/ch09.html#datatypes-section" rel="nofollow"&gt;Data types&lt;/a&gt;  &lt;/li&gt;&lt;li&gt; &lt;a target="_blank" href="http://hsqldb.org/doc/guide/ch09.html#stored-section" class="external text" title="http://hsqldb.org/doc/guide/ch09.html#stored-section" rel="nofollow"&gt;Stored procedures and functions&lt;/a&gt;  &lt;/li&gt;&lt;li&gt; &lt;a target="_blank" href="http://hsqldb.org/doc/guide/ch09.html" class="external text" title="http://hsqldb.org/doc/guide/ch09.html" rel="nofollow"&gt;SQL Syntax&lt;/a&gt;  &lt;/li&gt;&lt;li&gt; &lt;a target="_blank" href="http://hsqldb.org/doc/guide/apf.html" class="external text" title="http://hsqldb.org/doc/guide/apf.html" rel="nofollow"&gt;Management&lt;/a&gt;  &lt;ul&gt;&lt;li&gt; HSQL Database Manager Tool s a simple GUI database query tool with a tree display of the tables. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr style="font-family: verdana;"&gt;&lt;br /&gt;&lt;h3 style="font-family: verdana;"&gt;Derby &lt;/h3&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;It was first released as Cloudscape in 1997.  &lt;/li&gt;&lt;/ul&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt; Derby and JavaDB are offshoots. Support for Apache Derby is available as Cloudscape from IBM and JavaDB from Sun &lt;/li&gt;&lt;li&gt; Derby is under the Apache license &lt;/li&gt;&lt;li&gt; Derby has a small footprint -- about 2 megabytes for the base engine and embedded JDBC driver. &lt;/li&gt;&lt;li&gt; Derby is based on the Java, JDBC, and SQL standards. &lt;/li&gt;&lt;li&gt; Derby provides an embedded JDBC driver that lets you embed Derby in any Java-based solution. In the default configuration there is no separate database server to be installed or maintained by the end user. &lt;/li&gt;&lt;li&gt; Apache Derby is a big community of developers that includes people from Sun and IBM, which makes it backed by 2 major companies that are already major open source contributors &lt;/li&gt;&lt;li&gt; The user and developers mailing lists are very active ones and you can get good assistance from these too &lt;/li&gt;&lt;li&gt; Supports server side cursors &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3 style="font-family: verdana;"&gt;Observations &lt;/h3&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;Derby has some reserved tables that complain if you name your tables the same. Like USER. Hypersonic doesn't have this problem. &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;Deployment Options&lt;/b&gt;: Derby software distribution provides two basic deployment options &lt;ul&gt;&lt;li&gt; &lt;i&gt;Embedded&lt;/i&gt;: Refers to Derby being started by a simple single-user Java application. With this option Derby runs in the same Java virtual machine (JVM) as the application. Derby can be almost invisible to the end user because it is started and stopped by the application and often requires no administration. &lt;/li&gt;&lt;li&gt; &lt;i&gt;Server (or Server-based)&lt;/i&gt;: Refers to Derby being started by an application that provides multi-user connectivity to Derby databases across a network. With this option Derby runs in the Java virtual machine (JVM) that hosts the Server. Applications connect to the Server from different JVMs to access the database. The Derby Network Server is part of the Derby software distribution and provides this type of framework for Derby. Derby also works well with other, independently developed Server applications. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;Database Shutdown&lt;/b&gt; &lt;ul&gt;&lt;li&gt; If an application starts the Derby engine, the application should shut down all databases before exiting. The attribute “;shutdown=true” in the Derby connection URL performs the shutdown. When the Derby engine is shutdown, all booted databases will automatically shut down. The shutdown process cleans up records in the transaction log to ensure a faster startup the next time the database is booted. You can shut down individual databases without shutting down the engine by including the database name in the connection URL. &lt;b&gt;NOTE:&lt;/b&gt; A successful shutdown always results in an SQLException to indicate that Derby has shut down and that there is no other exception. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;Boot Database&lt;/b&gt; &lt;ul&gt;&lt;li&gt; The DriverManager class loads the database using the Derby connection URL stored in the variable connectionURL. This URL includes the parameter “;create=true” so that the database will be created if it does not already exist. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;Database Directory&lt;/b&gt;: A Derby database is stored in files that live in a directory of the same name as the database. A database directory contains &lt;ul&gt;&lt;li&gt; &lt;i&gt;log directory&lt;/i&gt;: Contains files that make up the database transaction log, used internally for data recovery (not the same thing as the error log) &lt;/li&gt;&lt;li&gt; &lt;i&gt;seg0 directory&lt;/i&gt;: Contains one file for each user table, system table, and index (known as conglomerates). &lt;/li&gt;&lt;li&gt; &lt;i&gt;service.properties file&lt;/i&gt;: A text file with internal configuration information. &lt;/li&gt;&lt;li&gt; &lt;i&gt;tmp directory&lt;/i&gt;: (might not exist.) A temporary directory used by Derby for large sorts and deferred updates and deletes. Sorts are used by a variety of SQL statements. For databases on read-only media, you might need to set a property to change the location of this directory. See "Creating Derby Databases for Read-Only Use". &lt;/li&gt;&lt;li&gt; &lt;i&gt;jar directory&lt;/i&gt;: (might not exist.) A directory in which jar files are stored when you use database class loading. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;b&gt;Management&lt;/b&gt;: Included with the product are some standalone Java tools and utilities that make it easier to use and develop applications for Derby. There are no GUI management tools. &lt;ul&gt;&lt;li&gt; &lt;i&gt;ij&lt;/i&gt;: ij is Derby's interactive JDBC scripting tool. It is a simple utility for running scripts against a Derby database. You can also use it interactively to run ad hoc queries. ij provides several commands for ease in accessing a variety of JDBC features. ij can be used in an embedded or a client/server environment. &lt;/li&gt;&lt;li&gt; &lt;i&gt;The import and export utilities&lt;/i&gt;: These server-side utilities allow you to import data directly from files into tables and to export data from tables into files. Server-side utilities can be in a client/server environment but require that all files referenced be on the Server machine. &lt;/li&gt;&lt;li&gt; &lt;i&gt;Database class loading utilities&lt;/i&gt;: These utilities allow you to store application logic in a database. &lt;/li&gt;&lt;li&gt; &lt;i&gt;Sysinfo&lt;/i&gt;: sysinfo provides information about your version of Derby and your environment. &lt;/li&gt;&lt;li&gt; &lt;i&gt;dblook&lt;/i&gt;: dblook is Derby's Data Definition Language (DDL) Generation Utility, also called a schema dump tool. It is a simple utility for the dumping the DDL of a user-specified database to either a console or to a file. The generated DDL can then be used for such things as recreating all or parts of a database, viewing a subset of a database's objects (for example, those which pertain to specific tables and schemas), or documenting a database's schema. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;&lt;h3 style="font-family: verdana;"&gt; Additional Documentation&lt;/h3&gt; &lt;ul style="font-family: verdana;"&gt;&lt;li&gt; &lt;a target="_blank" href="http://db.apache.org/derby/manuals/index.html" class="external text" title="http://db.apache.org/derby/manuals/index.html" rel="nofollow"&gt;All documentation&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a target="_blank" href="http://db.apache.org/derby/docs/dev/ref/crefsqlj31068.html" class="external text" title="http://db.apache.org/derby/docs/dev/ref/crefsqlj31068.html" rel="nofollow"&gt;Data types&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a target="_blank" href="http://db.apache.org/derby/docs/dev/ref/" class="external text" title="http://db.apache.org/derby/docs/dev/ref/" rel="nofollow"&gt;Stored procedures and functions&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a target="_blank" href="http://db.apache.org/derby/docs/dev/ref/rrefexcept71493.html" class="external text" title="http://db.apache.org/derby/docs/dev/ref/rrefexcept71493.html" rel="nofollow"&gt;SQL error messages and exceptions&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a target="_blank" href="http://db.apache.org/derby/docs/dev/" class="external text" title="http://db.apache.org/derby/docs/dev/" rel="nofollow"&gt;SQL syntax&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr style="font-family: verdana;"&gt;&lt;br /&gt;&lt;h3 style="font-family: verdana;"&gt;Conclusion &lt;/h3&gt;&lt;p style="font-family: verdana;"&gt;The two products are fairly comparable it terms of their feature sets. The tooling support is again quite similar, though HSQLDB provides a GUI based management tool. Both products have their own quirks, which requires some getting used to. In my opinion either of these products will work well for a typical single-user, Swing based desktop application. &lt;/p&gt;&lt;p style="font-family: verdana;"&gt;Apache Derby has a big community of developers that includes people from Sun and IBM, which makes it backed by 2 major companies that are already major open source contributors. Sun has adopted Apache Derby as its 100% Java DB, and included it in the Java SE 6 (Mustang) JDK. Sun is also using Java DB for some of its own products and other open source projects that it is heavily involved in. Customers can now purchase Sun Software Service Plans for Java DB including two levels of support — Premium (around-the-clock) and Standard (extended business hours). &lt;/p&gt;&lt;p style="font-family: verdana;"&gt;So, if support, paid or community-based, is a big concern then Apache Derby definitely stands out. &lt;/p&gt;&lt;br /&gt;&lt;p style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-1902486222570207596?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/1902486222570207596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=1902486222570207596' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/1902486222570207596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/1902486222570207596'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/10/embedded-databases.html' title='Embedded Databases'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-7644913971394762375</id><published>2007-10-07T11:59:00.000-06:00</published><updated>2007-10-10T12:05:40.854-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Integration Technologies in Practice</title><content type='html'>The following is based on what I have seen and experienced.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Point-to-Point using Sockets&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Generally seen with legacy systems that have been in existence for a while.&lt;/li&gt;&lt;li&gt;Typically these communicate over an ASCII text based protocol&lt;/li&gt;&lt;li&gt;Over time you end up with a plethora of such brittle point-to-point interfaces, which are tricky to manage and to modify. (&lt;span style="font-style: italic;"&gt;Integration Spaghetti&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;There also exist variations of interfaces that are quite similar in nature and in intent.&lt;/li&gt;&lt;li&gt;Each interface builds it own failure recovery mechanism&lt;/li&gt;&lt;li&gt;Some of these interfaces are synchronous in design but are functionally asynchronous.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RMI or RMI/IIOP&lt;br /&gt;&lt;/span&gt; &lt;ul&gt;&lt;li&gt;Suitable when both the Service Provider and the Consumers are implemented in Java&lt;/li&gt;&lt;li&gt;RMI being a binary protocol makes it easier to transport large amounts of data&lt;/li&gt;&lt;li&gt;I wouldn't use it for large-scale deployments, as it gets tricky to manage resources like RMI Service Threads&lt;/li&gt;&lt;li&gt;It requires a registry, to access a service reference. There is another way of accessing RMI service, without using a registry, by using reference objects. In my view, going through the registry is the easier route&lt;/li&gt;&lt;li&gt;Firewall issues around ports being enabled. RMI over HTTP attempts to work around that issue&lt;/li&gt;&lt;li&gt;RMI activation framework helps increase availability of RMI Services, and helps better manage resources on the server&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Object Serialization over HTTP&lt;br /&gt;&lt;/span&gt; &lt;ul&gt;&lt;li&gt;Service providers and consumers interact by serializing binary objects over HTTP.&lt;/li&gt;&lt;li&gt;Leverages the scalability and availability of standard HTTP servers like Apache.&lt;/li&gt;&lt;li&gt;Leverages the ubiquity and firewall-friendly nature of the HTTP protocol&lt;/li&gt;&lt;li&gt;Suitable when both the Service Provider and the Consumers are implemented in Java&lt;/li&gt;&lt;li&gt;Being a binary protocol makes it easier to transport large amounts of data&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Integration using MOM&lt;br /&gt;&lt;/span&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Publish/Subscribe&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div style="margin-left: 40px;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/div&gt; &lt;ul&gt;&lt;ul&gt;&lt;li&gt;Pub/Sub is a highly advertised feature of MOMs.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt;In my view, this model fits in a world where the subscribers are highly dynamic.&lt;/li&gt;&lt;li&gt;If you have a high number of subscribers, pay careful attention to how messages a published over the network. Multicast reduces the latency in publishing, and has a lower network impact.&lt;/li&gt;&lt;/ul&gt;&lt;li style="font-weight: bold;"&gt;Point-to-Point&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Things to watch out for are: Queue Depth, Sequence of Messages, Message Correlation, Duration in Queue and Message Expiration.&lt;/li&gt;&lt;li&gt;Pro-active monitoring and management of the dead-letter queue.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Web Services&lt;br /&gt;&lt;/span&gt; &lt;ul&gt;&lt;li&gt;These are typically accessed over HTTP, which is a synchronous protocol. This introduces &lt;span style="font-style: italic;"&gt;Availability Coupling&lt;/span&gt; between the Service Provider and the Consumers.&lt;br /&gt; &lt;/li&gt;&lt;li&gt;The better way to communicate is by exchanging documents.&lt;/li&gt;&lt;li&gt;Stick to industry standard XML schemas&lt;/li&gt;&lt;li&gt;Authentication and Authorization is a tricky problem to solve&lt;/li&gt;&lt;li&gt;There is some value in attempting to solve the Service Versioning issue, by following the same approach as that for Component Versioning&lt;/li&gt;&lt;li&gt;The plethora of WS standards reminds me what happened with CORBA. In the end, only a handful of standards remained standing, and the vendors ended up implementing only those standards.&lt;/li&gt;&lt;li&gt;Then you have the whole set of arguments around REST vs. Web Services.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Enterprise Service Bus (ESB)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is an attempt to emulate (conceptually) within the middleware world, what the computer hardware vendors ended up doing, to solve their integration issues.&lt;/li&gt;&lt;li&gt;The typical value-add of such products are: Protocol Transformation, Process Orchestration/Choreography, Monitoring &amp;amp; Management, Service Versioning, SLA management, etc&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-7644913971394762375?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/7644913971394762375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=7644913971394762375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/7644913971394762375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/7644913971394762375'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/10/integration-technologies-in-practice.html' title='Integration Technologies in Practice'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-286018407270769615</id><published>2007-06-03T10:34:00.000-06:00</published><updated>2007-06-05T11:44:30.038-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>Calculating the Value Added by a Good Development Framework</title><content type='html'>In one of my previous &lt;a href="http://on-architecture.blogspot.com/2006/11/on-frameworks-and-data-mapping-tools.html"&gt;blogs&lt;/a&gt;, I had expressed my opinion on frameworks and data mapping tools. I had highlighted some of the benefits of using them, which are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Allow for cleaner separation of layers&lt;/li&gt;&lt;li&gt;Automatically apply certain well established design patterns&lt;/li&gt;&lt;li&gt;Externally configurable&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Structured to support plug-and-play of components&lt;/li&gt;&lt;/ul&gt;For some time now, I have been thinking about ways to calculate the value added by good development frameworks like Spring, Struts, etc. The way I look at it, every framework comes with its associated costs and benefits. Seeking out value is just a matter of being able to quantify these costs and benefits. Now that can be a challenge in itself.&lt;br /&gt;&lt;br /&gt;From what I have seen, frameworks come with the following types of costs and benefits.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Costs&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Costs associated with the learning curve. These can be recurring as more resources are ramped onto a project or as resources are periodically cycled through maintaining a product&lt;/li&gt;&lt;li&gt;Costs associated with conflicting life-cycles of the product being developed and the development framework. These involve either upgrading the framework to its newer version or replacing it with another framework&lt;/li&gt;&lt;/ol&gt; &lt;span style="font-size:130%;"&gt;Benefits&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Savings on account of increased productivity&lt;/li&gt;&lt;li&gt;Savings on account of decreased number of bugs. There is a direct correlation between the number of lines of code written and the number of associated bugs&lt;/li&gt;&lt;li&gt;Savings on account of increased product life, mainly attributed to slower degradation of the core product architecture over time&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Savings on account of quicker time to market&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-286018407270769615?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/286018407270769615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=286018407270769615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/286018407270769615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/286018407270769615'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/06/calculating-value-added-by-good.html' title='Calculating the Value Added by a Good Development Framework'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-124271410630017260</id><published>2007-05-28T07:48:00.000-06:00</published><updated>2007-05-24T08:52:21.040-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maintainability'/><category scheme='http://www.blogger.com/atom/ns#' term='product evaluation'/><category scheme='http://www.blogger.com/atom/ns#' term='TCO'/><category scheme='http://www.blogger.com/atom/ns#' term='software architecture'/><title type='text'>The Long-Tail Effect</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_549AekO6xKE/RlWiOnKD4HI/AAAAAAAAABQ/HfBBXjo_GpQ/s1600-h/Long+Tail+Effect.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_549AekO6xKE/RlWiOnKD4HI/AAAAAAAAABQ/HfBBXjo_GpQ/s400/Long+Tail+Effect.png" alt="" id="BLOGGER_PHOTO_ID_5068135327588409458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You can always tell the cohesiveness of the architectural vision of a product, by analyzing its architecture. From what I have seen, a lot of products suffer from what I describe as the &lt;span style="font-style: italic;"&gt;Long-Tail Effect&lt;/span&gt;. And the longer the product has been out in the market, the longer the length of this tail.&lt;br /&gt;&lt;br /&gt;The long-tail is a graphical depiction of how deeply steeped a product is in its legacy past. In my view, this can be primarily attributed to a lack of a cohesive vision over time.&lt;br /&gt;&lt;br /&gt;It is important to understand this aspect of product evaluation, especially if you are considering hanging on to your acquisition for a long period of time. You have to find the right balance between product maturity and its architectural cohesiveness. In my view, the long-tail ends up negatively skewing the Total Cost of Ownership (TCO). The more steeped a product in its past, i.e., the longer the tail, the more the effort that is required to maintain the product over time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-124271410630017260?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/124271410630017260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=124271410630017260' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/124271410630017260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/124271410630017260'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/05/long-tail-effect.html' title='The Long-Tail Effect'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_549AekO6xKE/RlWiOnKD4HI/AAAAAAAAABQ/HfBBXjo_GpQ/s72-c/Long+Tail+Effect.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-5457874387535614766</id><published>2007-05-27T07:20:00.000-06:00</published><updated>2007-05-24T08:43:50.521-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Architecture'/><title type='text'>Aligning Architecture with Business Strategy</title><content type='html'>Over time, I have come to realize that architecture is not purely Information Technology (IT) functionality, in the traditional sense of viewing IT. It is strategic in intent; hence it needs to draw directly from business strategy. The other thing that I have realized is that architecture ends up lasting longer than business strategy. The fact that decades old legacy systems like Mainframe/COBOL, etc are still deeply entrenched within organizations supports that claim.&lt;br /&gt;&lt;br /&gt;Business strategy, on the other hand, continually evolves over time, in response to the changing competitive landscape. If architectural efforts are not properly tuned with the business strategy, architecture ends up constraining instead of enabling the achievement of business strategy. Once again, taking the example of Mainframe/COBOL, such systems are geared towards batch processing of information. Going forward, if the organization wants to start monitoring its activities in real to near-real time, it will be constrained by the capabilities of its existing Mainframe/COBOL systems.&lt;br /&gt;&lt;br /&gt;My understanding is that the following should occur, to ensure the proper alignment of architectural efforts with business strategy.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Architects should participate in the business strategy process&lt;/li&gt;&lt;li&gt;Architects should have their interpretation of business strategy, validated by business strategists&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Architects should focus on tackling only those challenges that directly affect the implementation of the business strategy&lt;/li&gt;&lt;li&gt;Architects should continually assess the relevance of their initiatives against the business strategy&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-5457874387535614766?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/5457874387535614766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=5457874387535614766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/5457874387535614766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/5457874387535614766'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/05/aligning-architecture-with-business.html' title='Aligning Architecture with Business Strategy'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-420766524378323159</id><published>2007-05-19T09:15:00.000-06:00</published><updated>2007-05-22T09:56:42.541-06:00</updated><title type='text'>Frank Gehry - Pritzker Prize Winning Architect</title><content type='html'>Software Architecture is a relatively new field when compared to Building Architecture. Needless to say, software architects frequently look at the field of Building Architecture, to seek inspiration and to draw analogies. One of the notable building architects that I have been impressed with is &lt;a href="http://en.wikipedia.org/wiki/Frank_Gehry"&gt;Frank Gehry&lt;/a&gt;. It is funny the way that I first became aware of him. I was watching &lt;font style="font-style: italic;"&gt;Arthur&lt;/font&gt;, a show on public television, with my son. There is this episode where Frank Gehry helps Arthur and his friends design a new tree house. Their tree house gets destroyed, and Arthur and his friends start debating over what to do. They run into Frank Gehry at the local ice cream shop, who then asks each one of them to come up with the new design ideas for their new tree house. The kids go about doing that and then present their design ideas to Frank. Some of the ideas are quite out there, which get ridiculed by the group. This is where Frank makes a statement that really stuck to me. He says, "Who says that a building has to look like a box?".&lt;br /&gt;&lt;br /&gt;If you look at some of his work, like the &lt;a href="http://en.wikipedia.org/wiki/Pritzker_Pavilion"&gt;Pritzker pavilion&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Image:Prag_ginger_u_fred_gehry.jpg"&gt;Dancing house in Prague&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Guggenheim_Museum_Bilbao"&gt;Guggenheim Museum&lt;/a&gt;&lt;font style="font-weight: bold;"&gt;, &lt;/font&gt;&lt;a href="http://www.guggenheim.org/exhibitions/past_exhibitions/gehry/chiatday_07.html"&gt;Chiat/Day Building&lt;/a&gt;, you would really understand what he means by that statement. His work makes you drop all preconceived notions of what a building should look like. I think that this is equally relevant in the area of software architecture. On top of that Frank has a reputation of completing his projects on time and in budget. This can be attributed to his approach that states:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Prevent political and business interests from interfering with design, to arrive at an outcome that is as close as possible to the original design&lt;/li&gt;&lt;li&gt;Get a detailed and realistic cost estimate before proceeding&lt;/li&gt;&lt;li&gt;Maintain close relationship with the implementers&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-420766524378323159?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/420766524378323159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=420766524378323159' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/420766524378323159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/420766524378323159'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/05/frank-gehry-pritzker-prize-winning.html' title='Frank Gehry - Pritzker Prize Winning Architect'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-2906870250604902407</id><published>2007-05-19T08:37:00.000-06:00</published><updated>2007-05-22T09:12:00.559-06:00</updated><title type='text'>What is Enterprise Architecture?</title><content type='html'>The last few years, I have been predominantly working on large scale projects. These projects have a high impact either on account of their scope (enterprise wide) or on account of their cost. Previously, the area of Enterprise Architecture (EA) had been somewhat of a mystery to me. Even though I was dealing with some of the aspects that were related to EA, I wasn't clear on what it really meant. On top of that, there was that ongoing debate on &lt;a href="http://on-architecture.blogspot.com/2007/03/can-service-oriented-architecture-fit.html"&gt;SOA vs EA&lt;/a&gt;, which still continues. So, I started looking at the various frameworks like &lt;a href="http://www.zifa.com/"&gt;Zachman&lt;/a&gt; and &lt;a href="http://www.opengroup.org/togaf/"&gt;TOGAF&lt;/a&gt;, which definitely helped put things into perspective.&lt;br /&gt;&lt;br /&gt;In that same spirit of inquisitiveness, last week (May 15-18, 2007), I attended the &lt;a href="http://bredemeyer.com/EnterpriseArchitecture/Enterprise_Architecture_Workshop.htm"&gt;Enterprise Architecture Workshop&lt;/a&gt; by Bredemeyer Consulting. My biggest takeaways from that experience were:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Enterprise Architecture is nothing else but &lt;a href="http://bredemeyer.com/pdf_files/Presentations/SoftwareArchitectureIntro.PDF"&gt;Architecture&lt;/a&gt; done at the enterprise level.&lt;/li&gt;&lt;li&gt;There will always be challenges around you. Focus on tackling only those challenges that directly affect the implementation of the business strategy.&lt;/li&gt;&lt;li&gt;There is no such thing as too low a level. If delving to the lowest level of detail is important for the success of your initiative; Do it.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-2906870250604902407?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/2906870250604902407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=2906870250604902407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/2906870250604902407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/2906870250604902407'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/05/what-is-enterprise-architecture.html' title='What is Enterprise Architecture?'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-532801578995201346</id><published>2007-05-05T09:22:00.000-06:00</published><updated>2007-05-09T14:00:12.576-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outsourcing'/><category scheme='http://www.blogger.com/atom/ns#' term='capabilities'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Role of Architecture in these times of Outsourcing</title><content type='html'>Outsourcing in the IT world is a reality. Given that the IT department has always been viewed as a cost center, more and more companies are looking at outsourcing, to contain and to better manage IT costs.&lt;br /&gt;&lt;br /&gt;In my view, Architecture is a strategic capability. There is tremendous risk in outsourcing this capability. Outsourcing a strategic capability will deplete the associated knowledge within an organization. It will impact an organization's ability to leverage its strategic capabilities to quickly react to new opportunities. If the Architecture capability does not exist within an organization or if it is not mature, work with the vendor(s) to develop this capability.&lt;br /&gt;&lt;br /&gt;Also, outsourcing contracts are never open-ended. They are for a specific duration. If SLAs are not met, organizations have the option to not renew the contracts. Given that, it only makes sense to retain strategic capabilities and to leverage them in contract negotiations.&lt;br /&gt;&lt;br /&gt;The following paragraph is from an &lt;a href="http://www.research.ibm.com/journal/sj/431/ross.html"&gt;article&lt;/a&gt; by IBM that talks about the benefits and the risks associated with outsourcing.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.research.ibm.com/journal/sj/431/ross.html"&gt;&lt;/a&gt;"&lt;span style="font-family:lucida grande;"&gt;The IT experts brought technology standardization and disciplined project methodologies to their clients. Indeed, all the firms valued learning from their vendors about standard technology components and project methodology. But they also noted that, while vendors were learning about their business, vendors could never know their business as well as their own people. Thus, the firms needed to retain—or develop—a competency in applying technology to meet strategic goals.&lt;/span&gt;"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-532801578995201346?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/532801578995201346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=532801578995201346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/532801578995201346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/532801578995201346'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/01/role-of-architecture-in-these-times-of.html' title='Role of Architecture in these times of Outsourcing'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-4347304338222665089</id><published>2007-03-11T11:06:00.000-06:00</published><updated>2007-03-12T11:51:16.278-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service-Oriented Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Architecture'/><title type='text'>Can Service-Oriented Architecture fit together with Enterprise Architecture?</title><content type='html'>In one of my &lt;a href="http://on-architecture.blogspot.com/2006/11/enterprise-architecture-and-soa.html"&gt;previous blogs&lt;/a&gt;, I had put together my thoughts on the inter-relatedness between Enterprise Architecture (EA) and Service-Oriented Architecture (SOA). I posted a similar question on LinkedIn, and I was surprised by the number of responses that I received. One of the responses was from &lt;a href="http://duckdown.blogspot.com/"&gt;James McGovern&lt;/a&gt;. Anyway, the question was, "&lt;span name="itembody" class="text"&gt; Can service-oriented architecture fit together with enterprise architecture?".&lt;br /&gt;&lt;br /&gt;From the answers that I received, there seemed to be a general sense of optimism on this topic of inter-relatedness between SOA and EA. Generally everybody seemed to agree that SOA and EA could fit together though they had different approaches to actually go about doing it. What was noteworthy was the variety of definitions of SOA. SOA was defined as:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;An architectural style which can be used within an Enterprise Architecture to organize business or technology components.&lt;/li&gt;&lt;li&gt;An instance of an enterprise architecture&lt;/li&gt;&lt;li&gt;SOA brings a paradigm shift in looking at the Enterprise Architecture.&lt;/li&gt;&lt;li&gt;SOA being used as a band-aid to bring together older systems...Some folks seem to be so focused on building for SOA that they surpass solutions that may have been better/easier/less costly.&lt;/li&gt;&lt;li&gt;                  SOA is a concept / pattern that can be used for the integration of dissimilar systems within an enterprise.&lt;/li&gt;&lt;/ul&gt;Even though it wasn't explicitly stated in the answers but there seemed to be common understanding of the definition of EA. That does make sense as EA has been around for quite some time now. The best diagram that I have seen so far, on this topic of inter-relatedness, is in one of the presentations by &lt;a href="http://www.kenorrinst.com/"&gt;Ken Orr&lt;/a&gt;. It is the slide titled "&lt;a href="http://www.soainstitute.org/uploads/media/Orr_SOA_11_3.pdf"&gt;The Merging of Concerns&lt;/a&gt;" (page 8).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-4347304338222665089?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/4347304338222665089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=4347304338222665089' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/4347304338222665089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/4347304338222665089'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/03/can-service-oriented-architecture-fit.html' title='Can Service-Oriented Architecture fit together with Enterprise Architecture?'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-7970012817908897543</id><published>2007-01-07T09:29:00.000-06:00</published><updated>2007-01-05T15:57:40.277-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture deliverables'/><title type='text'>Typical Architectural Deliverables</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Key architectural decisions document that captures the key decisions that were made, and the other alternatives that were considered. To download a template &lt;a href="http://bredemeyer.com/pdf_files/WhitePapers/Key%20Decisions%20Template.doc"&gt;click here&lt;/a&gt; or go to http://bredemeyer.com/papers.htm and look for "Key Architecture Decisions Template".&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Architecture document that captures the following:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Architecture strategy as defined by the key principles, concepts, style, etc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Conceptual architecture; modeling the areas that are architecturally significant. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Architecture risk analysis&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Logical architecture of the architecturally significant areas, focusing on interface definition, and relationships amongst the entities. This also establishes the various layers and tiers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Define the various domain objects entering into and flowing through and out of the system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Analysis of the non-functional requirements, to derive the key characteristics of the run-time environment.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Run-time view of the system&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-7970012817908897543?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/7970012817908897543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=7970012817908897543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/7970012817908897543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/7970012817908897543'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/01/typical-architectural-deliverables.html' title='Typical Architectural Deliverables'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-4508657482130827845</id><published>2007-01-07T09:27:00.000-06:00</published><updated>2007-01-05T15:45:45.961-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture plan'/><title type='text'>What it take to manifest an Architecture Plan</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;Buy in from top management.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;A good understanding of the history, the current context, and the future direction of the solution space.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;A good understanding of the existing business processes, and the willingness to change these processes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;A good understanding of the existing technical architecture.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;A clearly defined architecture strategy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;A collaborative environment, where the team members are empowered to contribute. This not only helps in maturing the architecture but also helps in getting the implementers on-board with the architecture strategy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;A clearly defined architecture change management process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-4508657482130827845?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/4508657482130827845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=4508657482130827845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/4508657482130827845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/4508657482130827845'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/01/what-it-take-to-manifest-architecture.html' title='What it take to manifest an Architecture Plan'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-5639891457675298990</id><published>2007-01-06T09:30:00.000-06:00</published><updated>2007-01-05T15:49:04.882-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture inputs'/><title type='text'>Inputs to consider when designing an architecture</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;The history, the current context, and the future direction of the solution space.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;A good understanding of the existing business capabilities of the organization in terms of people, processes, and technology. Along with that, a good understanding of the organization’s willingness, and its ability to accept change.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;Results of the various proofs of concepts.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;Inputs from different subject matter experts.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;A good enough understanding of the business requirements and a thorough understanding of the various non-functional requirements. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Verdana;"&gt;Industry trends and standards.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-5639891457675298990?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/5639891457675298990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=5639891457675298990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/5639891457675298990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/5639891457675298990'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/01/inputs-to-consider-when-designing.html' title='Inputs to consider when designing an architecture'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-3241768115036674510</id><published>2007-01-06T09:28:00.000-06:00</published><updated>2007-05-30T09:52:00.763-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology evaluation'/><title type='text'>Aspects to consider when performing a technology evaluation</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;The goodness of the fit of the product within the existing business capabilities (people, processes, and technology) of the organization&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Evaluate the product against the expected or agreed upon non-functional requirements like availability, scalability, extensibility, robustness, etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;The support structure provided by the vendor's organization.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;The degree to which the product is compliant with open industry standards.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Popularity of the development platform&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Hardware and software platform flexibility&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Complexity on account of dependency of the product on other 3rd party products, and the associated licensing costs.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;&lt;a href="http://on-architecture.blogspot.com/2007/05/long-tail-effect.html"&gt;The long-tail effect&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-3241768115036674510?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/3241768115036674510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=3241768115036674510' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/3241768115036674510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/3241768115036674510'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/01/aspects-to-consider-when-performing.html' title='Aspects to consider when performing a technology evaluation'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-3796110314521147120</id><published>2007-01-06T09:25:00.000-06:00</published><updated>2007-01-05T15:53:17.172-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture process'/><title type='text'>The Architecture Process</title><content type='html'>&lt;p class="MsoPlainText" style="text-align: justify;"&gt;&lt;span style="font-family:Verdana;"&gt;Here are the steps that I take, that help me define the architecture for any solution. Previously, I had attended a &lt;a href="http://bredemeyer.com/architecture_workshop_overview.htm"&gt;Software Architecture Workshop&lt;/a&gt; by Bredemeyer consulting, which helped me validate my ideas and helped me better structure the process.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Understand the history, the current context, and the future direction of the solution space. This helps me better understand the motivation behind why a solution is required.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Understand the available set of requirements and validate them against the ideas gathered in step 1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Once I have a good understanding of steps 1&amp;amp;2, I establish the architectural strategy by defining the key principles, concepts, style, etc that would guide the architecture. These aspects of the strategy are then validated through brainstorming sessions and prototypes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Identify the functional requirements that are architecturally significant. This helps me focus my attention on the key areas of the solution. The other thing that I have realized from experience is that it helps in the long-term manageability of the solution, if the structural approach were consistent across both architecturally significant and non-significant requirements.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Identify the non-functional requirements. I usually add this information to the corresponding use cases, and then trace them all the way down to the design documents.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Develop a conceptual architecture, to identify the various systems and sub-systems, their responsibilities, and their collaborations. This is again validated either through prototypes or through brainstorming sessions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Define the logical architecture, to come up with the various interface specifications, and validate them.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Have the team build a reference implementation of the architecture.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Analyze the non-functional requirements, to derive the key characteristics of the run-time environment. This would relate to high availability, failover, load-balancing, number of processes, etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Incorporate any feedback from the development team, into the architecture. These set of activities fall under architecture change management.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-3796110314521147120?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/3796110314521147120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=3796110314521147120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/3796110314521147120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/3796110314521147120'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/01/architecture-process.html' title='The Architecture Process'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-5654045401553083721</id><published>2007-01-05T09:31:00.000-06:00</published><updated>2007-01-05T15:50:21.849-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>How to manage expectations in  “politically charged” situations?</title><content type='html'>&lt;p class="MsoPlainText" style="text-align: justify;"&gt;&lt;span style="font-family:Verdana;"&gt;In my view, the best way to work in a politically charged environment is to first have a good understanding of the different perspectives, identify what would influence those perspectives, and build relationships to influence a change. All the time, maintaining an objective standpoint by sticking to hard facts.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-5654045401553083721?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/5654045401553083721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=5654045401553083721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/5654045401553083721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/5654045401553083721'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2007/01/how-to-manage-expectations-in.html' title='How to manage expectations in  “politically charged” situations?'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-6846919585810790164</id><published>2006-11-28T09:25:00.000-06:00</published><updated>2006-11-29T15:48:39.578-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><title type='text'>On the adoption of open source</title><content type='html'>I have been working with open source products for quite a few years now. These have predominantly been Java based frameworks and other products. It used to be that there were only a handful of such products, which were available in the past. That picture has now changed. If you were to look at &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SourceForge&lt;/span&gt;, for instance, that site hosts over 130k projects.&lt;br /&gt;&lt;br /&gt;With this rapid proliferation, one would be inclined to believe that the development community, in general, have wholeheartedly adopted open source. However, that might be an overly optimistic statement. The arguments that I have heard against open source are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The future direction of such products might not be in line with direction of the adopters.&lt;/li&gt;&lt;li&gt;The adopters would still need to know the internal workings of such products, to understand their limitations and to quickly troubleshoot any issues.&lt;/li&gt;&lt;li&gt;The needs of the adopters are so unique that they cannot be completely fulfilled by any open source product.&lt;/li&gt;&lt;/ul&gt;I am not sure if this movement has had a polarizing affect but I do believe that there have been different levels of open source adoption. At one end of the spectrum you find companies that have adopted open source to the fullest extent. At the other end of the spectrum, you find companies that have either resisted, been indifferent, or have marginally adopted open source. If you were to plot open source adoption on a graph, with the adopters and the non-adopters at either ends, the curve would be positively skewed towards people that have completely adopted open source. The curve would also have a long tail, towards the non-adopters, indicating the different levels of adoption.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-6846919585810790164?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/6846919585810790164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=6846919585810790164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/6846919585810790164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/6846919585810790164'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2006/11/on-adoption-of-open-source.html' title='On the adoption of open source'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-2862381826610932819</id><published>2006-11-26T13:57:00.000-06:00</published><updated>2006-11-27T16:44:19.411-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Enterprise Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='EA'/><title type='text'>Enterprise Architecture and SOA</title><content type='html'>&lt;a href="http://www.zifa.com/"&gt;Zachman &lt;/a&gt;Framework analyzes &lt;span style="font-style: italic;"&gt;EA &lt;/span&gt;from the various perspectives (Planner, Owner, Designer, Builder, Subcontractor) and abstractions (What, How, Where, Who, When, Why). &lt;a href="http://bredemeyer.com/"&gt;Bredemeyer Consulting&lt;/a&gt; describe EA as business capabilities architecture, focusing on the triad of people, process, and technology. &lt;a href="http://www.opengroup.org/architecture/togaf8-doc/arch/"&gt;TOGAF &lt;/a&gt;describes how to set up EA by iterating through  the various  phases of their Architecture Development Method. In short, EA is all about seeking an alignment between IT and business, to make IT more pliable to the business needs.&lt;br /&gt;&lt;br /&gt;Technologically, &lt;span style="font-style: italic;"&gt;SOA &lt;/span&gt;is an extension of the age-old component oriented architecture (COM, CORBA, EJB, etc). Fundamentally, it has a similar set of challenges and benefits. Exposing a service as a Web Service primarily focuses the attention on how the data is interchanged, and on a plethora of supporting standards. Exposing services the Jini way, which I might add is more mature than web services, lets you interchange behavior along with the data.&lt;br /&gt;&lt;br /&gt;Conceptually, SOA focuses on the business processes, hooking together  different services to create fluid processes. It seeks to align the various services to business processes, to help create a flexible and an agile IT.&lt;br /&gt;&lt;br /&gt;In my view, there are similarities in the intent behind both EA and SOA. The approaches, however, may be different.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-2862381826610932819?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/2862381826610932819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=2862381826610932819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/2862381826610932819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/2862381826610932819'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2006/11/enterprise-architecture-and-soa.html' title='Enterprise Architecture and SOA'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-1658055069478849782</id><published>2006-11-25T11:05:00.000-06:00</published><updated>2006-11-27T16:46:08.005-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iBatis'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><category scheme='http://www.blogger.com/atom/ns#' term='TopLink'/><title type='text'>On Frameworks and Data Mapping Tools</title><content type='html'>In my view, frameworks like Spring provide the following benefits:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Allow for cleaner separation of layers&lt;/li&gt;&lt;li&gt;Automatically apply certain well established design patterns&lt;/li&gt;&lt;li&gt;Externally configurable (see below)&lt;/li&gt;&lt;li&gt;Structured to support plug-and-play of components&lt;/li&gt;&lt;/ul&gt;I understand that too much of XML can be quite confusing. For instance, I had the same issue with all the action-mappings within Struts. However, I soon realized the reason why such frameworks were configuration intensive, be it XML or annotations. Most of these frameworks are general purpose in nature. For instance, you could use Spring to run a web application, an &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;RMI&lt;/span&gt; application, or a batch application. Being configuration intensive is what makes these frameworks more flexible, for use in different environments. You cannot therefore blame such general purpose frameworks for being configuration intensive. It is the users of such frameworks that are responsible for balancing flexibility against manageability. That also applies to the use of features like Dependency Injection, externally configurable transactions, etc.&lt;br /&gt;&lt;br /&gt;I have a different opinion on O/R mapping tools like Hibernate and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;TopLink&lt;/span&gt;. In the past, I had worked with &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;TopLink&lt;/span&gt; to quite an extent. What I realized was that such mapping tools were a good fit if the domain object model was the driving force behind the relational data model. Any other way, and you had mapping issues. Also, at that time &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;TopLink&lt;/span&gt; did not support stored procedures, and the applications relied quite heavily on them.&lt;br /&gt;&lt;br /&gt;A good alternative would be a data mapping framework like &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;iBatis&lt;/span&gt;. You write the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SQL&lt;/span&gt;, and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;iBatis&lt;/span&gt; executes it for you, without you having to write a single line of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;JDBC&lt;/span&gt; related code. Along with that, it also manages all database related resources (statements, connections, result sets, etc) for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-1658055069478849782?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/1658055069478849782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=1658055069478849782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/1658055069478849782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/1658055069478849782'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2006/11/on-frameworks-and-data-mapping-tools.html' title='On Frameworks and Data Mapping Tools'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-852194497541888923</id><published>2006-11-19T06:34:00.000-06:00</published><updated>2006-11-29T15:49:43.270-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation pyramid'/><title type='text'>Structuring innovation within a group</title><content type='html'>I was listening to a podcast &lt;a href="http://hbswk.hbs.edu/item/5525.html"&gt;interview&lt;/a&gt; with &lt;a href="http://pine.hbs.edu/external/facPersonalShow.do?pid=6486"&gt;Rosabeth Moss Kanter&lt;/a&gt;, who is the Ernest L. Arbuckle Professor of Business Administration at Harvard Business School. One of the ideas that were discussed, was that of the Innovation Pyramid. I believe that this strategy has broad applicability, not only can it help structure innovation at the enterprise level but also within a group or a division. Here is what she had to say about this innovation strategy.&lt;br /&gt;&lt;br /&gt;"&lt;span style=";font-family:lucida grande;font-size:100%;"  &gt;The innovation pyramid is an innovation strategy that works at three levels. The lion's share of the investment underwrites a few big bets at the top: clear directions for the future. The second level is a portfolio of promising mid-range ideas driven by designated teams. At the bottom of the pyramid are early-stage ideas or incremental innovations that permit continuous improvement.   &lt;/span&gt;&lt;p  style="font-family:lucida grande;"&gt;&lt;span style="font-size:100%;"&gt;Influence flows from top to bottom—the big bets encourage smaller wins heading in the same direction. But success can also flow from the bottom to the top—3M's Post-it Notes is one such example. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:lucida grande;font-size:100%;"  &gt;Senior managers can use the innovation pyramid to gauge current efforts, recalibrate as ideas prove their value, and ensure there is activity at all levels.&lt;/span&gt;"&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-852194497541888923?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/852194497541888923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=852194497541888923' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/852194497541888923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/852194497541888923'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2006/11/structuring-innovation-within-group.html' title='Structuring innovation within a group'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-6624484068089145974</id><published>2006-11-19T06:29:00.000-06:00</published><updated>2006-11-21T13:51:33.613-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPod'/><category scheme='http://www.blogger.com/atom/ns#' term='interface'/><title type='text'>Designing interfaces the iPod way</title><content type='html'>Recently I started using the iPod, to listen to podcasts, on my way to and back from work. The one thing that I find most fascinating about this device is the simplicity of its user interface. You have a touch sensitive dial to work with the volume, and around that are buttons to play/pause, forward, rewind, and a button to view the menu. I am sure that on the inside the product has a lot of complex engineering but on the outside, all the elements of its user interface are very basic and very functional in nature.&lt;br /&gt;&lt;br /&gt;Why can't the same principles be applied to the software world? Why is it that any time that I look around there is a new API, with its own unique way of working with it? Why can't the APIs be as simple and as elegant as the iPod user interface?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-6624484068089145974?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/6624484068089145974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=6624484068089145974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/6624484068089145974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/6624484068089145974'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2006/11/designing-interfaces-ipod-way.html' title='Designing interfaces the iPod way'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-116137746351165878</id><published>2006-10-21T14:16:00.000-06:00</published><updated>2006-11-27T16:47:10.342-06:00</updated><title type='text'>Assessing organizational capabilities from a grassroots level</title><content type='html'>The classic big picture view of the organizational capabilities requires a certain vantage point from where the picture is drawn. It requires visibility into some of the esoteric areas within an organization. Quite often the big picture is either fuzzy or incomplete. On top of that there are solutions in progress that require a good understanding of the capabilities of the organization.&lt;br /&gt;&lt;br /&gt;In my view, one way to work around such situations is by individual initiative and commitment. If the capability domains are known, try striking a conversation with the key players within those domains. You will be surprised at the quality of information that comes out. Sometimes these conversations help dispel some well-known myths and help establish certain lesser-known facts. This is also a good starting point to identify the missing pieces from the big picture. Conversation-chains help discover other key capability domains. Finally, cross referencing such information obtained from the different capability domains promotes a better understanding of what we seek.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-116137746351165878?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/116137746351165878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=116137746351165878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/116137746351165878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/116137746351165878'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2006/10/assessing-organizational-capabilities.html' title='Assessing organizational capabilities from a grassroots level'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-116110385548529314</id><published>2006-10-15T09:05:00.000-06:00</published><updated>2006-11-27T16:47:44.800-06:00</updated><title type='text'>Need an Architect to baby-sit my requirements</title><content type='html'>A common perception of an architect is that of an alpha geek, the go-to guy for all technical problems. Often architects do evolve from deep technical backgrounds, and do tend to carry that air around them. It is not surprising when that impression ends up fortifying the common perception.&lt;br /&gt;&lt;br /&gt;Being stereotyped that way doesn't really help when you want to progress up the value chain. You get to hear things like, "We never thought you would be interested in the business side of things". It then becomes a tough uphill battle to get into the space where solutions to business problems are being crafted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-116110385548529314?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/116110385548529314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=116110385548529314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/116110385548529314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/116110385548529314'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2006/10/need-architect-to-baby-sit-my.html' title='Need an Architect to baby-sit my requirements'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-116075755346556635</id><published>2006-10-14T10:29:00.000-06:00</published><updated>2006-11-29T14:10:07.775-06:00</updated><title type='text'>Can an Architect be an effective Project Manager as well?</title><content type='html'>&lt;p class="MsoNormal"&gt;When you look around in the job market, you see job postings that require both Architectural and Project Management expertise. Typically these postings are from companies that don't have an established architecture practice but that recognize the importance of architecture.&lt;br /&gt;&lt;br /&gt;The question that comes to my mind is, 'Can an architect be an effective project manager as well?’ From what I understand, after having worked as an architect and after having dabbled with project management, the general attitude of the practitioners within these fields is very different. As an architect, you are trained to abstract complexity, and to only delve into details that are architecturally significant. As a project manager, you are required to delve into the lowest level of detail and to work out their dependencies.&lt;br /&gt;&lt;br /&gt;Maybe there are projects of a certain scale where having an Architect/Project Manager works out to be more cost effective.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-116075755346556635?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/116075755346556635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=116075755346556635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/116075755346556635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/116075755346556635'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2006/10/can-architect-be-effective-project.html' title='Can an Architect be an effective Project Manager as well?'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35969180.post-116075270843614092</id><published>2006-10-14T09:03:00.000-06:00</published><updated>2006-11-29T15:50:25.067-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HP&apos;s Ecosystem'/><title type='text'>HP's Ecosystem and its bearing on Enterprise/Software Architecture</title><content type='html'>I was listening to a podcast by Businessweek that interviewed Sam Lucente, who is the Vice-President of Design at Hewlett Packard. He talked about the concept of universal design, also referred to as HP's Ecosystem.&lt;br /&gt;&lt;br /&gt;In the conversation that ensued, he talked about 3 approaches. The first, &lt;span style="font-style: italic;"&gt;Design to Simplify&lt;/span&gt; that allows to drive reusable design elements. The second, &lt;span style="font-style: italic;"&gt;Design to Differentiate&lt;/span&gt; that relates to how to differentiate oneself in the marketplace. The last, &lt;span style="font-style: italic;"&gt;Design to Innovate&lt;/span&gt; that helps create new markets and new business models. In terms of articulating contributions to the bottom line of the company, Design to Simplify had a direct impact whereas Design to Innovate was the most difficult to articulate.&lt;br /&gt;&lt;br /&gt;In my view, these approaches are equally applicable to the realms of Enterprise/Software Architecture. Not only that, these approaches appear to be evolutionary, in the order as described above. For companies that are still exploring the value of having an architecture practice, the most attractive value proposition would be to use architecture as a means to create reusable elements.&lt;br /&gt;&lt;br /&gt;The next steps in the evolution of an architecture practice would be where it helps a company to &lt;span style="font-style: italic;"&gt;Differentiate&lt;/span&gt; and to &lt;span style="font-style: italic;"&gt;Innovate&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35969180-116075270843614092?l=on-architecture.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://on-architecture.blogspot.com/feeds/116075270843614092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35969180&amp;postID=116075270843614092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/116075270843614092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35969180/posts/default/116075270843614092'/><link rel='alternate' type='text/html' href='http://on-architecture.blogspot.com/2006/10/hps-ecosystem-and-its-bearing-on.html' title='HP&apos;s Ecosystem and its bearing on Enterprise/Software Architecture'/><author><name>Anshu Gaind</name><uri>http://www.blogger.com/profile/02901876221871212381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
