<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Architecture</title>
        <link>http://www.drowningintechnicaldebt.com/DennisBottjer/category/2.aspx</link>
        <description>Architecture</description>
        <language>en-US</language>
        <copyright>Dennis Bottjer</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>Pig and Chicken</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2009/05/11/pig-and-chicken.aspx</link>
            <description>&lt;p&gt;Our project manager is getting her scrum master certification.  She reminded me of the classic pig and chicken story.  Here it is for the record:&lt;/p&gt;  &lt;p&gt;A Pig is someone who has skin in the game. &lt;b&gt;&lt;a href="http://www.mountaingoatsoftware.com?implementingscrum"&gt;Mike Cohn&lt;/a&gt;&lt;/b&gt; aptly refers to the people in that role as, “Having their Bacon on the line.”&lt;/p&gt;  &lt;p&gt;Pig roles are considered core team members. Performers. People who “do” work.&lt;/p&gt;  &lt;p&gt;Get it?&lt;/p&gt;  &lt;p&gt;I would consider the roles of both&lt;b&gt; &lt;a href="http://www.implementingscrum.com/cartoons/implementingscrum-20061030.html"&gt;Product Owner&lt;/a&gt;&lt;/b&gt; and the &lt;b&gt;&lt;a href="http://www.implementingscrum.com/cartoons/implementingscrum-20060925.html"&gt;ScrumMaster&lt;/a&gt;&lt;/b&gt; to be pigs on a team.&lt;/p&gt;  &lt;p&gt;A Chicken is someone who has something to gain by the Pigs performing, but in the end, really do not contribute day to day to “getting things&lt;b&gt; &lt;a href="http://www.implementingscrum.com/cartoons/implementingscrum-20061127.html"&gt;done&lt;/a&gt;&lt;/b&gt;.” Their “eggs” are a renewable resource, and many get laid (eggs that is).&lt;/p&gt;  &lt;p&gt;I get asked the following question by many people when starting to use Scrum:&lt;/p&gt;  &lt;p&gt;“Can I be a Pig and Chicken at the same time?”&lt;/p&gt;  &lt;p&gt;No.&lt;/p&gt;  &lt;p&gt;You cannot be a Pig and a Chicken at the same time.&lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/133.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2009/05/11/pig-and-chicken.aspx</guid>
            <pubDate>Tue, 12 May 2009 02:17:08 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2009/05/11/pig-and-chicken.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/133.aspx</wfw:commentRss>
        </item>
        <item>
            <title>How To Expose TFS 2008 Work Items using Web Access</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2009/03/17/how-to-expose-tfs-2008-work-items-using-web-access.aspx</link>
            <description>&lt;h2&gt;Issue: We wanted to exposes work items, bugs, etc. to the customer without exposing all the other Web Access Tabs such as Source, Documents, and Builds.&lt;/h2&gt;
