<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>software-engineering &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/software-engineering/</link>
	<description>Feed of posts on WordPress.com tagged "software-engineering"</description>
	<pubDate>Sat, 28 Nov 2009 14:52:44 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[The Halting Problem is no problem after all...]]></title>
<link>http://thymeless.wordpress.com/2009/11/26/the-halting-problem-is-no-problem-after-all/</link>
<pubDate>Thu, 26 Nov 2009 20:47:22 +0000</pubDate>
<dc:creator>barghouthi</dc:creator>
<guid>http://thymeless.wordpress.com/2009/11/26/the-halting-problem-is-no-problem-after-all/</guid>
<description><![CDATA[Science Journalists &#8230; hmmm &#8220;&#8230;Microsoft researcher Byron Cook and his colleagues di]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Science Journalists &#8230; hmmm</p>
<p>&#8220;&#8230;Microsoft researcher <a href="http://research.microsoft.com/en-us/people/bycook/">Byron Cook</a> and his colleagues did the unthinkable — they hacked a fix. When Cook tried to describe the workaround, however, he found it impossible to explain with existing mathematical symbols. His only option, he decided, was to invent new ones&#8230;&#8221; &#8211; from <a href="http://www.wired.com/magazine/2009/11/st_goodsigns/">Wired</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Application Layers]]></title>
<link>http://solutionsarchitecture.wordpress.com/2009/11/26/application-layers/</link>
<pubDate>Thu, 26 Nov 2009 08:26:09 +0000</pubDate>
<dc:creator>J@F</dc:creator>
<guid>http://solutionsarchitecture.wordpress.com/2009/11/26/application-layers/</guid>
<description><![CDATA[Software applications are based on layers and the communication between them, so the main task in th]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Software applications are based on layers and the communication between them, so the main task in the design of an application architecture will be the identification and creation of layers and then to specify a communication language and set the rules and guidelines of the interaction between these layers.<br />
To start the design of an application architecture, the architect should keep in mind the following points:</p>
<p style="padding-left:30px;">• Separation of concerns<br />
• Clearness in the communication rules between layers.<br />
• Implementation of loose coupling between layers using abstraction (Interface)<br />
• Separation of component between logical layers (UI-Business-..)<br />
• Keeping the data format consistent within a layer or component</p>
<p>If we really take into consideration these points, the application will be easily extensible and testable, and its components will be clearly identifiable and reusable.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[XthreemiX: Mi modelo operativo [1era parte]]]></title>
<link>http://fabrous.wordpress.com/2009/11/26/xthreemix-mi-modelo-operativo-1era-parte/</link>
<pubDate>Thu, 26 Nov 2009 01:16:00 +0000</pubDate>
<dc:creator>fabrous</dc:creator>
<guid>http://fabrous.wordpress.com/2009/11/26/xthreemix-mi-modelo-operativo-1era-parte/</guid>
<description><![CDATA[He estado un poco desconectado luego de haber creado mi log debido a que he pasado por un proceso de]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>He estado un poco desconectado luego de haber creado mi log debido a que he pasado por un proceso de cambio en lo laboral.</p>
<p>Actualmente trabajo, desde el 16/11, para un empresa que brinda ingeniería en varias especialidades. Particularmente, con 4 personas más que conforman el equipo, comenzaremos a desarrollar el software de gestión para dicha empresa. Al llegar me he encontrado con un grupo que tiene un líder pero que fue armado con perfiles totalmente diferentes y todos los analistas venimos de grupos de trabajo distintos y con &#8220;costumbres&#8221; también distintas. Creo que lo más complicado de este nuevo empezar es poner todo a punto para &#8220;comenzar con el pie derecho&#8221;. Hace falta mucho pero en resumen creo que el primer punto a definir es el modelo operativo o metodología de desarrollo que utilizaremos.</p>
<p>Durante mi experiencia laboral me ha tocado vivir muchas situaciones diferentes en cuanto a los modelos utilizados y también he tenido el privilegio de introducirme en algunos. Entre todo lo que he vivido y leído finalmente me he decidido a definir mi propio modelo que, en retrospectiva, pienso que es le mejor modelo que hubiese podido utilizar en todos los proyectos en los cuales he participado y actualmente aplico para mis proyectos de desarrollo web que realizo fuera de mi actual trabajo. Las diferentes etapas son las siguientes:</p>
<ul>
<li>01 Requerimientos</li>
<li>02 Análisis</li>
<li>03 Diseño y Prototipado</li>
<li>04 Desarrollo y Pruebas de Sistema</li>
<li>05 Pruebas de Integración</li>
<li>06 Pruebas de Usuario</li>
<li>07 Implantación</li>
</ul>
<p>La particularidad del proceso es el hecho de que hace un &#8220;mix&#8221; entre varios modelos ya conocidos (3 en realidad) y es por ello que lo he bautizado XthreemiX (X3miX). Debido a que no cuento con gráficos (al menos en el corto plazo debido a la escacez de mi tiempo) voy a tratar de explicar el método con palabras (prometo exponer imágenes a futuro para mejor comprensión).</p>
<p>Para comenzar, hay que tener en cuenta que los 3 métodos que se utilizar son: espiralado, scrum y lineal. Espiralado es usado en las etapas 01, 02 y 03, scrum en la etapa 04 y lineal en las etapas 05, 06 y 07.</p>
<p>Para hacer la explicación más fácil tomaremos como ejemplo el desarrollo de un módulo de gestión de imagenes (álbum de fotos <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> )</p>
<p>Pasemos a explicar la pimera parte (etapas 01, 02 y 03). La clave de esta primera etapa y del éxito de la misma es la rapidez y sencillez aplicada a las etapas 01 y 02. El objetivo de la etapa completa es brindar una especificación técnica del producto por medio de iteraciones entre todas las sub-etapas que la componenen. Nos enfocaremos ahora en cada etapa en particular.</p>
<p>El objetivo de la etapa 01 es definir los &#8220;requisitos de alto nivel&#8221; (entiendase por requisito de alto nivel cada uno de los aspectos generales que debe satisfacer el producto). Por ejemplo:</p>
<ul>
<li>REQ.1: El módulo debe permitir gestionar fotografias</li>
<li>REQ.2: El módulo debe permitir generar álbumes de fotos en formato PDF</li>
</ul>
<p>Hay que tener en cuenta que los requisitos deberán ser definidos junto al cliente y que, seguramente, de cada reunión con el mismo nos llevaremos nuevos requisitos pero no debemos nunca esperar hasta tener definidos &#8220;todos&#8221; hasta pasar a la siguiente sub-etapa; si no, por el contrario, debemos para a la próxima para listar las &#8220;funcionalidades de alto nivel&#8221; para el conjunto de requisitos que han sido definido con el cliente. Aquí presentamos a la sub-etapa 02.</p>
<p>Como he anticipado, la etapa 02 nos dará la lista de funcionalidades de alto nivel para cada uno de los requisitos definidos. Al finalizar cada reunión con el cliente, y con un nuevo conjunto de requisitos en la mano, deberíamos comenzar a definir la lista de funcionalidades que se desprende de cada uno. Ejemplo:</p>
<ul>
<li>AN.1: El módulo debe permitir crear nuevas fotos. Requisitos relacionados: REQ.1</li>
<li>AN.2: El módulo debe permitir crear álbumes. Requisitos relacionados: REQ.1</li>
<li>AN.3: El módulo debe permitir modificar álbumes. Requisitos relacionados: REQ.1</li>
</ul>
<p>Estas son solo algunas de las funcionalidades que se desprenden pero, como pueden observar, la definición de las mismas está definida haciendo uso de un alto de nivel similar al de los requisitos.</p>
<p>Como podrán imaginarse, definir estas listas no debería llevar más de 3/4 jornada (la 01 en la reunión con el cliente y la 02 desprendida de nuestro análisis aunque tal vez debamos validar con el cliente) y al finalizar ese tiempo estamos listo para comenzar a diseñar y prototipar en la siguiente sub-etapa.</p>
<p>La sub-etapa 03, diseño y prototipado, tal vez demande un poco más de tiempo que las dos anteriores debido a que el objetivo de la misma es dar especificaciones técnicas para cada una de las funcionalidades definidas y desarrollar un prototipo de un conjunto agrupado lógicamente para poder presentarlo al cliente y comenzar con la validación de nuestro producto (en realidad, de cada parte o paquete de nuestro producto). aquí deberíamos utililizar herramientas que nos permitan presentar prototipos &#8220;usables&#8221; a nuestros clientes para que los mismos puedan iteractuar con nuestras &#8220;propuestas&#8221;.</p>
<p>Para resumir, el proceso espiralado se dará de la siuiente forma: 01-&#62;02-&#62;03-&#62;01-&#62;02-&#62;03-&#62;01-&#62;02-&#62;03-&#62;&#8230;-&#62;01-&#62;02-&#62;03 hasta que tengamos el producto que necesita nuestro cliente &#8220;conceptualmente definido&#8221; y validado por el mismo.</p>
<p>Es evidente que la rapidez con la que debe ser llevada a cabo cada una de estas partes es punto clave para el éxito del modelo pero también puedo asegurarles que, habiendo utilizado otras metodologías anterioremente, creo que la facilidad con la que puede ser ejecutada cada una de estas sub-etapas y el poco nivel de &#8220;burocracia&#8221; que tienen los entregables de cada una de ellas hará de ustedes y su grupo de desarrollo un equipo muy eficiente.</p>
<p>En la próxima entrega me dedicaré a explicarles la etapa 04 pero ahora debo ir cortando debido a que, como les decía al inicio, mi tiempo es escazo. Nos volveremos a ver&#8230;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 &ndash; Software Engineering &ndash; Domain Modelling]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/26/year-2-software-engineering-domain-modelling-2/</link>
<pubDate>Thu, 26 Nov 2009 00:46:04 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/26/year-2-software-engineering-domain-modelling-2/</guid>
<description><![CDATA[What is Domain Modelling? Domain Modelling is a way of representing the context  in which the softwa]]></description>
<content:encoded><![CDATA[What is Domain Modelling? Domain Modelling is a way of representing the context  in which the softwa]]></content:encoded>
</item>
<item>
<title><![CDATA[The Unplugged by Ruven Meulenberg]]></title>
<link>http://ianlotinsky.wordpress.com/2009/11/25/the-unplugged-by-ruven-meulenberg/</link>
<pubDate>Wed, 25 Nov 2009 22:23:21 +0000</pubDate>
<dc:creator>Ian Lotinsky</dc:creator>
<guid>http://ianlotinsky.wordpress.com/2009/11/25/the-unplugged-by-ruven-meulenberg/</guid>
<description><![CDATA[While researching user experience design techniques, I stumbled upon some nifty whiteboard magnets f]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img style="float:left;border:1px solid #000;margin-right:1em;" src="http://ianlotinsky.wordpress.com/files/2009/11/the_unplugged-e1259186384567.jpg" alt="" />While researching user experience design techniques, I stumbled upon some nifty whiteboard magnets for prototyping called <a href="http://www.guimags.com/">GuiMags</a> as well as a complementing book called <a href="http://www.guimags.com/unplugged"><em>The Unplugged</em></a>.</p>
<p>GuiMags look like the nicest way to prototype something before going to HTML and CSS. Labor intensive forms of prototyping don&#8217;t seem to add much value, and paper and traditional whiteboard prototyping only works until you&#8217;ve changed your mind about something and have to throw your work in the trash or erase half the board.</p>
<p>Although I decided to postpone a magnet purchase until I am doing design again, I was able to get my hands on the book. Its premise: we limit ourselves by the technologies we use. Instead of thinking outside the box, we&#8217;re often thinking and functioning in it. A large part of this thinking inside the box is <strong>how</strong> we develop software.</p>
<p>Although, everyone interested in the topic should pick up the book, here are a few of my takeaways:</p>
<ul>
<li>Every major form of art that involves technology (music, film, video games, graphic design) starts outside technology. Artists do not limit themselves by their technology but by the limits of their own minds. As a software engineer, you often limit yourself by the technology you use day-to-day.</li>
<li>Spend as much time as you can iterating on concept and design before going to implementation.</li>
<li><a href="http://37signals.com/svn/archives/001050.php">Design the software front-end not the back-end first</a>.</li>
<li>Just like there are code freezes, freeze the product when it has passed the design phase.</li>
<li>It is often wise to outsource the implementation.
<ul>
<li>This serves as a peer review of the design before it goes to implementation. Software developers traditionally think about the back-end first.</li>
<li>Different cultures have different strengths: &#8220;England and Western Europe are great at design, Ukraine and Macedonia have amazing and prompt developers who can think for themselves, the Netherlands always emails back the same day, India is extremely polite, etc.&#8221;</li>
<li>Work can be done while you are sleeping. &#8220;This can cut the development time in half.&#8221;</li>
<li>Because you already know what you want and won&#8217;t be constantly changing the design, contractors will want to work with you even if you pay less.</li>
<li>Only be satisfied with five-star developers.</li>
<li>Pay more than you agree to pay.</li>
<li>Do one-week sprints. Longer sprints end up getting delayed, with excuses.</li>
</ul>
</li>
</ul>
<p>With the last (sub)point in mind, I think this methodology is well-suited for an agile development process.</p>
<p>There is a lot to gain from reading the book, so make sure to grab a copy for yourself.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[VS Test Method Snippet]]></title>
<link>http://coderhapsody.wordpress.com/2009/11/25/vs-test-method-snippet/</link>
<pubDate>Wed, 25 Nov 2009 19:50:23 +0000</pubDate>
<dc:creator>syoguran</dc:creator>
<guid>http://coderhapsody.wordpress.com/2009/11/25/vs-test-method-snippet/</guid>
<description><![CDATA[Test driven geliştirme yapmak, eğlenceli olduğu kadar uzun süren bi işlemdir malumunuz. Bu konu ile ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://serkanyoguran.wordpress.com/files/2009/11/snippet.gif"><img class="alignleft size-full wp-image-64" title="snippet.gif" alt="" src="http://serkanyoguran.wordpress.com/files/2009/11/snippet.gif" width="123" height="123" /></a>Test driven geliştirme yapmak, eğlenceli olduğu kadar uzun süren bi işlemdir malumunuz. Bu konu ile ilgili bir <a href="http://serkanyoguran.wordpress.com/2009/10/29/basit-tasarim/" target="_blank">yazım</a> olacaktı.</p>
<p>Önce test yazacaksınız, sonra testi geçirecek kodu yazacaksınız. Başka bir test yazıp asıl işi yapacak kodu yazmaya zorlarsınız kedinizi. Sonra duplicationları gidermek için <a href="http://en.wikipedia.org/wiki/Code_refactoring" target="_blank">refactor</a> edersiniz. Bunları yaparken <a href="http://en.wikipedia.org/wiki/Naming_conventions_(programming)" target="_blank">naming convention</a> a dikkat edersiniz.</p>
<p>Derken ne oldu? Hepi topu 3 ile 5 i toplayıp 8 döndüren bir method yazdınız daha. Bu methodu yazabilmek için en az 4 test yazmış olmamız lazım. Yani sadece basit bir method için 4 test yazıyoruz ki, büyükçe bir projede bu sayı nerelere çıkar varın siz düşünün.</p>
<p>TDD yazıyorsak en çok yazılan şey doğal olarak testtir. Farkettim ki bizim Visual Studio içinde bu durumla ilgili bir snippet yok. Ben her test için şunu kendim yazmak zorundayım:</p>
<pre class="code">[<span style="color:#2b91af;">Test</span>]
<span style="color:blue;">public void </span>TestMethodTest()
{
    <span style="color:#2b91af;">Assert</span>.Fail(<span style="color:#a31515;">&#34;Not implemented yet!&#34;</span>);
}</pre>
<p>Halbuki bir code snippet olsa ve biz 1-2 tuş ile bunu şak diye yazmış sayılsak diye düşünerek bir snippet yazdım. İtiraf etmeliyim ki “prop” snippettını referans alarak yazdım.</p>
<p>İndirmek isterseniz <a href="http://rapidshare.com/files/312152937/td.snippet.html" target="_blank">buyrun</a>.</p>
<p>Bu dosyayı <em>“My Documents\Visual Studio 2008\Code Snippets\Visual C#\[İstediğiniz bir folder]\”</em> altına atabilirisiz.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[VS Test Method Snippet]]></title>
<link>http://serkanyoguran.com/2009/11/25/vs-test-method-snippet/</link>
<pubDate>Wed, 25 Nov 2009 19:42:02 +0000</pubDate>
<dc:creator>syoguran</dc:creator>
<guid>http://serkanyoguran.com/2009/11/25/vs-test-method-snippet/</guid>
<description><![CDATA[Test driven geliştirme yapmak, eğlenceli olduğu kadar uzun süren bi işlemdir malumunuz. Bu konu ile ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img style="margin:0 10px 5px 0;" class="alignleft size-full wp-image-64" title="snippet.gif" alt="" src="http://serkanyoguran.wordpress.com/files/2009/11/snippet.gif" width="123" height="123" />Test driven geliştirme yapmak, eğlenceli olduğu kadar uzun süren bi işlemdir malumunuz. Bu konu ile ilgili bir <a href="http://serkanyoguran.wordpress.com/2009/10/29/basit-tasarim/" target="_blank">yazım</a> olacaktı.</p>
<p>Önce test yazacaksınız, sonra testi geçirecek kodu yazacaksınız. Başka bir test yazıp asıl işi yapacak kodu yazmaya zorlarsınız kedinizi. Sonra duplicationları gidermek için <a href="http://en.wikipedia.org/wiki/Code_refactoring" target="_blank">refactor</a> edersiniz. Bunları yaparken <a href="http://en.wikipedia.org/wiki/Naming_conventions_(programming)" target="_blank">naming convention</a> a dikkat edersiniz.</p>
<p>Derken ne oldu? Hepi topu 3 ile 5 i toplayıp 8 döndüren bir method yazdınız daha. Bu methodu yazabilmek için en az 4 test yazmış olmamız lazım. Yani sadece basit bir method için 4 test yazıyoruz ki, büyükçe bir projede bu sayı nerelere çıkar varın siz düşünün.</p>
<p>TDD yazıyorsak en çok yazılan şey doğal olarak testtir. Farkettim ki bizim Visual Studio içinde bu durumla ilgili bir snippet yok. Ben her test için şunu kendim yazmak zorundayım:</p>
<pre class="code">[<span style="color:#2b91af;">Test</span>]
<span style="color:blue;">public void </span>TestMethodTest()
{
    <span style="color:#2b91af;">Assert</span>.Fail(<span style="color:#a31515;">&#34;Not implemented yet!&#34;</span>);
}</pre>
<p>Halbuki bir code snippet olsa ve biz 1-2 tuş ile bunu şak diye yazmış sayılsak diye düşünerek bir snippet yazdım. İtiraf etmeliyim ki “prop” snippettını referans alarak yazdım.</p>
<p>İndirmek isterseniz <a href="http://rapidshare.com/files/312152937/td.snippet.html" target="_blank">buyrun</a>.</p>
<p>Bu dosyayı <em>“My Documents\Visual Studio 2008\Code Snippets\Visual C#\[İstediğiniz bir folder]\”</em> altına atabilirisiz.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Checkpoints for Test Data Validation]]></title>
<link>http://aquarelles.wordpress.com/2009/11/25/checkpoints-for-test-data-validation/</link>
<pubDate>Wed, 25 Nov 2009 00:48:55 +0000</pubDate>
<dc:creator>apricotbaby</dc:creator>
<guid>http://aquarelles.wordpress.com/2009/11/25/checkpoints-for-test-data-validation/</guid>
<description><![CDATA[Before we start any testing, we need to include a milestone to validate all needed test data are set]]></description>
<content:encoded><![CDATA[Before we start any testing, we need to include a milestone to validate all needed test data are set]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 - Software Engineering - Software Testing Concepts]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/24/year-2-software-engineering-software-testing-concepts/</link>
<pubDate>Tue, 24 Nov 2009 22:29:28 +0000</pubDate>
<dc:creator>Shaun</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/24/year-2-software-engineering-software-testing-concepts/</guid>
<description><![CDATA[Software testing concepts The fundamental rule of testing is that &#8216;a successful test is one th]]></description>
<content:encoded><![CDATA[Software testing concepts The fundamental rule of testing is that &#8216;a successful test is one th]]></content:encoded>
</item>
<item>
<title><![CDATA[Final Demonstration of Prototype]]></title>
<link>http://justmyself.wordpress.com/2009/11/24/final-demonstration-of-prototype/</link>
<pubDate>Tue, 24 Nov 2009 18:27:13 +0000</pubDate>
<dc:creator>Mohsin</dc:creator>
<guid>http://justmyself.wordpress.com/2009/11/24/final-demonstration-of-prototype/</guid>
<description><![CDATA[Tomorrow, I ll have my final demos of prototype at Ericsson, Karlskrona . This will be my last task ]]></description>
<content:encoded><![CDATA[Tomorrow, I ll have my final demos of prototype at Ericsson, Karlskrona . This will be my last task ]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 &ndash; Software Engineering &ndash; Design Class Diagrams]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/24/year-2-software-engineering-design-class-diagrams/</link>
<pubDate>Tue, 24 Nov 2009 17:43:18 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/24/year-2-software-engineering-design-class-diagrams/</guid>
<description><![CDATA[Design / Object Classes A Design Class diagram is a way of modelling the domain to a level of detail]]></description>
<content:encoded><![CDATA[Design / Object Classes A Design Class diagram is a way of modelling the domain to a level of detail]]></content:encoded>
</item>
<item>
<title><![CDATA[Decos Case Studies]]></title>
<link>http://decossoftware.wordpress.com/2009/11/24/decos-case-studies/</link>
<pubDate>Tue, 24 Nov 2009 09:08:35 +0000</pubDate>
<dc:creator>Decos Software Development</dc:creator>
<guid>http://decossoftware.wordpress.com/2009/11/24/decos-case-studies/</guid>
<description><![CDATA[BizTalk Custom Pipeline Components Business Case: A Sweden based ICT Company were facing a problem i]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:left;"><span style="color:#ff9900;"><a href="http://www.decos.in/site/marketing/decosMarketing/PDF/BizTalk%20Custom%20Pipeline%20Components.pdf"><strong>BizTalk Custom Pipeline Components</strong></a></span></p>
<p style="text-align:left;"><strong><span style="color:#3366ff;">Business Case:</span></strong></p>
<p style="text-align:left;">A Sweden based ICT Company were facing a problem in archiving of invoice message (TIFF files). They had to do many manual processes for the archiving which required automation.</p>
<p style="text-align:left;"><strong><span style="color:#3366ff;">Requirement: </span></strong></p>
<p style="text-align:left;">The requirement of the client was to create a custom pipeline component in BizTalk to support archiving of invoice message (TIFF files). The proposed solution has to interact over secure FTP (SFTP). The invoices have to be transferred to the second party and acknowledgement of the receipt is to be recorded. If there is any error in the process then it has to be notified by email. A strict requirement was that the invoice and accompanying files should be transferred as a single set. If there is any error then the sending of invoice should be cancelled and notified by email.</p>
<p style="text-align:left;"><strong><span style="color:#3366ff;">Decos Solution: </span></strong></p>
<p style="text-align:left;">BizTalk Pipelines allow you to customize the processing of XML documents received or sent via the various BizTalk adapters. Custom Pipeline components extend the behavior of Pipelines to include processing data of virtually any format. They can be a powerful solution if you support legacy systems that require integration with other products, but your legacy data format does not follow standards. It may contain carriage returns in odd places or records spanning any number of lines of text, for example. The only stipulation is that the data emerging from the Custom Pipeline must be some form of XML document.</p>
<p style="text-align:center;"><a href="http://decossoftware.wordpress.com/files/2009/11/decos-case-study3.jpg"><img class="size-full wp-image-50 aligncenter" title="decos Case study" src="http://decossoftware.wordpress.com/files/2009/11/decos-case-study3.jpg" alt="" width="450" height="442" /></a></p>
<p style="text-align:left;">The client’s requirement was to build custom pipeline component in BizTalk to support archiving of invoice message. The invoices which were TIFF files were generated at the client’s side. First step taken by Decos Team was creation of windows services to interact with SFTP server at source and destination sides. And then the Enhancements to third-party nSoftware component were done to search/create directories recursively. To complete a Pipeline, one or more Pipeline components from within Visual Studio .NET were needed to be selected and then they can be added to the Pipeline. None of the existing BizTalk Pipeline components satisfied the client requirements, so Decos had to build a custom pipeline component. A custom pipeline component for archiving the invoices was created. After creating the custom Pipeline component, the pipeline was deployed to the C:\Program Files\Microsoft BizTalk Server 2006\Pipeline Components directory so the custom Pipeline component can be added to the Pipeline in the BizTalk 2006 project. After deploying the custom Pipeline component, the component was added to the Pipeline component toolbar. The logic in BizTalk Orchestrations was implemented to ensure that files are received as a single set and error conditions are detected and notified. Technologies being used for this solution: BizTalk Server 2006 R2, nSoftware SFTP adapter, SSH library</p>
<p style="text-align:left;"><strong><span style="color:#3366ff;">The Result: </span></strong></p>
<p style="text-align:left;">Decos team delivered this solution in 20 days and is currently working on the development of additional features. Client was delighted to have an advanced solution based on Biztalk Server 2006 to get relief from their pain area of archiving the invoice messages.</p>
<p style="text-align:left;"><a href="http://www.decos.in/site/index.php?requestID=5&#38;pageID=10002&#38;menuid=5&#38;smid=35">GET A FREE QUOTE</a></p>
<p style="text-align:left;">more: <a href="www.decos.in">www.decos.in</a></p>
<p style="text-align:center;">
<p style="text-align:center;">
<p style="text-align:center;">
<p style="text-align:center;">
<p style="text-align:center;">
<p style="text-align:center;">
<p style="text-align:center;">
<p style="text-align:center;">
<p style="text-align:center;">
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 - Software Engineering - Software Design Intro]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/23/year-2-software-engineering-software-design-intro/</link>
<pubDate>Mon, 23 Nov 2009 23:16:54 +0000</pubDate>
<dc:creator>Shaun</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/23/year-2-software-engineering-software-design-intro/</guid>
<description><![CDATA[Intro to software design Embury&#8217;s law Remember this? The software has bugs in it, we just don]]></description>
<content:encoded><![CDATA[Intro to software design Embury&#8217;s law Remember this? The software has bugs in it, we just don]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 - Software Engineering - Domain Modelling]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/23/year-2-software-engineering-domain-modelling/</link>
<pubDate>Mon, 23 Nov 2009 21:09:18 +0000</pubDate>
<dc:creator>Shaun</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/23/year-2-software-engineering-domain-modelling/</guid>
<description><![CDATA[Domain modelling Class diagrams Class diagrams show the different classes and the relationships betw]]></description>
<content:encoded><![CDATA[Domain modelling Class diagrams Class diagrams show the different classes and the relationships betw]]></content:encoded>
</item>
<item>
<title><![CDATA[Kanban for Software Development]]></title>
<link>http://kswenson.wordpress.com/2009/11/22/kanban-for-software-development/</link>
<pubDate>Sun, 22 Nov 2009 21:05:16 +0000</pubDate>
<dc:creator>kswenson</dc:creator>
<guid>http://kswenson.wordpress.com/2009/11/22/kanban-for-software-development/</guid>
<description><![CDATA[Last Wednesday I got a full scale indoctrination into the agile software development methodology cal]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Last Wednesday I got a full scale indoctrination into the agile software development methodology called Kanban, loosly based on the Toyota Production System (TPS) mechanism with the same name.  Toyota uses the kanban as a mechanism to allow for just the right amount of parts to be ordered and to be delivered just in time (JIT) in order to avoid overproduction and waste in the production line.  Kanban Software Development Methodology (KSDM) brings the same lean ideas to a development team.<!--more--></p>
<p>The <a href="http://qconsf.com/sf2009/tracks/show_track.jsp?trackOID=304">Kanban track</a> at<a href="http://qconsf.com/sf2009/conference/"> QCon</a>, the SD conference in San Francisco, had a line of speakers coordinated to give a thorough explanation: David Anderson, Jeff Patton, Henrik Kniberg, Chris Shinkle, and David Laribee.  What I found impressed me as an approach that may answer some of the problems I have been having in moving teams to agile development.</p>
<p>My first thought was that it should not be called &#8220;Kanban&#8221; since there is no kanban card: neither physical nor virtual nor electronic.  Instead the focus is on &#8220;leveling&#8221; (also known in TPS as &#8220;heijunka&#8221;) which is a way of keeping the amount of work in each category steady.  Kanban is the mechanism in TPS for achieving this leveling, but in KSDM achieves this leveling without a Kanban token itself.  I won&#8217;t dwell any more on the name, because it is in widespread use, and the ideas attached to the name as so important.</p>
<h2>Resources</h2>
<p>Being new to the topic, I refer you right away to resources with a more thorough treatment of the subject:</p>
<ul>
<li><a href="http://www.limitedwipsociety.org/">LimitedWIPSociety</a> &#8211; a focal point for this philosophy.  &#8220;WIP&#8221; means &#8220;Work In Progress&#8221;.</li>
<li>The <a href="http://finance.groups.yahoo.com/group/kanbandev/">kanbandev group</a> at Yahoo has discussions on these topics.</li>
<li><a href="http://www.infoq.com/articles/hiranabe-lean-agile-kanban">Kanban Applied to Software Development: from Agile to Lean</a> &#8211; a good article from Kenji Hiranabe at InfoQ that lays things out in good detail.</li>
<li><a href="http://www.agilemanagement.net/resources/BetterSoftwareKanbanPrimer.pdf">The Kanban Primer: A Cultural Evolution in Software</a> &#8211; a good overview article from David Anderson</li>
<li><a href="http://kswenson.wordpress.com/2009/10/24/taiichi-ohno-reinterpreted/">Taiichi Ohno Reinterpreted</a> &#8211; my post from a few weeks ago visiting the fundamentals of Toyota Production System</li>
</ul>
<p>My goal will be to simply cover my impression of what is different or unique about this approach to agile software development &#8212; there is a lot more to it than I can cover here.</p>
<h2>Key Concepts</h2>
<p>The key to any Lean (with a capital L) method is to eliminate waste.  In software, work that is partially complete is waste.  This partially complete work is known as &#8220;Work In Progress&#8221; or WIP.  There is a necessity to have a certain amount of WIP, but the point is to minimize that to the degree possible.  You minimize WIP, and as a result that work gets accomplished quickly.  It only stands to reason: with a fixed amount of workers, reducing the number of things being worked on will allow them to spend more time on those fewer things, and get them to a completed state more quickly.</p>
<p>Let me  emphasize how important this is.  Development projects that go for 8 months with no visible results are dangerous on many levels.  By taking such a big bite of work at once, you commit the entire department to a direction without knowing whether it is going to work.  There is no way to gauge the progress of the team, except in vague status measures which can be manipulated by incompetent players to hide reality.   KSDM is about nibbling away at the work.  Each small unit is completed and made customer ready BEFORE the next unit is started.  In my <a href="http://kswenson.wordpress.com/2009/10/24/taiichi-ohno-reinterpreted/">reading of Taiichi Ohno</a>, this production in small continuous batches, instead of huge batches, is the essential ingredient of Just In Time manufacturing.</p>
<p>The focus is on &#8220;flow&#8221; of development activities. Focus on flow does two thing: first it obviously help to continuously get things completed.  The other thing is that it helps to expose trouble.  Whenever there is a disruption in the flow, when the flow does not work quite right, it is an indication of a problem that needs addressing.  If works starts to pile up at one step, this is an indication that you should focus effort on that step and find out what is not working well.</p>
<h2>How it Works</h2>
<p>This seems in many ways contrary to the punctuated approach emphasized by Scrum and other strict iterative development.  This apparent difference is an illusion caused simply by scale.  KSDM allows for finer grained control.  Scrum is a fairly course grained approach, e.g. all work gets done in a three week cycle.  If you look at the larger scale, over the year, Scrum is providing a steady flow of features into the product.  The 3 week iteration is a mechanism to assure that there is not a huge huge backlog of incomplete work.  All the work, of the complete development cycle must be started and finished in that one sprint, which can be difficult if you have people that specialize in certain phases of development.</p>
<p>KSDM takes this control to a different level.  You break the work process in a series different activities (phases).  You then set a limit of how many job units you will allow at any phase.  A simple rule of thumb: you can have a few more work units as you have people doing that job, so that each has one thing to work on at a time, and a small cache of completed jobs.  The people in a given phase will do their work on a job unit to completion, so that it is ready for the next phase of work.</p>
<p>This is where the somewhat brilliant key idea behind KSDM comes to play.  The completed job does NOT free the person for working on another job, until that job is pulled into the following phase and work is started there.  If work is piling up at a particular phase, those people are NOT ALLOWED to work ahead.  As Taiichi Ohno makes so clear, that working ahead is waste.  Instead of working ahead, they can look around to see what is wrong.</p>
<blockquote><p>&#8220;I feel a disturbance in the flow&#8230;&#8221;   &#8211; Obi Wan Kenobi on software development</p></blockquote>
<p>To put this in concrete terms, consider a process which involves (1) detailed design, (2) coding, (3) testing, and (4) documenting.  Each of these stages you place a limit on the number of jobs, and for the sake of example lets say that limit is 4.  Say for example that the coders have finished coding on their four job units, and are ready to take a new one.  But the testing is backed up for some reason, still working on the last four job units, and are not ready to take a new job.  The developers are <em>not allowed </em>to pull in a fifth job unit.  There is <em>no point</em> in coding up more features when the earlier features are not getting tested or documented.  It is also possible that because the developers are not pulling jobs from design, that the design phase becomes filled up with completed tasks.  When work backs up in this way, one should go and figure out why testing is stuck.  Maybe the real problem is that the documentation is blocking test.  Whatever it is, <em>the primary job of the entire team is to identify the problem with the flow</em>, and fix it.  Do not simply work ahead accumulating a huge pile of work for &#8220;someone else&#8221;.  Instead, focus on the big goal, which is to get features completed to a customer ready state as quickly as possible.</p>
<h2>Reflection</h2>
<p>This idea of setting limits on the number of discrete jobs that can exist at any given phase at a time is so simple, and yet so profound, that I want to format these paragraph all in bold italics. It allows people to specialize into different role, to focus on their particular work, while the mechanism assures that the primary goal is not being lost.  Some teams can take a feature (a story actually, a small separable part of a feature) from design to completely implemented, tested and document in only four days.</p>
<p>Kanban works in a car factory because the time to complete a particular job is well known.  A Corolla comes off the line every 97 seconds.  The factory is set up to produce a car&#8217;s worth of parts every 97 seconds as well.  The parts are highly repeatable, so if it takes more than 97 seconds to build four doors, then you need either multiple steps, or parallelism, whatever makes the most sense.  Once you have figured out exactly how long it takes to build a door it can be done again and again.  Software is not so repeatable.  Every software job is different and unique.  How does that work with Kanban?  The interesting thing: it does not turn out to matter.  You break features into stories that are approximately the same size, but if one story takes three times the effort as another story, no problem.  With software the job does not need to be timed to fit into 97 second slots.  We can be flexible in the time dimension: one story takes one day, and another takes three days.  What is important is that that story, no matter how long it takes, is completed before another is pulled in by that resource.  With this understanding, my biggest concern was eliminated.</p>
<p>Clearly the method requires that features be broken down into fine grained stories.  If you did not do this, you run the risk of &#8220;starving the line&#8221;.  That is, one phase is filled with long running jobs, and the following phase has completed all their work.  One area to explore is when the feature designer claims that the feature can not be broken down into small stories.  There are surely techniques to address this, including job classification and prioritization, minimum marketable features, and other details which I can&#8217;t cover in this post.</p>
<p>Finally, it appears to me that a teams with a long practice of waterfall development might be able to <em>evolve </em>into this method.  There is no big disruptive change. Just make the process visible, and limit the amount of work that is in progress at any given time.  This allows Taiichi Ohno&#8217;s concept of  &#8220;autonomism&#8221; to take over, and team can self organize to become more efficient.   This make a lot of sense.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 &ndash; Software Engineering &ndash; Use Case Diagrams / Descriptions]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-use-case-diagrams-descriptions/</link>
<pubDate>Sun, 22 Nov 2009 17:41:58 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-use-case-diagrams-descriptions/</guid>
<description><![CDATA[UML &amp; Use Cases UML stands for Unified Modelling Language. They are diagrams to help aid the cre]]></description>
<content:encoded><![CDATA[UML &amp; Use Cases UML stands for Unified Modelling Language. They are diagrams to help aid the cre]]></content:encoded>
</item>
<item>
<title><![CDATA[Software Architecture Guide]]></title>
<link>http://vinodvarma.wordpress.com/2009/11/22/architecture-guide/</link>
<pubDate>Sun, 22 Nov 2009 15:54:25 +0000</pubDate>
<dc:creator>vinodvarmah</dc:creator>
<guid>http://vinodvarma.wordpress.com/2009/11/22/architecture-guide/</guid>
<description><![CDATA[Are you looking for a good book on Architecture? Then, Microsoft Application Architecture Guide, 2nd]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Are you looking for a good book on Architecture? Then, <a href="http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=ce40e4e1-9838-4c89-a197-a373b2a60df2&#38;displayLang=en" target="_blank">Microsoft Application Architecture Guide, 2nd Edition</a> is a &#8216;must-read&#8217;. Though it is tuned to working with Microsoft technologies, much of topics covered have larger relevance. What I like about this book, compared to other books on software architecture, is practical relevance and ease of application</p>
<p>Hats off to Microsoft for bringing architecture from the elite glass house to developers&#8217; workspace!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 &ndash; Software Engineering - Requirements]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-requirements/</link>
<pubDate>Sun, 22 Nov 2009 15:13:51 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-requirements/</guid>
<description><![CDATA[What? Gathering requirements is very important, as they are a way of finding out what the new system]]></description>
<content:encoded><![CDATA[What? Gathering requirements is very important, as they are a way of finding out what the new system]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 &ndash; Software Engineering - Methodologies]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-methodologies/</link>
<pubDate>Sun, 22 Nov 2009 15:12:11 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/22/year-2-software-engineering-methodologies/</guid>
<description><![CDATA[Fail to Prepare – Prepare to Fail Software projects are HUGE, if you just sat down at your computer ]]></description>
<content:encoded><![CDATA[Fail to Prepare – Prepare to Fail Software projects are HUGE, if you just sat down at your computer ]]></content:encoded>
</item>
<item>
<title><![CDATA[Generating medical documents from models of clinical pathways]]></title>
<link>http://rakasax.wordpress.com/2009/11/22/generating-medical-documents-from-models-of-clinical-pathways/</link>
<pubDate>Sun, 22 Nov 2009 14:08:17 +0000</pubDate>
<dc:creator>rakasax</dc:creator>
<guid>http://rakasax.wordpress.com/2009/11/22/generating-medical-documents-from-models-of-clinical-pathways/</guid>
<description><![CDATA[As part of my last year in computer science studies, my master&#8217;s thesis is concerned with the ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>As part of my last year in computer science studies, my master&#8217;s thesis is concerned with the generating medical documents from models of  clinical pathways. A <em>clinical pathways</em> is defined as a list of task to do allowing to guide the care of patient affected by a pathology. It can be represented by graph with boxes (the tasks) link together by arrows defining the sequence in which the tasks happened. </p>
<p>From this clinical pathways, some information will be extract to supply a medical document bound to different kind of stakeholders (patient, doctor, physician, hospital attendant, &#8230;). The specificity of this generating process is that the extracted information will be fitted to each class of stakeholder. So a lot of complex filtration mechanisms will be defined to do this job. In order to closely specify these mechanisms, we need to prepare and practice some interviews of the stakeholders. For this master&#8217;s thesis these interviews will be  practice in cooperation with the service of radiotherapy of <a href="http://www.saintluc.be/">St Luc</a> (UCL) and the general hospital of <a href="http://www.chplt.be/chplt/">Peltzer</a> (Verviers) .</p>
<p>The main part of the work will consist in specification and designing of such a generator.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Year 2 &ndash; Software Engineering &ndash; An Introduction]]></title>
<link>http://computersciencesource.wordpress.com/2009/11/21/year-2-software-engineering-an-introduction/</link>
<pubDate>Sat, 21 Nov 2009 22:02:52 +0000</pubDate>
<dc:creator>Badgerati</dc:creator>
<guid>http://computersciencesource.wordpress.com/2009/11/21/year-2-software-engineering-an-introduction/</guid>
<description><![CDATA[What is Software Engineering Software Engineering is basically just an engineering approach to build]]></description>
<content:encoded><![CDATA[What is Software Engineering Software Engineering is basically just an engineering approach to build]]></content:encoded>
</item>
<item>
<title><![CDATA[Using The Minto Pyramid Principle (SCQA Technique) for effective storytelling / presentation]]></title>
<link>http://sollerthoughts.co.uk/2009/11/21/using-the-minto-pyramid-principle-scqa-technique-for-effective-storytelling-presentation/</link>
<pubDate>Sat, 21 Nov 2009 19:34:02 +0000</pubDate>
<dc:creator>Sollers</dc:creator>
<guid>http://sollerthoughts.co.uk/2009/11/21/using-the-minto-pyramid-principle-scqa-technique-for-effective-storytelling-presentation/</guid>
<description><![CDATA[During last few days I have been fortunate enough to participate in few meetings with our top manage]]></description>
<content:encoded><![CDATA[During last few days I have been fortunate enough to participate in few meetings with our top manage]]></content:encoded>
</item>
<item>
<title><![CDATA[SEI Honorary Membership]]></title>
<link>http://militarystudents.wordpress.com/2009/11/21/sei-honorary-membership/</link>
<pubDate>Sat, 21 Nov 2009 18:30:03 +0000</pubDate>
<dc:creator>militarystudents</dc:creator>
<guid>http://militarystudents.wordpress.com/2009/11/21/sei-honorary-membership/</guid>
<description><![CDATA[Carnegie Mellon&#8217;s Software Engineering Institute offers free membership to military personnel.]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignnone" title="SEI Carnegie Mellon" src="http://upload.wikimedia.org/wikipedia/en/thumb/2/21/Carnegie_Mellon_Software_Engineering_Institute.JPG/800px-Carnegie_Mellon_Software_Engineering_Institute.JPG" alt="" width="200" height="150" /><br />
Carnegie Mellon&#8217;s Software Engineering Institute offers free membership to military personnel.  Discounts are given for courses taken by active members.</p>
<p style="text-align:center;"><a title="SEI Member Benefits" href="http://www.sei.cmu.edu/membership/benefits/" target="_blank">http://www.sei.cmu.edu/membership/benefits/</a></p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
