<?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>Software &#8211; Mark Staples</title>
	<atom:link href="https://markstaples.com/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>https://markstaples.com</link>
	<description>Software, research, and leadership</description>
	<lastBuildDate>Tue, 08 Mar 2016 07:33:05 +0000</lastBuildDate>
	<language>en-AU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>
	<item>
		<title>ASA statement on p-values</title>
		<link>https://markstaples.com/2016/03/08/asa-statement-on-p-values/</link>
		
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Tue, 08 Mar 2016 07:33:05 +0000</pubDate>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">http://markstaples.com/?p=345</guid>

					<description><![CDATA[There has been controversy around p-values in recent years, often linked to issues with reproducibility in psychology.  p-values are also often reported in empirical software engineering papers. We haven’t yet seen widespread public controversy about software engineering studies, but that’s not because there aren’t problems! The American Statistical Association has just released a clarifying statement ...]]></description>
										<content:encoded><![CDATA[<div class="entry">
<p>There has been controversy around p-values in recent years, often linked to issues with reproducibility in psychology.  p-values are also often reported in empirical software engineering papers. We haven’t yet seen widespread public controversy about software engineering studies, but that’s not because there aren’t problems!<br />
<a href="http://web.archive.org/web/20161030010353/http://retractionwatch.com/2016/03/07/were-using-a-common-statistical-test-all-wrong-statisticians-want-to-fix-that/">The American Statistical Association has just released a clarifying statement about p-values. </a>(<a href="https://amstat.tandfonline.com/doi/abs/10.1080/00031305.2016.1154108">pdf</a>)<br />
p-values are not inherently broken. The problems are about mis-interpreting them, about poor study design and practice, and about poor reporting. The ASA statement seems like a useful contribution to the debate.</p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Philosophy of Engineering</title>
		<link>https://markstaples.com/2014/01/23/philosophy-of-engineering/</link>
		
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Thu, 23 Jan 2014 10:33:39 +0000</pubDate>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">http://www.markstaples.com/?p=296</guid>

					<description><![CDATA[What is engineering? Sometimes people think engineering is just the same as science, but in a new paper on the philosophy of engineering (preprint here), I argue why that&#8217;s not the case. Engineering is similar, but different to Science, and its epistemological issues are also similar but different. I got into this question because of ...]]></description>
										<content:encoded><![CDATA[<div class="entry">
<p>What is engineering? Sometimes people think engineering is just the same as science, but in <a href="http://link.springer.com/article/10.1007/s11229-014-0396-3">a new paper on the philosophy of engineering</a> (<a href="http://www.markstaples.com/files/Critical%20rationalism%20and%20engineering%20-%20ontology.pdf">preprint here</a>), I argue why that&#8217;s not the case.  Engineering is similar, but different to Science, and its epistemological issues are also similar but different.<br />
I got into this question because of problems in assurance for software engineering and formal methods that are essentially philosophical problems.  But having work available on the philosophy of engineering available should also help with perennial questions like &#8220;Is Software Engineering a field of engineering?&#8221; and &#8220;Is Computer Science a science?&#8221;.</p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What Software Engineers Should Know</title>
		<link>https://markstaples.com/2011/11/14/what-software-engineers-should-know/</link>
		
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Mon, 14 Nov 2011 12:01:19 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">http://www.markstaples.com/?p=235</guid>

					<description><![CDATA[Software Engineering would be a more mature discipline if we had spent more time reading What Engineers Know and How They Know It: Analytical Studies from Aeronautical History rather than A Pattern Language: Towns, Buildings, Construction.]]></description>
										<content:encoded><![CDATA[<div class="entry">
<p>Software Engineering would be a more mature discipline if we had spent more time reading <em><a href="http://en.wikipedia.org/wiki/What_Engineers_Know_and_How_They_Know_It">What Engineers Know and How They Know It: Analytical Studies from Aeronautical History</a></em> rather than <em><a href="http://en.wikipedia.org/wiki/A_Pattern_Language">A Pattern Language: Towns, Buildings, Construction</a></em>.</p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Congratulations Marek and Innoboard Team!</title>
		<link>https://markstaples.com/2011/09/23/congratulations-marek-and-innoboard-team/</link>
					<comments>https://markstaples.com/2011/09/23/congratulations-marek-and-innoboard-team/#comments</comments>
		
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Fri, 23 Sep 2011 10:55:26 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">http://www.markstaples.com/?p=214</guid>

					<description><![CDATA[Marek Kowalkiewicz from the SAP Research in Brisbane just last week won the international &#8220;Demo Jam&#8221; competition in the SAP TechEd event in LA, for the &#8220;Innoboard&#8221; software.  Innoboard is an augmented reality technology, which lets distributed teams interactively share whiteboards that mix projected images and physical sticky post-it notes.  All using the low-cost iphone ...]]></description>
										<content:encoded><![CDATA[<div class="entry">
<p>Marek Kowalkiewicz from the SAP Research in Brisbane just last week won the international &#8220;Demo Jam&#8221; competition in the SAP TechEd event in LA, for the &#8220;Innoboard&#8221; software.  Innoboard is an augmented reality technology, which lets distributed teams interactively share whiteboards that mix projected images and physical sticky post-it notes.  All using the low-cost iphone camera and an ordinary projector.  Cool demo!  The idea at the end of taking streamed information out of the interactive session and using that to drive other workflow software (<a href="http://www.atlassian.com/software/jira/">Jira</a> in this case) is also cool, and just hints at the huge potential of ideas like this.<br />
The Innoboard team found its first industry trial partner through the Future Logistics Living Lab, which is run by <a href="http://nicta.com.au/">NICTA</a>, SAP, and <a href="http://www.iese.fraunhofer.de/">Fraunhofer IESE</a>, and has around twenty (and growing) industry &amp; research participants.  (Fraunhofer&#8217;s involvement is through the <a href="http://www.nicta.com.au/research/projects/fpc">Fraunhofer Project Centre in Transport and Logistics at NICTA</a>).  Industry trials for Innoboard are continuing, in a use-case for distributed logistics operations planning.  The Future Logistics Living Lab is also hosting a demo instance of Innoboard, and setting it up in the lab has helped contribute to ironing out some of the use &amp; set-up issues in the early prototypes.<br />
&nbsp;</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://markstaples.com/2011/09/23/congratulations-marek-and-innoboard-team/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Is Informatics a Science?</title>
		<link>https://markstaples.com/2011/07/21/is-informatics-a-science/</link>
		
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Thu, 21 Jul 2011 12:17:50 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Research]]></category>
		<guid isPermaLink="false">http://www.markstaples.com/?p=206</guid>

					<description><![CDATA[Robin Milner gave a presentation &#8220;Is Informatics a Science?&#8221; at a conference at ENS, 10 December 2007, where he discussed the challenge of better understanding relationships between models in computer science &#8211; how they &#8220;explain&#8221; (specify, refine, implement, abstract, realise) each other. I don&#8217;t believe he captured these thoughts in a journal or conference paper, ...]]></description>
										<content:encoded><![CDATA[<div class="entry">
<p><a href="http://en.wikipedia.org/wiki/Robin_Milner">Robin Milner</a> gave a presentation &#8220;Is Informatics a Science?&#8221; at a conference at ENS, 10 December 2007, where he discussed the challenge of better understanding relationships between models in computer science &#8211; how they &#8220;explain&#8221; (specify, refine, implement, abstract, realise) each other. I don&#8217;t believe he captured these thoughts in a journal or conference paper, but the ENS presentation follows an earlier similar 2006 presentation (for which there is a transcript) on &#8220;<a href="https://link.springer.com/chapter/10.1007/11732488_1">Scientific Foundation for Global Computing</a>&#8221; .<br />
An audio recording of the ENS presentation exists.  I&#8217;ve created <a href="http://www.markstaples.com/files/Is%20Informatics%20a%20Science%20-%20v1.0.pdf">a PDF transcript of that recording</a>.  However, I don&#8217;t have the slides that Robin presented &#8211; I&#8217;d be interested to have a copy if anyone could send me one.</p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What is Software Architecture?</title>
		<link>https://markstaples.com/2011/05/03/what-is-software-architecture/</link>
		
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Tue, 03 May 2011 12:22:26 +0000</pubDate>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">http://www.markstaples.com/?p=192</guid>

					<description><![CDATA[What is software architecture? There have been many definitions. Here&#8217;s mine. First let&#8217;s consider some of the earlier definitions. SEI has a huge collection of definitions on its website, including &#8220;classic&#8221; definitions, bibliographic definitions (stops in 1996?), &#8220;modern&#8221; definitions, and definitions submitted from the community.  Perry and Wolf (1992) have perhaps the most classic definition, ...]]></description>
										<content:encoded><![CDATA[<div class="entry">
<p>What is software architecture?  There have been many definitions.  Here&#8217;s mine.<br />
First let&#8217;s consider some of the earlier definitions.  SEI has a huge collection of definitions on its website, including <a href="http://www.sei.cmu.edu/architecture/start/classicdefs.cfm">&#8220;classic&#8221; definitions</a>, <a href="http://www.sei.cmu.edu/architecture/start/bibliographicdefs.cfm">bibliographic definitions (stops in 1996?)</a>, <a href="http://www.sei.cmu.edu/architecture/start/moderndefs.cfm">&#8220;modern&#8221; definitions</a>, and <a href="http://www.sei.cmu.edu/architecture/start/community.cfm">definitions submitted from the community</a>.  <a href="http://portal.acm.org/citation.cfm?id=141884">Perry and Wolf (1992)</a> have perhaps the most classic definition, though it&#8217;s a little sketchy:</p>
<blockquote><p>Architecture = {elements, form, rationale}</p></blockquote>
<p>where elements are <em>Processing</em>, <em>Data</em>, or <em>Connecting</em> elements.  <a href="http://www.softwarearchitecturebook.com"> Taylor et al. (2010)</a> note that when people talk about software architecture in terms of <em>Components and Connectors</em>, that&#8217;s an over-simplification of Perry and Wolf&#8217;s definition &#8211; over-simplified because it doesn&#8217;t always work.  For example in REST, <em>Data</em> elements are pre-eminent.<br />
The <a href="http://standards.ieee.org/findstds/standard/1471-2000.html">ANSI/IEEE 1471-2000</a> definition expands on Perry and Wolf&#8217;s definition, and also slips <em>environment</em> into the scope of <em>form</em> (<em>relationships</em>).</p>
<blockquote><p>Architecture is the fundamental organisation of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.</p></blockquote>
<p><em>Elements </em>(<em>components</em>) and their <em>form </em>(<em>relationships</em>) are clearly key to understanding what software architecture is, but many people think that&#8217;s all it is!  Instead, software architecture researchers have understood for a long time that <em>rationale </em>(<em>design/evolution principles</em>) is also a key part of what software architecture is.<br />
But contrari-wise, software architecture is not just rationale.  So although Taylor et al. (2010) is a great architecture textbook, their definition of software architecture isn&#8217;t so great:</p>
<blockquote><p>A software system&#8217;s architecture is the set of principal design decisions made about the system.</p></blockquote>
<p>I would instead say that <em>design decisions</em> are the means by which <em>elements</em>, <em>form</em>, and <em>rationale </em>are created.  The design decisions are not the architecture per se.<br />
Software architecture is commonly misunderstood to be an exclusively structural model. Perhaps that&#8217;s because UML class diagrams and deployment diagrams are often presented as iconic for software architecture.  The definition from the <a href="http://www.sei.cmu.edu/library/abstracts/books/0321154959.cfm">Bass et al. (2008)</a> classic textbook also encourages this view:</p>
<blockquote><p>The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.</p></blockquote>
<p>But there has been a shift in the software architecture research community to think about architecture more abstractly: in terms of rules or constraints or styles.  So instead of “structures”, I prefer using the word “abstractions”, to more easily accommodate a rule-based architectural perspective.  The abstractions here are not just of software, but also non-software elements in the system, including the environment. <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">Fielding (2000)</a> also talks about abstractions this way (though for some reason he limits software architecture to run-time, which I don&#8217;t agree with):</p>
<blockquote><p>A software architecture is an abstraction of the run-time elements of a software system during some phase of its operation. A system may be composed of many levels of abstraction and many phases of operation, each with its own software architecture.</p></blockquote>
<p>Apparently <a href="http://www.sei.cmu.edu/library/abstracts/books/0321552687.cfm">Clements et al. (2010)</a> has another new definition:</p>
<blockquote><p>The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both.</p></blockquote>
<p>Here we have (ignoring &#8220;structures&#8221; for the moment) Perry and Wolf&#8217;s <em>elements </em>and <em>form </em>(<em>relations</em>) again, but now also with <em>properties </em>for each.  Perry and Wolf&#8217;s <em>rationale </em>has not disappeared, but here appears as a qualifier (&#8220;needed to reason about&#8221;).  I like this.  I think the whole point of architecture is abstraction and analysis of a system for particular purposes.  Here the “reasoning” objective implicitly encompasses those purposes and analyses.<br />
I&#8217;d slightly prefer to say “communicate and reason” instead of “reason”, though perhaps you could say that understanding a communication is-or-requires reasoning.  I’d also prefer to talk about “a” (not “the”) software architecture of a system (and similarly “a set” not “the set”), to more readily accommodate multiple views/perspectives of a single system.<br />
So, in summary, my definition would be something like:</p>
<blockquote><p>A software architecture of a system is a set of abstractions needed to communicate and reason about software in the system.  A software architecture models elements of the system and its environment, relations among those elements, and properties of those elements and relations.</p></blockquote>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Invention vs Innovation</title>
		<link>https://markstaples.com/2010/05/11/invention-vs-innovation/</link>
					<comments>https://markstaples.com/2010/05/11/invention-vs-innovation/#comments</comments>
		
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Tue, 11 May 2010 13:32:30 +0000</pubDate>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">http://www.markstaples.com/?p=164</guid>

					<description><![CDATA[Just heard in a QESP webinar on Software Innovation in Australia from Julian Day of the Australia Consensus Awards: In business, invention is the conversion of cash into ideas, but innovation is the conversion of ideas into cash. Nice.  I see this is also on wikipedia.  I wonder what&#8217;s the original source for this quote?]]></description>
										<content:encoded><![CDATA[<div class="entry">
<p>Just heard in a QESP webinar on <em>Software Innovation in Australia</em> from Julian Day of the Australia <a href="http://www.consensus.com.au/">Consensus Awards</a>:</p>
<blockquote><p>In business, invention is the conversion of cash into ideas, but innovation is the conversion of ideas into cash.</p></blockquote>
<p>Nice.  I see this is also on wikipedia.  I wonder what&#8217;s the original source for this quote?</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://markstaples.com/2010/05/11/invention-vs-innovation/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Breaking the Fractal V Lifecycle?</title>
		<link>https://markstaples.com/2009/12/11/breaking-the-fractal-v-lifecycle/</link>
					<comments>https://markstaples.com/2009/12/11/breaking-the-fractal-v-lifecycle/#comments</comments>
		
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Fri, 11 Dec 2009 17:31:32 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">http://www.markstaples.com/?p=153</guid>

					<description><![CDATA[Liming has raised three points in reference to my Fractal V Lifecycle.  His questions are probing the limits of the model in interesting ways. Before I discuss them, I&#8217;d like to introduce a concept and some terminology from an earlier paper I wrote. The V model can accommodate as many levels of design abstraction as ...]]></description>
										<content:encoded><![CDATA[<div class="entry">
<p>Liming <a href="http://limingzhu.posterous.com/envy-un-v">has raised three points</a> in reference to my <a href="http://www.markstaples.com/2009/05/25/fractal-v-lifecycle/">Fractal V Lifecycle</a>.  His questions are probing the limits of the model in interesting ways. Before I discuss them, I&#8217;d like to introduce a concept and some terminology from an <a href="https://link.springer.com/chapter/10.1007%2F978-3-540-75381-0_6">earlier paper I wrote</a>.<br />
The V model can accommodate as many levels of design abstraction as you like.  For example, if you do high-level design/integration testing, add a layer for that between system architecture/system testing and low-level design/component testing. At each level of design abstraction, you have the same schema of activities: design the artifact (called &#8220;Plan&#8221; in the paper), pass it on for elaboration to a lower level of abstraction (called &#8220;Do&#8221; in the paper) and then verify that the design and implementation are consistent (called &#8220;Check&#8221; in the paper).  There is also another kind of activity in the V model, &#8220;Plan-to-Check&#8221;, which can proceed concurrently with the &#8220;Do&#8221; step.<br />
So, the left-hand side of the V is &#8220;Plan&#8221;, the horizontal dotted lines are &#8220;Plan-to-Check&#8221;, the pointy bit is &#8220;Do&#8221;, and the right-hand side is &#8220;Check&#8221;.<br />
On to Liming&#8217;s points about situations quoted or paraphrased as follows&#8230;<br />
1. &#8220;Left side of the V bends up before reaching the bottom&#8221;</p>
<p style="padding-left: 30px;">Liming wonders &#8211; how can you &#8220;Check&#8221; a developed artifact if it hasn&#8217;t been built yet!?  As Liming suggests, I want to argue that if you don&#8217;t have an implementation yet, you of course can&#8217;t test it, but you can certainly analyse the plan/design.  Your &#8220;Check&#8221;ing activity will be a requirements review, or a model-based design simulation, or perhaps testing with stubs (or &#8220;mock objects&#8221; if you prefer).  It depends on your level of design abstraction and what artifacts you already have from any previous iterations.</p>
<p style="padding-left: 30px;">Liming thinks analysis is implicit in the left-hand-side of the V, because designers always carry out some sort of analysis immediately after creating artifacts.  I agree designers often do that sort of analysis, but I disagree that it&#8217;s implicit in the left-hand-side of the V!  I think it&#8217;s simpler and more consistent to think about it as being part of the right-hand-side of the V, with a null &#8220;Do&#8221; activity.  So designers would do many mini design/analyse (&#8220;Plan&#8221;/&#8221;Check&#8221;) iterations at their level of design abstraction before sending it off to the lower level of abstraction for elaboration.</p>
<p>2. &#8220;Right side of the V dips down before reaching the top&#8221;</p>
<p style="padding-left: 30px;">Liming observes that this isn&#8217;t just about avoiding end-customer contact.  I didn&#8217;t highlight that in my original blog article, but I fully agree.  For example, you might have unit tested iterations that you don&#8217;t send up for integration testing just yet. These are &#8220;internal iterations&#8221; at some level of deign abstraction, avoiding the &#8220;customer&#8221; at the next highest level of design abstraction.</p>
<p>3. &#8220;Early or continuous testing breaks the V&#8221;</p>
<p style="padding-left: 30px;">Liming claims that as testing happens on the right-hand side of the V, early or continuous testing means you can&#8217;t have a V any more.  I agree early and continuous testing breaks the V, but it doesn&#8217;t break the Fractal V!  In the Fractal V, yes you do still carry out the testing on the right-hand side of the V, but the whole point of the Fractal V is that it can accommodate a variety of different kinds of internal iterations.</p>
<p style="padding-left: 30px;">I&#8217;m not claiming that all software development will fit the Fractal V Lifecycle.  For example, imagine a lifecycle with long-running requirements analysis performed concurrently with ongoing development, where you could pre-emptively abort a development iteration depending on the intermediate outcomes of that ongoing requirements analysis.  I don&#8217;t know of any lifecycle that would capture that exactly.  Maybe this is Liming&#8217;s point about continuous integration &#8211; the hairy reality is that developers won&#8217;t stop entirely while they&#8217;re waiting for feedback from continuous integration &#8211; they&#8217;ll probably already have started the next unit of work.  I would rebut that the aim of continuous integration is to given &#8220;immediate&#8221; unit and integration test feedback to developers &#8211; to let them do many micro-iterations as quickly as possible.  I say you should probably just work around that hairy reality for the sake of simplicity.  No model is perfect, but some models are still useful.</p>
<p>Lifecycle models are used because they make it easier for large groups to understand and coordinate complex projects.  The Fractal V provides more flexibility for iteration than the normal V lifecycle, but is still reasonably simple, and importantly retains the Plan/Do/Check schema that so many systems engineering disciplines and tools rely on.<br />
It will be interesting to see the <a href="http://limingzhu.posterous.com/envy-un-v">un-V lifecycle</a> Liming mentions (I hope they find a better name!), and see how it deals with all of these issues.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://markstaples.com/2009/12/11/breaking-the-fractal-v-lifecycle/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Fractal V Lifecycle for Pre-Project Activities</title>
		<link>https://markstaples.com/2009/12/08/fractal-v-lifecycle-for-pre-project-activities/</link>
					<comments>https://markstaples.com/2009/12/08/fractal-v-lifecycle-for-pre-project-activities/#comments</comments>
		
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Tue, 08 Dec 2009 13:33:14 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">http://www.markstaples.com/?p=149</guid>

					<description><![CDATA[Louis has got a new article version of my earlier blog post on the Fractal V Lifecycle up on alinement.net magazine/community website. He&#8217;s also added some thoughts of his own on extending the concept into pre-project activities.  For these sorts of activities I tend to favor putting them on top, i.e. on the left but ...]]></description>
										<content:encoded><![CDATA[<div class="entry">
<p>Louis has got a new article version of my earlier <a href="http://www.markstaples.com/2009/05/25/fractal-v-lifecycle/">blog post</a> on the Fractal V Lifecycle up on <a href="http://alinement.net/">alinement.net</a> magazine/community website. He&#8217;s also added some thoughts of his own on extending the concept into pre-project activities.  For these sorts of activities I tend to favor putting them on top, i.e. on the left but at a higher level &#8211; giving you a taller V.  But there&#8217;s no hard and fast rule&#8230; use it whatever way helps!</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://markstaples.com/2009/12/08/fractal-v-lifecycle-for-pre-project-activities/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Developing Whole Verified Embedded Systems</title>
		<link>https://markstaples.com/2009/09/20/developing-whole-verified-embedded-systems/</link>
		
		<dc:creator><![CDATA[Mark]]></dc:creator>
		<pubDate>Sun, 20 Sep 2009 04:41:14 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<guid isPermaLink="false">http://www.markstaples.com/?p=136</guid>

					<description><![CDATA[NICTA&#8217;s recent Techfest in Sydney saw a flurry of news around the announcement of a significant research achievement- the formal verification of the seL4 microkernel. The team developed a mathematical proof of the functional correctness of the microkernel down to the level of the C source code. The achievement is important for two reasons. Firstly, ...]]></description>
										<content:encoded><![CDATA[<div class="entry">
<p><a href="http://web.archive.org/web/20100426052839/http://www.nicta.com.au:80/nicta_events/techfest2009">NICTA&#8217;s recent Techfest</a> in Sydney saw a flurry of news around the <a href="http://www.nicta.com.au/news/current/world-first_research_breakthrough_promises_safety-critical_software_of_unprecede nted_reliability">announcement</a> of a significant research achievement- the formal verification of the seL4 microkernel. The team developed a mathematical proof of the functional correctness of the microkernel down to the level of the C source code.<br />
The achievement is important for two reasons.  Firstly, it makes it <em>possible</em> to prove code-level functional correctness of whole computer systems based on the L4 microkernel.  This means computer systems can carry a new kind of assurance, supporting strong arguments for safety and security for high-integrity software systems.<br />
Secondly, it makes the creation of these proofs more <em>feasible</em> in practice.  It should now be possible to formally verify properties of whole systems where only the key parts of the system are formally verified.  This is critical for the practical application of formal verification.  The verification of the L4 microkernel took more than 20 person years of effort to verify just 7500 lines of C source code.  Modern embedded computer systems can have millions of lines of source &#8211; it&#8217;s not practical to formally verify all the code in such systems at these levels of productivity.<br />
However, you don&#8217;t need to verify all the code!  L4 provides rigorous separation between processes running in the microkernel, and that separation is guaranteed by the recent proof.  If you can isolate the safety-critical or security-critical parts of an entire system to one small formally verified component running in an L4 process, it should be possible to lift the guarantees for that component to the whole system, even if the other components in the system haven&#8217;t been verified.<br />
That is the challenge for a new project at NICTA &#8211; Trustworthy Embedded Systems. The plan is to develop technologies to support the creation and verification of entire systems running on top of the microkernel.  This is a large project involving several NICTA labs and researchers from many disciplines (operating systems, formal methods, software architecture).  I&#8217;m part-allocated to the project for the next few years.  My PhD was in formal methods, and this is really the first time I&#8217;ve dipped my toe back into that area for the last decade.  However, I won&#8217;t be doing too much theorem proving myself &#8211; my focus in the project will instead largely be on other software engineering issues in this context, such as configuration management, and how to use the component architecture to support product line development.</p>
</div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