&lt;h2&gt;Solution: Team System Web Access SP1&lt;/h2&gt;
&lt;p&gt;Team System Web Access SP1 adds an additional virtual directory named “wiwa” which stands for work item web access.  This new virtual directory is accessible on port 8090 by default and exposes a special work item only view which was exactly what we wanted. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://drowningintechnicaldebt.com/dennisbottjer/image_6B0B8E21.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" width="244" height="122" src="http://drowningintechnicaldebt.com/dennisbottjer/image_thumb_2A6941B2.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;TFS Web Access supports both forms based authentications and Windows Authentications.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://drowningintechnicaldebt.com/dennisbottjer/image_11013E78.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" width="244" height="122" src="http://drowningintechnicaldebt.com/dennisbottjer/image_thumb_1E67517E.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://drowningintechnicaldebt.com/dennisbottjer/image_2924A8D3.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" width="244" height="122" src="http://drowningintechnicaldebt.com/dennisbottjer/image_thumb_368ABBD9.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://drowningintechnicaldebt.com/dennisbottjer/image_6F3565E6.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" width="244" height="122" src="http://drowningintechnicaldebt.com/dennisbottjer/image_thumb_67A9F679.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://drowningintechnicaldebt.com/dennisbottjer/image_354622FA.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" width="244" height="122" src="http://drowningintechnicaldebt.com/dennisbottjer/image_thumb_22912943.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e25f24c5-acb9-4189-a52d-6bec6162373a" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/TFS+2008"&gt;TFS 2008&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/TSWA"&gt;TSWA&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/WIWA"&gt;WIWA&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/TFS+2008+Web+Access"&gt;TFS 2008 Web Access&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/112.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dennis Bottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2009/03/17/how-to-expose-tfs-2008-work-items-using-web-access.aspx</guid>
            <pubDate>Tue, 17 Mar 2009 11:20:12 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2009/03/17/how-to-expose-tfs-2008-work-items-using-web-access.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/112.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Office Business Applications Architecture Talk With Colin Cole</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/24/office-business-applications-architecture-talk-with-colin-cole.aspx</link>
            <description>&lt;p&gt;The following conversation is a conversation with Microsoft Financial Services Sr. Architect Colin Cole discussing Office Business Applications (OBA).  This is a new type of blog post for me and a &lt;a href="http://www.drowningintechnicaldebt.com/" mce_href="http://www.drowningintechnicaldebt.com/"&gt;Drowning In Technical Debt&lt;/a&gt; first.  I hope to conduct similar conversations in the future.  Finally, I would like to thank Colin for making time to have this conversation with me.&lt;br /&gt;&lt;br /&gt;dbottjer says: So I figured a good place to start would be with a definition.  What is OBA?  I did some research and here is what I came up with. Office Business Applications (OBA) use the Microsoft Office Suite of programs (Outlook, Word, Excel, etc) as a presentation layer for connecting line of business applications and executing business processes.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Cool, I have a few more things. &lt;br /&gt;&lt;br /&gt;dbottjer says: Ok great.&lt;br /&gt;&lt;br /&gt;Colin Cole says: OBA is kind of the centerpiece of what we call a "people ready" solution. &lt;br /&gt;&lt;br /&gt;Colin Cole says: It’s really about designing a solution to give the end user more control and agility to interact with the application.  Rather than having the IT defined screens with text boxes and validation. &lt;br /&gt;&lt;br /&gt;dbottjer says: The user has more control to personalize.&lt;br /&gt;&lt;br /&gt;Colin Cole says: You get instead something that brings data down to the tools you're familiar with (as you state), but also have server piece as well and that's where office server (SharePoint) comes in.  By exposing data through something like a SharePoint the business user can define their own reports bring the data down to a cube and open it up in excel.  Slice and Dice.  Create a dashboard. &lt;br /&gt;&lt;br /&gt;dbottjer says: Right&lt;br /&gt;&lt;br /&gt;Colin Cole says: Define their own KPI's.  Etc.  So like you state -- leveraging familiar tools, but also interacting with the solution data as appropriate for their role. &lt;br /&gt;&lt;br /&gt;dbottjer says: So this leads to the Problem. I thought that a good problem definition is: a fundamental inconsistency between how business systems work and how people work.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Agreed&lt;br /&gt;&lt;br /&gt;dbottjer says: Basically applications today are very rigid&lt;br /&gt;&lt;br /&gt;Colin Cole says: Absolutely, take an investment scenario for example.  The investor interacts with the canned application to analyze their portfolio.  But there's always 5-6 things they want to know to make business decisions that aren't available.  So what do they do?  They call IT and ask for a new report.  2 months later they get their report.  But by that time the need is totally different.  &lt;br /&gt;&lt;br /&gt;dbottjer says: Exactly.&lt;br /&gt;&lt;br /&gt;Colin Cole says: So the reality is they don't even bother....and just create their own one-off spreadsheets that aren't reused, etc.&lt;br /&gt;&lt;br /&gt;dbottjer says: So if they have an export feature they could export to Excel and do some quick processing there.&lt;br /&gt;&lt;br /&gt;dbottjer says: But that is an one-off.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Right.&lt;br /&gt;&lt;br /&gt;dbottjer says: So the idea of OBA is just to allow users to work in tools like Excel to begin with an augment excel with the missing services necessary for the problem domain.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Right, as well as interacting with dashboard/reporting type functionality bringing down tasks into Outlook, --like I showed you guys with our lending solution. Stuff like that.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;dbottjer says: I guess this leads us to why use OBA? OBA's offer a familiar interface – Most business users are familiar with at least one or more programs within the Microsoft Office Suite.  For example, Outlook is commonly used groupware that remains open throughout the business day on many corporate desktops.  It would seem like a win-win situation to take advantage of a program that users are already familiar with and that is running on their desktops.  Excel.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Exactly, why not plug a CRM tool into Outlook, since the sales folks are already familiar with the paradigm?&lt;br /&gt;&lt;br /&gt;dbottjer says: OBA integrates line of business applications such as Enterprise Resource Planning (ERP), Customer Relationship Management (CRM), and Supply Chain Management (SCM) in a presentation layer the user is already familiar with and productive in.  For example, a sales associate may depend heavily on Outlook to communicate with his/her clients.  The associate keeps To Do lists within Outlook and a calendar of all meetings.  Integrating the sales associate’s Outlook with CRM would centralize all the company’s customer information.  This would give the sales associate a place to add customer notes and perhaps a way to look up additional customer information such as support cases.&lt;br /&gt;&lt;br /&gt;Colin Cole says: Exactly.&lt;br /&gt;&lt;br /&gt;dbottjer says: So it seems like an efficient model for developing line of business applications? &lt;br /&gt;&lt;br /&gt;Colin Cole says: Right, obviously not for everything, but some % of apps it's a better fit.&lt;br /&gt;&lt;br /&gt;dbottjer says: Something else I noticed is that OBA is a great reuse story. For example, to implement an OBA solution you use an office product like Word, Excel, Outlook, SharePoint, etc. You also can use existing web services. Furthermore, you use VSTO and .NET.&lt;br /&gt;&lt;br /&gt;Colin Cole says: InfoPath plays nicely as well.  Especially the server forms stuff.  Very cool, each InfoPath form can have C# Code Behind, just like aspx.  It makes for a simple model to build professional looking web pages.&lt;br /&gt;&lt;br /&gt;dbottjer says: So OBA is a culmination of technologies to provide a business solution designed for how people work. It seems like OBA's have the potential to have a big impact in the line of business application space. &lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/67.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/24/office-business-applications-architecture-talk-with-colin-cole.aspx</guid>
            <pubDate>Thu, 24 May 2007 23:27:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/24/office-business-applications-architecture-talk-with-colin-cole.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/67.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Understanding Composite Application Block Series</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/15/understanding-composite-application-block-series.aspx</link>
            <description>&lt;p mce_keep="true"&gt;We've been using the Composite Application Block (CAB) and Smart Client Software Factory (SCSF) since they first emerged.  Most of my focus has been on the middle tier and service layer which our smart client front ends consume.  However, recently we have needed more manpower building smartparts.  As result I've been refreshing my knowledge of the CAB and SCSF.  I found found a great blog series &lt;a href="http://geekswithblogs.net/kobush/category/3702.aspx"&gt;http://geekswithblogs.net/kobush/category/3702.aspx&lt;/a&gt; on understanding the cab.  The series does a great job defining the CAB terminology and explaining the basic architecture.&lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/65.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/15/understanding-composite-application-block-series.aspx</guid>
            <pubDate>Tue, 15 May 2007 06:55:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/05/15/understanding-composite-application-block-series.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/65.aspx</wfw:commentRss>
        </item>
        <item>
            <title>WPF Views for CAB</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/04/12/wpf-views-for-cab.aspx</link>
            <description>Found this project &lt;a href="http://www.codeplex.com/wpfcab"&gt;http://www.codeplex.com/wpfcab&lt;/a&gt; on codeplex.  It strives to add WPF Views to the CAB.  This solution doesn't use crossbow and isn't using interop with WinForms. &lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/56.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/04/12/wpf-views-for-cab.aspx</guid>
            <pubDate>Thu, 12 Apr 2007 09:39:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2007/04/12/wpf-views-for-cab.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/56.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Best Practices Analyzer w/ ASP.NET Plugin</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/11/29/best-practices-analyzer.aspx</link>
            <description>&lt;p&gt;Many interesting projects are showing up on &lt;a href="http://www.CodePlex.com"&gt;www.CodePlex.com&lt;/a&gt; such as the [BestPracticesAnalyzer].  This tool is an engine for analyzing applications for Best Practices Compliance.  The tool is Shared Source and is architected using a "Plug-In" design.  This means the tool is easily extendible via new Plug-Ins and rules.&lt;/p&gt;
