<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Justice League Blog &#187; Software Quality</title>
	<atom:link href="http://www.cigital.com/justice-league-blog/category/software-quality/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cigital.com/justice-league-blog</link>
	<description></description>
	<lastBuildDate>Fri, 04 May 2012 18:54:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Scrap Static Tools, just &#8220;Fix your code&#8221;?</title>
		<link>http://www.cigital.com/justice-league-blog/2011/02/23/scrap-static-tools-just-fix-your-code/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/02/23/scrap-static-tools-just-fix-your-code/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 15:32:13 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[BSIMM]]></category>
		<category><![CDATA[Security Features]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Security Touchpoints]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=541</guid>
		<description><![CDATA[Recently, Gary and I collaborated on an InformIT article on static analysis. you will find our observations regarding static analysis shared by others. It&#8217;s encouraging to note that Flash Sheridan observes many of the same difficulties and more formally treats them in his ISSRE &#8217;10 publication. It&#8217;s worth a read. A few commentators shared some [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, Gary and I collaborated on an <a href="http://www.informit.com/articles/article.aspx?p=1680863">InformIT article</a> on static analysis.</p>
<p>you will find our observations regarding static analysis shared by others. It&#8217;s encouraging to note that Flash Sheridan observes many of the same difficulties and more formally treats them in his <a href="http://pobox.com/~flash/Static_Analysis_Deployment_Pitfalls.pdf">ISSRE &#8217;10 publication</a>.  It&#8217;s worth a read. </p>
<p>A few commentators shared some decent points I wanted to address in a comment. I&#8217;m cross-posting my commentary here:</p>
<p>Comments treating the application of static tools as a distinct (and unfavorable) alternative to &#8220;fixing your SDLC&#8221; disappoint me, especially from the OWASP community (of which I am a contributing paid member). In fact, the community&#8217;s OpenSAMM project actively prescribes use of static analysis in not one but four (4) unique activities. So, both BSIMM and SAMM see static analysis as a part of fixing one&#8217;s SDL. **Note that in both models, all activities are not compulsory.</p>
<p>&#8220;Fix your code&#8221; is another red-herring alternative to static analysis. I believe static analysis inseparable from effective usage of a secure programming toolkit (such as OWASP&#8217;s ESAPI or an organization&#8217;s own toolkit)  because static analysis tools can meet the need for organizations to 1) detect consistent and thorough use of secure APIs (and non-use of dangerous ones) as well as 2) detect incorrect usage of such APIs (whether through broken call-order, un-paired functions, or other bugs). We shouldn&#8217;t forget, as Mr. Manico indicates, 3) running static tools on these security toolkits themselves finds problems that careful review may not otherwise have found. </p>
<p>So, secure SDL models indicate usage and we&#8211;as a community&#8211;see use in these tools in helping remind developers how to correctly build secure code. I think we have to agree static analysis tools find exploitable bugs (even though sometimes in an overly expensive or time-consuming way). So, I think we&#8217;re stuck with them as a &#8216;best practice&#8217; in the short term, however little some of us may like them. To dynamic vendors out there, I&#8217;d even go so far as saying, &#8220;Early adopters have begun to over-rely on static means to find problems more effectively/efficiently found with dynamic tools. Don&#8217;t worry, the ones I&#8217;m working with will begin to tilt the balance back using assessment data&#8221;.</p>
<p>I would like to put a face-and-name on the key notion that almost all commentators have thus-far touched: the static analysis tool that gets used by a majority of application developers out there, in the future, will likely not look like the ones we have today.  And that&#8217;s fine too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/02/23/scrap-static-tools-just-fix-your-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>QA and Security: It&#8217;s not about exploits</title>
		<link>http://www.cigital.com/justice-league-blog/2009/02/04/qa-and-security-its-not-about-exploits/</link>
		<comments>http://www.cigital.com/justice-league-blog/2009/02/04/qa-and-security-its-not-about-exploits/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 19:26:20 +0000</pubDate>
		<dc:creator>justiceadmin</dc:creator>
				<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=122</guid>
		<description><![CDATA[This is a guest post from Paco Hope, Technical Manager at Cigital. I read a blog entry about &#8220;re-aligning training expectations for QA.&#8221; It has some useful points that both developers and so-called &#8220;security people&#8221; need to hear. I disagree with some implicit biases, however, and I think we need to get past some stereotypes [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a guest post from Paco Hope, Technical Manager at Cigital.</em></p>
<p>I read a blog entry about &#8220;<a href="http://www.cgisecurity.com/2009/02/the-security-industry-needs-to-realign-its-training-expectations-for-qa.html">re-aligning training expectations for QA</a>.&#8221; It has some useful points that both developers and so-called &#8220;security people&#8221; need to hear. I disagree with some implicit biases, however, and I think we need to get past some stereotypes that sneak out in the article.</p>
<p>Bias #1, obviously, is the focus on the web. Despite its omnipresence, there is more non-web software than web software in the world, and non-web software does more important stuff than all the web software combined. The role of security in <em>software</em> testing is vital, and the presence or absence of web technologies does not change that. Despite writing a book on Web Security Testing, I know my place in the universe. Quality assurance and software testing are disciplines far older than the web, and their mission is so much bigger than finding vulnerabilities.</p>
<p>Bias #2 is vulnerabilities über alles. By talking about weaving vulnerabilities into security test plans, we&#8217;ve overlooked the first place where security goes into the QA process: test strategy. Look at any of the prominent folks in QA (James and Jon Bach, Michael Bolton, Rex Black, Cem Kaner), the people I&#8217;m privileged to share podiums with at QA conferences like STAR West, STAR East, and Better Software, and you&#8217;ll see that security is part of the overall risk-based testing strategy. Risk-based testing has been around for a really long time. Longer than the web.</p>
<p>Before anyone talks about vulnerabilities to test for, we have to figure out what the business cares about and why. What could go wrong? Who cares? What would the impact be? Answers to those questions drive our testing strategy, and ultimately our test plans and test cases.</p>
<p>Bias #3 is that idea that a bunch of web vulnerabilities are equivalent in impact to the business. That is, you just toss as many as you can into your test plan and test for as much as you can. This isn&#8217;t how testing is prioritized.</p>
<p>You don&#8217;t organize testing based on which top X vulnerabilities are likely to affect your organization (as the blog suggests). Likelihood is one part of the puzzle. Business impact is the part that is missing. You prioritize security tests by risk severity—that marriage of likelihood and impact to the business. If I have a whole pile of very likely attacks that are all low or negligible impact, and I have a few moderately likely attacks that have high impact, I should prioritize my testing effort around the ones with greater impact to my business.</p>
<p>Bias #4 is the treatment of testers like second class citizens. In the blog article, developers are &#8220;detail oriented&#8221; have a &#8220;deep understanding of flows.&#8221; Contrast this with QA who merely understand &#8220;what is provided to them.&#8221; They sound impotent, as if all they can do is what they&#8217;re told. Software testing, despite whatever firsthand experience the author may have, is a mature discipline. It is older and more formalized than &#8220;security&#8221; as a discipline. Software testing is older than the Internet or the web. If software testing as a discipline has adopted security too slowly, given security&#8217;s rise to the forefront in the marketplace, that might be a legitimate criticism. But I don&#8217;t approve of the slandering QA by implying that they just take what&#8217;s given them and execute it. QA is hard and there are some really bright minds working in that field.</p>
<p>As someone who has been training in risk-based security testing for several years now, I totally agree with some points, but very much disagree with others. I agree that the &#8220;bug parade&#8221; (as we call it) of top X vulnerabilities to find is the wrong way to teach security testing. Risk management, though, has been a fundamental part of mainstream QA for a very long time. Likewise, risk management is the same technique that good &#8220;security people&#8221; use to prioritize their results. Risk management is certainly how the business is going to make decisions about which issues to remediate and when. Risk management is what ties this all together.</p>
<p>If there&#8217;s something that QA needs to learn that they&#8217;re not already learning, it&#8217;s the weaving of &#8220;security&#8221; into the risk management techniques they already know how to do. If testers fall short in their ability to apply risk management techniques, then they are falling short against the QA yardstick, there&#8217;s nothing particularly security-related in this observation. If they are applying mature QA practices with modern risk management, but are not adequately addressing the software-induced business risks facing their stakeholders, then some security training might be in order. That security training should be built on the foundation of modern QA practice, including risk-based testing.</p>
<p>So, in some ways we agree: speak the lingo of QA. But in other ways we disagree. I think the original article fails to give credit to the decades of substantial research and practice in QA. In other words, it&#8217;s a lot more than speaking the language. It is standing on the shoulders of giants, not their toes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2009/02/04/qa-and-security-its-not-about-exploits/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sharing architecture ideas with the community</title>
		<link>http://www.cigital.com/justice-league-blog/2007/08/31/sharing-architecture-ideas-with-the-community/</link>
		<comments>http://www.cigital.com/justice-league-blog/2007/08/31/sharing-architecture-ideas-with-the-community/#comments</comments>
		<pubDate>Fri, 31 Aug 2007 19:26:54 +0000</pubDate>
		<dc:creator>justiceadmin</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[Defects, Bugs, and Flaws]]></category>
		<category><![CDATA[Enterprise Software Security]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security Touchpoints]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2007/08/31/sharing-architecture-ideas-with-the-community/</guid>
		<description><![CDATA[We’re pleased to have a guest blogger for this Justice League entry. Michael Cohen is a Senior Security Consultant at Cigital where he is responsible for leading, assessing, architecting and implementing secure software for Fortune 500 companies. Michael also works with Cigital teams on enterprise-wide security solutions intended to improve an organization&#8217;s security posture and [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>We’re pleased to have a guest blogger for this Justice League entry.  Michael Cohen is a Senior Security Consultant at Cigital where he is responsible for leading, assessing, architecting and implementing secure software for Fortune 500 companies. Michael also works with Cigital teams on enterprise-wide security solutions intended to improve an organization&#8217;s security posture and help them meet audit and regulatory requirements.  Michael just gave a talk to the Washington, DC <a href="http://www.iasahome.org/">IASA chapter</a> that was well received, and is now the subject of this entry:</p></blockquote>
<p>When I hear software architects talk about the architecture they’ve crafted to depict the various structures and behaviors of a system, they point out interesting techniques they’ve applied that best convey how the system should work and be put together. An architect’s enthusiasm for the little details reveals a great sense of accomplishment and creativity, but most of all good architecture conveys sorely needed information in order to help those who develop, test and maintain the system. Sharing the tips and tricks gathered from the field is what helps our community move forward to building better software. A classic example of this is the <a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612"><em>Design Patterns</em></a> book written by the Gang of Four. </p>
<p>Not too long ago I was also sharing my ideas on architecture and security at a local IASA chapter here in Washington, DC.  The group was a crowd of like-minded architects who work for large Fortune 500 companies, government agencies, and promising local startups. My topic was pragmatic secure architecture.  The basic idea was to look at some real ways to incorporate security into architecture using Cigital’s risk management and threat modeling practices. You can find the <a href="http://www.cigital.com/presentations/pragmatic/">slides for my presentation here</a>.</p>
<p>For the uninitiated, threat modeling is a way of depicting where threats (think malicious people, attackers, and so on) can touch a software architecture and how they may be able to exploit critical assets using various attack patterns.  Threat modeling is valuable for determining an architecture’s security posture. In addition, identifying risks in user requirements and business goals, and tying those risks to a threat model results in a map of how design flaws impact the system, its users and the overall business. Threat models coupled with identified high-level risks are a great way to get other stakeholders involved with security decisions.  And mind you, these are stakeholders who would otherwise be unable to contribute and supply critical feedback. </p>
<p>The attendees at the chapter meeting were glad they attended the presentation and heard something worthwhile that they could use in their daily architectural activities.  Many people brought up interesting points about how to best protect critical assets, what a real risk to a system is, and what is considered a good enough mitigation. What I found particularly interesting was how threat modeling provided a way for everyone to contribute interesting ideas about where security vulnerabilities may exist and how they could be mitigated (which, if you think about it, is the entire point of threat models).  </p>
<p>I encourage any architect to share their ideas on building a better architecture with their peers, whether it be at a local organization or at a conference. As a senior security consultant at Cigital, I like to take shared ideas and mold them into my own unique way of thinking about the world.   The best results come when I can apply new ideas to my daily activities as I help our customers assess and create more secure software. </p>
<p>… On an entirely separate note, McGraw still owes me money. I’m watching you, Gary.<br />
[tags]software architecture,software quality,software security,touchpoints[/tags] </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2007/08/31/sharing-architecture-ideas-with-the-community/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Janus</title>
		<link>http://www.cigital.com/justice-league-blog/2007/03/30/janus/</link>
		<comments>http://www.cigital.com/justice-league-blog/2007/03/30/janus/#comments</comments>
		<pubDate>Fri, 30 Mar 2007 18:28:02 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2007/03/30/janus/</guid>
		<description><![CDATA[I was part of a panel at a university recently speaking to prospective computer science students. The panel members were from industry &#8212; a few of the biggest companies and few smaller ones. We each had ten minutes to speak before QA, so I stripped my talk down to two simple points. The first point [...]]]></description>
			<content:encoded><![CDATA[<p>I was part of a panel at a university recently speaking to prospective computer science students.  The panel members were from industry &#8212; a few of the biggest companies and few smaller ones.  We each had ten minutes to speak before QA, so I stripped my talk down to two simple points.  The first point was that IT is fun.  We truly build amazing things.  I’ve been in the business 35 years, and I have never been bored.  Each day offers a new challenge.   The other point was that there will be plenty of jobs for decades to come just trying to get things right.  Software sucks.  No product on the market has more defects than software and no projects have a failure rate close to that of IT development work.  </p>
<p>The next generation can live off the argument that they can certainly do better than the fogies doing the work now.  The challenge for them, as it was for us we made the same claim, is living up to the bold promises.  I have been through five distinct new approaches to building software, each designed to deliver better products and better delivery management.  Each has moved the ball forward a bit, but we still have a LONG way to go.  </p>
<p>Just how bad are we?  There are many studies of failure in IT, but the results are all over the place.  The most optimistic estimate I can find says that about 30% of projects fail.  When I mention that number, a fair number of people tell me it is too low, but let’s grant ourselves the benefit of the doubt.  We fail 30% of the time.</p>
<p>How does that compare to other industries?  Before we take on the masters of quality lets start with an easier opponent – how about used car salesmen?  Every year in United States, about 45 million used cars are sold.  The Feds estimate that the odometers of about 450,000 of these have been tampered with, and that in another 500,000 cases the seller fails to disclose a serious known defect.  That works out to a failure rate around 2%.   </p>
<p>We in the IT business are 15 times worse than used-car salesmen.  Yet, the demand for our products and services is tremendous.  IT related professions dominate the top-20 positions on the US Department of Labor’s list of high-growth jobs.  Why is this so, if our products are so bad?</p>
<p>The answer is that software, bugs and all, delivers real value.  We would love our programs to work without error, to never crash, to never need patching, but even with these sorts of problems, software does amazing things.  Once in awhile we all encounter a program that makes us go wow.  Remember the first time you used online mapping?  That was a wow, but we quickly get bored.  The amazing becomes commonplace &#8212; part of the wallpaper.  That’s sad.   I wish it was possible to flip a switch, and show ourselves and the world juts how far we’ve come.  It would be a cruder, poorer, and much more boring world without us.  </p>
<p>That said, software is still crap – amazing crap so customers will continue buying, but crap nonetheless and we owe them better.  The challenge of making software better is a difficult one.  All of the Justice League blog entries are, at root, about this one subject.  Sometimes we write about broad issues other times about the very specific, but our objective is always to make software better.  Better functionality, more reliable, and more secure.</p>
<p>This blog, rather than being about solutions, is about the intriguing, challenging, and sometimes frustrating dichotomy of software, it is both amazing, with a capacity to dazzle and inspire while it is also mundane – just a bit of bug ridden code.   The Roman God Janus has two faces – one facing forward, one backward.  </p>
<p>Building software is much the same.  We constantly envision the future and it drives us to imagine and to realize that imagination we build ever more complicated systems.  There is the rub.  The other face of Janus looks back to the past.  In IT that is the hard job of not making the software, but making it good.  Janus was the god of doorways, a wonderful image for IT.  The doorway to the future in IT rests on equal measure on vision and quality, looking forward to what can be done and backwards at what we have.  We must aspire to be Janus.</p>
<p>A final observation that will set the stage for a future blog entry.   Our troubles lie in the imbalance between the forward looking face and the backward.  There is so much potential in software that we are constantly reaching farther; farther in some cases than we can deliver.   It is the reaching that gets us unto trouble, but it also the reaching that keeps us energized and fresh, and once in while makes our customers say “Wow.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2007/03/30/janus/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My Reflections on Trust</title>
		<link>http://www.cigital.com/justice-league-blog/2007/03/05/my-reflections-on-trust/</link>
		<comments>http://www.cigital.com/justice-league-blog/2007/03/05/my-reflections-on-trust/#comments</comments>
		<pubDate>Mon, 05 Mar 2007 19:35:49 +0000</pubDate>
		<dc:creator>sammy</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[General Interest]]></category>
		<category><![CDATA[Software Quality]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2007/03/05/my-reflections-on-trust/</guid>
		<description><![CDATA[I was a young Air Force lieutenant when Ken Thompson released his 1984 piece, Reflections on Trusting Trust. Assigned to a data center in the Pentagon, I was working on the B2 evaluation of Honeywell Multics with the fine folks at the National Computer Security Center and contributing some words to the growing Rainbow Series [...]]]></description>
			<content:encoded><![CDATA[<p>I was a young Air Force lieutenant when Ken Thompson released his 1984 piece, <a href="http://www.acm.org/classics/sep95/"><em>Reflections on Trusting Trust</em></a>. Assigned to a data center in the Pentagon, I was working on the B2 evaluation of Honeywell Multics with the fine folks at the National Computer Security Center and contributing some words to the growing Rainbow Series books. We were in ongoing debates over the meaning of phrases such as &#8220;top-level specification&#8221; and &#8220;on behalf of&#8221; in the Orange Book (a mail thread that went on for several years) and trying to perpetuate the wave of talking about &#8220;trusted computers&#8221; instead of &#8220;secure computers.&#8221;</p>
<p>We talked a lot about &#8220;how much trust do I get for how much analysis and testing&#8221; and &#8220;how much trust do I need for certain scenarios, like allowing a computer to automatically downgrade data from Top Secret to Secret.&#8221; These kinds of concepts ended up in capability maturity models, testing models, and risk models.</p>
<p>I took Ken&#8217;s words to heart and quickly made up my mind that we could really only move the trust bar up slightly (like from 10% to 20%), even with enormous expense. It was immediately obvious that getting up to, say, 75% would require so much calendar time that no one would wait for the result (and I think later experience with Orange Book evaluations, Common Criteria evaluations, and related programs have borne this out). Between hardware, software, firmware&#8212;and the completely unpredictable human factors&#8212;we really had no idea how even the most reviewed code would operate in relatively controlled environments (e.g., in a government facility where everyone was cleared), much less how it would operate in a hostile environment (hostile mobile code was not really a problem yet) where people might actively be up to nefarious deeds.</p>
<p>Why should you care about my reminiscing? Well, because I think a flavor of trust is still a major problem today and it&#8217;s costing everyone a bunch of money that could be put into real long-term solutions.</p>
<p>As I talk with my operations friends these days, I&#8217;m seeing a subtle shift in their thinking. They&#8217;re thinking more and more about appliances (web application firewalls, IDS and stuff like that), but not for direct security value. They seem to be thinking that since the software they install, whether purchased or built internally, will certainly have security problems, they have to install more bells and whistles so that operations can protect itself. This is beyond healthy paranoia; it&#8217;s an unhealthy distrust of people who should be active partners, even if it&#8217;s been earned by years of spectacular failures.</p>
<p>Then I started wondering why so many development organizations throw out requirements documents from product managers and just start over. Is it only because the requirements are so bad, or is it also because the developers just don&#8217;t trust the managers to know what they&#8217;re talking about?</p>
<p>And why do so many managers try to tell development organization how to create applications, instead of simply what the creation must accomplish? Do they simply not trust the developers to be aware of business objectives, or do they just not understand the creative processes involved?</p>
<p>And so on.</p>
<p>What an enormous amount of wasted cycles that could be used to greater organizational good.</p>
<p>We may never get to the point where we can implicitly trust software. But, can&#8217;t we at get to the point where we can trust each other?</p>
<p>[tags]software security, software quality[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2007/03/05/my-reflections-on-trust/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I Hate to Admit It, but Those Network Guys Are Pretty Smart</title>
		<link>http://www.cigital.com/justice-league-blog/2007/02/28/i-hate-to-admit-it-but-those-network-guys-are-pretty-smart/</link>
		<comments>http://www.cigital.com/justice-league-blog/2007/02/28/i-hate-to-admit-it-but-those-network-guys-are-pretty-smart/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 22:22:52 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[SOA and Web 2.0]]></category>
		<category><![CDATA[Software Quality]]></category>

		<guid isPermaLink="false">http://www.cigital.com/blog/2007/02/28/i-hate-to-admit-it-but-those-network-guys-are-pretty-smart/</guid>
		<description><![CDATA[I am strong advocate of service oriented architectures. I have seen them work&#8212;not in theory, not in demonstration, but in real, deployed, mission critical applications. In sitting down to write this blog entry I was going to do yet another &#8220;SOA &#8211; Hype vs. Reality&#8221; essay. I&#8217;ve written a lot of these over the past [...]]]></description>
			<content:encoded><![CDATA[<p>I am strong advocate of service oriented architectures. I have seen them work&#8212;not in theory, not in demonstration, but in real, deployed, mission critical applications.  In sitting down to write this blog entry I was going to do yet another &#8220;SOA &#8211; Hype vs. Reality&#8221; essay.  I&#8217;ve written a lot of these over the past four or five years, and, frankly, theses pieces are getting boring to write and boring to read. Its just not a burning issue &#8212; the next generation architecture debate is over, and SOA won.</p>
<p>Sure, most of what you see when you walk into a big IT shop is still monolithic applications, but those are echoes of IT history&#8212;dead men walking.  SOA won because it is a natural evolution and logical extension of the way we have been building systems since Grace Hopper showed us the light. Our first programs looked monolithic, but only on the surface. We learned that good practice requires us to decompose our programs into procedures, subroutines, (or whatnot depending on the language) that had limited functionality with well-defined interfaces&#8212;nothing too large to fit in the space between our ears.  Code reuse as the Holy Grail.      </p>
<p>SOA is just the extension of good programming practice except that high bandwidth, reliable, standards-based networks and emergent standards for things like message transport, service registration and service invocation mean that our systems need not operate in a single memory space. The acronym SOA may not survive. Software sales dudes always come up with new names to sell a polished up version of the same-old, same-old, but service-oriented architecture and, more importantly, service-oriented architecting is here to stay; its centrality in future systems is as inevitable as the sun rising in the east.</p>
<p>With that rant out of the way, what I want to say here is that there are unique security issues related to security.  I plan to discuss these in forthcoming blog entries, but I have a meeting today with the Ettienne Reinecke, CTO of Dimension Data, one of the best networking companies in the business.  I have been thinking hard about how the guys like him play in SOA beyond giving us reliable pipes. Let me share my thoughts. </p>
<p>Networks work really well&#8212;software not so well. Why? I suggest that the success of the networks lies in three factors&#8212;componentization, standardization and that management.   Networks are not monolithic.  They are composed of lots of individual pieces, each with a well-defined function (sound like SOA?). The performance and interfaces of each component type are very well-defined by standards. This means that different components can be integrated with moderate ease and some reasonable expectation that they will work together.  It also means that the people who develop the components can continue to refine their designs&#8212;to polish them until they are sparkle, making each generation, faster, better and cheaper&#8212;as long as they keep the interface constant.  </p>
<p>Finally, the network guys assume that the network isn&#8217;t going to work. They assume that components will break, so they instrument the network to monitor its performance and they watch it carefully. Good network engineers also design for graceful degradation&#8212;the ability to lose performance in increments rather than catastrophically (think escalators vs. elevators). We on the software side can learn from this. The presumption of fallibility and the capacity for graceful degradation are alien concepts in the software world. They shouldn&#8217;t be.  </p>
<p>In moving to SOA, we are componentizing. In adopting web-service standards we are standardizing, though our standards are much less mature than those for networks. Good for us&#8212;we have to two of the lessons down&#8212;componentization and standardization.  </p>
<p>Let&#8217;s take the final step, and build our SOAs with the assumption that they will fail (a safe assumption) and engineer-in monitoring and the capacity for graceful degradation from the beginning. We can &#8220;ping&#8221; network components to see if they are alive, query their state, test them and change their state during operation. We should be doing this for SOA services. Ultimately, system operators should be able to look at panels like those now used for network operations, showing in color codes the status of each service.  They should be able to detect problems and fix them on the fly.  </p>
<p>Essentially, as we move towards SOA we are shifting from thinking of our systems as discrete entities to thinking of a computing ecosystem that runs 24 hours a day, 365.2564 days per year (more or less). This model is completely unnecessary for a simple program that does one thing, and only runs once in a while, but these are becoming an endangered species.  </p>
<p>The trend in IT has always been towards greater integration. The data from one program feeds into the next, and the next…and the next. We can think of a data store as the DMZ between two applications or we can think of it as a cache in a larger system. The boundaries between systems are often arbitrary and are often simple reflections of org-chart boundaries rather than computational or business logic. At the level of the enterprise, we are evolving towards a more comprehensive view, beginning with simple shared services like database and directory, but moving, inexorably and inevitably towards shared functionality.  </p>
<p>The network engineers have already made this transition. We should lean from them and relentlessly componentize, standardize and manage.   </p>
<p>[tags]software security[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2007/02/28/i-hate-to-admit-it-but-those-network-guys-are-pretty-smart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