&lt;p&gt;This tool reminds me of FxCop but seems to analyze more than .NET Framework best practices.  It seems the goal of the tool is to be more specific and review the application based on the type of application it is.  For example, the [BestPracticesAnalyzer] comes bundled with an ASP.NET 2.0 Plug-In.  Perhaps in the future we will see a Smart Client Plug-In, a WF Plug-In, and a WCF Plug-In?&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/44.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/11/29/best-practices-analyzer.aspx</guid>
            <pubDate>Wed, 29 Nov 2006 13:48:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/11/29/best-practices-analyzer.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/44.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Systems Integration: No Assumptions</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/31/systems-integration-no-assumptions.aspx</link>
            <description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;There are many sayings about assumptions and I’ll let you fill in your favorite.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Regarding Systems Integration, the hard lesson I’ve learned is not to assume the other system will properly filter or handle a specific constraint.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;For example, Windows systems use a carriage-return-line-feed to mark the end-of-a-line.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;However, UNIX systems simply use a line-feed to mark the end-of-a-line.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;This is not to say that UNIX systems can’t handle files containing CRLF’s.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;It just means that most UNIX Systems just use an LF to mark the end-of-a-line. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?&gt;&lt;o:p&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;When writing code to integrate a Windows based system and a UNIX based system that transfers data through a file based feed, noting and handling this simple end-of-line difference can save much time and yes stress.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Having a simple tool like NotePad2 in your arsenal is a great way to inspect your feed at various stages to ensure compatibility between the systems.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;NotePad2 (&lt;/font&gt;&lt;a href="http://www.flos-freeware.ch/notepad2.html"&gt;&lt;font face="Arial"&gt;http://www.flos-freeware.ch/notepad2.html&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;) is a small, powerful replacement editor for “NotePad” which comes with Microsoft Windows.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;This tool is worth a look especially for its ability to show hidden characters such as those marking the end-of-line.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial" /&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Arial"&gt;To handle the case described above I would recommend implementing a simple scrubber that removes carriage returns (CR's) from the end of each line before sending the file to the UNIX System.  Here is an example scrubber:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
&lt;/p&gt;&lt;table style="BORDER-RIGHT: #e5e5e5 1px solid; BORDER-TOP: #e5e5e5 1px solid; BORDER-LEFT: #e5e5e5 1px solid; BORDER-BOTTOM: #e5e5e5 1px solid; BACKGROUND-COLOR: #f2f2f2" cellspacing="0" cellpadding="0" width="100%" border="0"&gt;
&lt;tbody&gt;
&lt;tr style="VERTICAL-ALIGN: top; LINE-HEIGHT: normal"&gt;
&lt;td style="WIDTH: 40px; TEXT-ALIGN: right"&gt;&lt;pre style="BORDER-RIGHT: #e7e7e7 1px solid; PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 11px; PADDING-BOTTOM: 2px; MARGIN: 0px; COLOR: gray; PADDING-TOP: 2px; FONT-FAMILY: courier new"&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;6&lt;br /&gt;7&lt;br /&gt;8&lt;br /&gt;9&lt;br /&gt;10&lt;br /&gt;11&lt;br /&gt;12&lt;br /&gt;13&lt;br /&gt;14&lt;br /&gt;15&lt;br /&gt;16&lt;br /&gt;17&lt;br /&gt;18&lt;br /&gt;19&lt;br /&gt;20&lt;br /&gt;21&lt;br /&gt; &lt;/pre&gt;&lt;/td&gt;
&lt;td&gt;&lt;pre style="PADDING-RIGHT: 2px; PADDING-LEFT: 8px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-TOP: 2px"&gt;&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System.IO;&lt;br /&gt;&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System.Text.RegularExpressions;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; UnixStripperActivity&lt;br /&gt;{&lt;br /&gt;    &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; SripCarriageReturn(&lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; filePath)&lt;br /&gt;    {&lt;br /&gt;         &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; output;&lt;br /&gt;         FileStream fs &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; File.OpenRead(filePath);&lt;br /&gt;         StreamReader reader &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; StreamReader(fs);&lt;br /&gt;         &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; input &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; reader.ReadToEnd();&lt;br /&gt;         reader.Close();&lt;br /&gt;         fs.Close();&lt;br /&gt;         output &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; Regex.Replace(input, &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;@"\r"&lt;/span&gt;, &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;""&lt;/span&gt;, RegexOptions.Multiline);&lt;br /&gt;         FileStream fsw &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; File.OpenWrite(filePath);&lt;br /&gt;         StreamWriter sw &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; StreamWriter(fsw);&lt;br /&gt;         sw.Write(output);&lt;br /&gt;         sw.Close();&lt;br /&gt;         fsw.Close();&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/40.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/31/systems-integration-no-assumptions.aspx</guid>
            <pubDate>Tue, 31 Oct 2006 07:51:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/31/systems-integration-no-assumptions.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/40.aspx</wfw:commentRss>
        </item>
        <item>
            <title>IBM's Web Service Definition</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/11/web-service-definition.aspx</link>
            <description>&lt;p&gt;&lt;span class="586461902-09102006"&gt;IBM's Definition of Web Service: (A Web Service is a Web Application)&lt;/span&gt;&lt;/p&gt;&lt;span class="586461902-09102006"&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;i&gt;Web services are a new breed of Web application. They are self-contained, self-describing, modular applications that can be published, located, and invoked across the Web. Web services perform functions, which can be anything from simple requests to complicated business processes...Once a Web service is deployed, other applications (and other Web services) can discover and invoke the deployed service.&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/34.aspx" width="1" height="1" /&gt;</description>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/11/web-service-definition.aspx</guid>
            <pubDate>Wed, 11 Oct 2006 15:13:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/11/web-service-definition.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/34.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Defining Enterprise Software Development</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/07/defining-enterprise-software-developement.aspx</link>
            <description>&lt;p&gt;The term "Enterprise" is used frequently in professional software development conversations.  Many companies use "Enterprise" to describe products.  For example, Microsoft products using the term "Enterprise," include Windows 2003 Enterprise, SQL Server 2005 Enterprise, or ISA Enterprise.  But what does "Enterprise" really mean in the context of software development projects?&lt;/p&gt;&lt;p&gt;Dictionary.com defines Enterprise as "a project undertaken or to be undertaken, esp. one that is important or difficult or that requires boldness or energy."&lt;/p&gt;&lt;p&gt;"Enterprise" Software Development Projects and "Enterprise" Software Suites aim to solve especially difficult or complex problems of great importance.  Since these are especially difficult problems, solving them will likely aggressively consume resources such as time, money, specialized skills, etc.&lt;/p&gt;&lt;table border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="71"&gt;&lt;p&gt;&lt;strong&gt;Business &lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="133"&gt;&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="90"&gt;&lt;p&gt;&lt;strong&gt;Application&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="265"&gt;&lt;p&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="71"&gt;&lt;p&gt;Small&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="133"&gt;&lt;p&gt;Family Restaurant&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="90"&gt;&lt;p&gt;Accounting&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="265"&gt;&lt;ul type="disc"&gt;&lt;li&gt;1 Physical Checking w/ several system accounts like payroll, office expenses, etc.&lt;/li&gt;&lt;li&gt;Credit Card&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="71"&gt;&lt;p&gt;Large&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="133"&gt;&lt;p&gt;National Bank&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="90"&gt;&lt;p&gt;Accounting&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="265"&gt;&lt;ul type="disc"&gt;&lt;li&gt;Customer Accounts&lt;/li&gt;&lt;li&gt;Corporate Accounts for Project Funding&lt;/li&gt;&lt;li&gt;Pension/Retirement Accounts &lt;/li&gt;&lt;li&gt;Mortgages / Loans&lt;/li&gt;&lt;li&gt;Investment Accounts&lt;/li&gt;&lt;li&gt;Payroll (1000's of employees)&lt;/li&gt;&lt;li&gt;Taxes&lt;/li&gt;&lt;li&gt;Credit Cards&lt;/li&gt;&lt;li&gt;Financial Planning (Billing)&lt;/li&gt;&lt;li&gt;Broker (Billing)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Meeting the accounting needs of a small business such a family owed restaurant could easily be done with off-the-shelf accounting software such as Quickbooks or Microsoft Money.  These products could manage a handful of physical bank accounts, inventory and invoicing.  I've also known several small businesses to just use an Excel spreadsheet to mimic a check book register and call it good.&lt;/p&gt;&lt;p&gt;However, meeting the accounting needs of a large business such as a national bank is a large complex problem.  Banks issues one or more accounts to their customers which must be tracked.  Banks make money by loaning money to customers and charging interest.  So these interest payments are deposited into an account belonging to the bank.  Next, a large National Bank is likely to have thousands of employees which suggest separate accounts for payroll, retirement, etc.  It is likely that a National Bank would offer services beyond savings and loan.  For example, a National Bank may offer brokerage services and credit cards.  These services are carefully tracked and reported on the bank's financial statements such as income statement and balance sheet.  &lt;/p&gt;&lt;p&gt;It is clear that a National Bank has much information to keep track of from many sources.  Put another way "Enterprise" Systems tend to manage much information/data from many sources. &lt;/p&gt;&lt;p&gt;In the case of our small business accounting system one Wintel PC could likely store many years worth of accounting information for that business.  However, one Wintel PC would clearly not do the job for our National Bank.  The National Bank has so much information to store which cannot be lost for legal reasons that we need to use redundant backed-up servers.  Furthermore, it is probably safe to assume that a single employee in the accounting department of our National Bank cannot handle the entire accounting workload alone.  As a result the likely infrastructure is an accounting team working together using accounting software installed on servers in a data center.  These services are equipped to handle the volume of transactions and load of many users using the accounting system, all day and everyday as opposed to a small business with one user updating the system when he/she gets time.&lt;/p&gt;&lt;p&gt;A family run restaurant likely has one person managing the accounting records and security isn't likely to be a high concern.  However, the National Bank has a legal responsibility to the bank's stakeholders to maintain the tightest security possible.  Account balances and personal information associated with loans, checking accounts, etc. are confidential and illegal access to this information will sabotage the trust relationship between the bank and stake holders. &lt;/p&gt;&lt;p&gt;Finally, an accounting system is most likely not mission-critical to a family run business.  The accounting system can most likely be a few days behind as long as the owners/manager knows how much money is in the account to keep suppliers and employees paid.  However, if the accounting system crashes at the National Bank it can cost the bank millions of dollars.  For example, invoices/bills may be late for mailing.  Data could become old and corrupt causing a maintenance nightmare.&lt;/p&gt;&lt;p&gt;The term "Enterprise" in the context of software development means:&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt;Complex Problems&lt;/li&gt;&lt;li&gt;Large amounts of data&lt;/li&gt;&lt;li&gt;Mission Critical&lt;/li&gt;&lt;li&gt;Strong Security&lt;/li&gt;&lt;li&gt;Well Performing&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/30.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>dbottjer</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/07/defining-enterprise-software-developement.aspx</guid>
            <pubDate>Sun, 08 Oct 2006 04:21:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/07/defining-enterprise-software-developement.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/30.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Enterprise Namespace Terminology</title>
            <link>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/03/enterprise-namespace-terminology.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;Service-Oriented Architecture&lt;/strong&gt; is the art of modeling an organization's business processes, as a well-factored portfolio of network-addressable business components. &lt;/p&gt;&lt;p&gt;[MSSOADef]&lt;/p&gt;&lt;p&gt;A &lt;strong&gt;Business Process&lt;/strong&gt; is a collection of related structural activities that produce something of value to the organization, its stake holders or its customers &lt;/p&gt;&lt;p&gt;[BusinessProcessDef]&lt;/p&gt;&lt;p&gt;A &lt;strong&gt;Service Layer&lt;/strong&gt; defines an application's boundary [Cockburn PloP] and its set of available operations from the perspective of interfacing client layers. It encapsulates the application's business logic, controlling transactions and coordinating responses in the implementation of its operations. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.martinfowler.com/eaaCatalog/serviceLayer.html"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;[MartinFowlerServiceLayer] &lt;/p&gt;&lt;p&gt;An &lt;strong&gt;LOB&lt;/strong&gt; (line-of-business) application is one of the set of critical computer applications that are vital to running an enterprise, such as accounting, supply chain management, and resource planning applications. LOB applications are usually large programs that contain a number of integrated capabilities and tie into databases and database management systems. &lt;/p&gt;&lt;p&gt;[LOBDef]&lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/DennisBottjer/aggbug/29.aspx" width="1" height="1" /&gt;</description>
            <guid>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/03/enterprise-namespace-terminology.aspx</guid>
            <pubDate>Tue, 03 Oct 2006 10:05:00 GMT</pubDate>
            <comments>http://www.drowningintechnicaldebt.com/DennisBottjer/archive/2006/10/03/enterprise-namespace-terminology.aspx#feedback</comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/DennisBottjer/comments/commentRss/29.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
