<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Semantic Werks</title>
	<atom:link href="http://neilernst.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://neilernst.net</link>
	<description>Thoughts on people, machines and systems.</description>
	<lastBuildDate>Tue, 29 May 2012 02:46:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='neilernst.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/1f438fa0e70f195d1594a7a5a6b0aaed?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Semantic Werks</title>
		<link>http://neilernst.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://neilernst.net/osd.xml" title="Semantic Werks" />
	<atom:link rel='hub' href='http://neilernst.net/?pushpress=hub'/>
		<item>
		<title>Cynefin and MDE</title>
		<link>http://neilernst.net/2012/05/16/cynefin-and-mde/</link>
		<comments>http://neilernst.net/2012/05/16/cynefin-and-mde/#comments</comments>
		<pubDate>Wed, 16 May 2012 19:51:45 +0000</pubDate>
		<dc:creator>Neil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://neilernst.net/?p=1415</guid>
		<description><![CDATA[Watching Dave Snowden talk about Cynefin (thanks to @dsg22 for the reminder), it occurred to me that this sense-making approach might explain some of my discomfort with model-driven engineering (MDE). I will readily admit to bias: we built a research project, OpenOME,  using model-driven engineering with GMF, and in my opinion, it was completely the wrong approach [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1415&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Watching <a href="http://www.youtube.com/watch?v=N7oz366X0-8&amp;feature=related">Dave Snowden talk about Cynefin</a> (thanks to <a href="https://twitter.com/#!/dsg22"><s>@</s><strong>dsg22</strong></a> for the reminder), it occurred to me that this sense-making approach might explain some of my discomfort with <a href="http://en.wikipedia.org/wiki/Model-driven_engineering">model-driven engineering</a> (MDE). I will readily admit to bias: we built a research project, <a href="https://se.cs.toronto.edu/trac/ome">OpenOME</a>,  using model-driven engineering with <a href="http://www.eclipse.org/modeling/gmp/">GMF</a>, and in my opinion, it was completely the wrong approach for the job (keeping in mind that <a href="http://modeling-languages.com/mdd-pays-mid-term-industrial-experiment/">MDE pays off in subsequent projects</a>).</p>
<p>I think my conceptual problem is that MDE encodes a specific process in a tool. At least one central selling point is that the models can be independent of the context in which they are used. That is, we have this process for desiging graphical editors in Eclipse (with a hard-coded architectural approach), and we have encoded this into the GMF framework.</p>
<div class="wp-caption aligncenter" style="width: 210px"><img title="Cynefin framework" src="http://upload.wikimedia.org/wikipedia/commons/4/45/Cynefin_framework_Feb_2011.jpeg" alt="" width="200" height="201" /><p class="wp-caption-text">Cynefin framework (via Wikipedia)</p></div>
<p>It isn&#8217;t that this can never be useful. But if we turn to <a href="http://en.wikipedia.org/wiki/Cynefin">Cynefin</a>, we can see why it might be problematic. I would characterized MDE as working well in &#8220;complicated&#8221; or &#8220;simple&#8221; domains, where the appropriate response to a problem is to use best practices or &#8216;good&#8217; practices &#8211; exactly what MDE is doing. However, much of the work we do in software development is in the complex, if not chaotic domains, where best practices simply don&#8217;t exist. I would characterize my experience with GMF this way. The tool we built had unclear requirements, and we didn&#8217;t understand the technological landscape properly. A better approach, if we go by Cynefin, would be to &#8220;probe&#8221; the problem by building prototypes, and then determine what our response to the experiement would be.</p>
<p>In other words, if you are in a simple or complicated domain, then MDE tools should work great. They will allow you to deploy your app to multiple platforms, greatly reduce re-engineering effort, and much else. But if you don&#8217;t understand the domian very well, or you are in a chaotic system, you should put the MDE aside. And it&#8217;s my opinion that most software development occurs in the complex domain.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fink08.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fink08.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fink08.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fink08.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fink08.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fink08.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fink08.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fink08.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fink08.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fink08.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fink08.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fink08.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fink08.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fink08.wordpress.com/1415/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1415&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://neilernst.net/2012/05/16/cynefin-and-mde/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>43.659070 -79.396681</georss:point>
		<geo:lat>43.659070</geo:lat>
		<geo:long>-79.396681</geo:long>
		<media:content url="http://1.gravatar.com/avatar/141272f109fbf660ffa001647f17d368?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">neil</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/4/45/Cynefin_framework_Feb_2011.jpeg" medium="image">
			<media:title type="html">Cynefin framework</media:title>
		</media:content>
	</item>
		<item>
		<title>Using GitHub for 3rd Year Software Engineering</title>
		<link>http://neilernst.net/2012/04/26/using-github-for-3rd-year-software-engineering/</link>
		<comments>http://neilernst.net/2012/04/26/using-github-for-3rd-year-software-engineering/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 19:31:37 +0000</pubDate>
		<dc:creator>Neil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://neilernst.net/?p=1411</guid>
		<description><![CDATA[This past semester (Winter 2012), I was the instructor for UBC’s CPSC 310: Introduction to Software Engineering. As part of the course, students must complete a large-scale software project in teams of 4–5 in 2 months. This term, I allowed some teams to use GitHub to manage the project. Reasons At UBC, we have for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1411&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p id="usinggithubfor3rdyearsoftwareengineering">This past semester (Winter 2012), I was the instructor for UBC’s <a href="http://www.ugrad.cs.ubc.ca/~cs310/">CPSC 310: Introduction to Software Engineering</a>. As part of the course, students must complete a large-scale software project in teams of 4–5 in 2 months. This term, I allowed some teams to use GitHub to manage the project.</p>
<h2 id="reasons">Reasons</h2>
<p>At UBC, we have for some time used IBM’s <a href="https://jazz.net/projects/rational-team-concert/">Rational Team Concert</a> tool, which is free for academic use, as our software collaboration environment. This was the default tool for this term, as well, save for the three groups who applied to use GitHub. The University of Victoria has been using <a href="http://adrian-schroeter.com/2011/11/30/resources-for-using-jazz-in-a-student-course/">RTC for a similar purpose</a>.</p>
<p>RTC is, I’m sure, an excellent product for its intended audience, namely, professional software development teams. It is easy to install and maintain for the technical support staff here, has sufficient documentation, and clients for Mac, Linux and Windows. It is also free for us to use as part of the IBM Academic program. However, in course evaluations, it has been the single most complained-about part of the course. It is cumbersome to install for students, and most importantly, always seems to be out-of-date with other software. In our case, RTC 3 is built using Eclipse 3.4, which is “somewhat” incompatible with the libraries and plugins I was looking to use, chiefly the Google Plugin for Eclipse. A significant amount of course time (TA and instructor office hours) was spent getting RTC to work with the other software for the course. And I am just seeing that IBM is now working on <a href="https://jazz.net/blog/index.php/2012/03/07/announcing-the-clm-2012-beta/">RTC 4</a>, which implies more trouble in the future.</p>
<p>Now, this is partly because students have not had much experience installing commercial development tools on their machines, and that is certainly a learning objective for this course (I am confident it is a pain point for nearly all software developers, new or otherwise). It is also because students run a bewildering array of operating systems and language profiles on their laptops and desktop computers, which makes support a headache.</p>
<p>That being said, my sense was that RTC was simply too much tool for what the students needed. As Greg Wilson’s <a href="https://stanley.cdf.toronto.edu/drproject/drproject">DrProject experiment</a> showed, students simply do not have time, nor inclination, to leverage the more powerful collaboration aspects. Filling out work items, creating documentation, even committing code is something they just do not see the need for. To get them to try it, we must assign marks to those activities. RTC’s terminology (streams, components, etc) is probably great for a developer with multiple projects: for these students (and me!) it is non-standard with most version control concepts and confusing to use.</p>
<p>Since <a href="https://github.com/neilernst">I’ve personally used</a> GitHub for a while, and <code>git</code> seems to have a lot of developer mindshare, it seemed like a good fit for an experiment.</p>
<h2 id="experiences">Experiences</h2>
<h3 id="instructor">Instructor</h3>
<p>I emailed Github about the use of their web app for education and received a very prompt affirmative. Github will provide an organization account to the instructor, which includes private repositories for up to 200 people. At the end of the semester, they then require you to either delete the repositories (on Github, obviously not locally) or make them public (free accounts).</p>
<p>The Github UI is generally simple, but some of the navigation options are confusing from the team manager point of view (me!). Tracking student performance is pretty easy, since you have ready access to the excellent Github website, including issue tracking, change set tracking, pull requests, etc. Github has excellent graphs that allow the instructor team to check who is doing what. There doesn’t appear to be a good way to email all of the students in the various teams at the same time (<a href="https://github.com/organizations/CPSC310W2012">we are an “organization”</a> made up of 4–5 person teams).</p>
<p>Git itself is the main reason to use Github. There are vastly superior tutorials on it, and I like the pure distributed model better than what RTC provides. Finally, and perhaps most important, as the instructor I’ve used Git a fair bit and RTC very little. The disadvantages are that there is no central repository for backup purposes, although being distributed this is presumably less important.</p>
<h3 id="student">Student</h3>
<p>Students were generally positive. The alternative, in this course, was to use RTC. Git has the advantage of more widespread adoption (you’re unlikely to use RTC at Microsoft, but MSFT supports Git in various places). And of course, if Github goes down, then students can no longer manage issues. Git itself is complex to learn; I should have provided a short tutorial to those teams on the basics of Git.</p>
<p>They also found tools like <a href="http://www.sourcetreeapp.com/">SourceTree</a> and <a href="http://code.google.com/p/tortoisegit/">Tortoise</a> invaluable in understanding what was happening with branches and remotes. For a while, a few teams had multiple, non-merged and conflicting branches for each member, which they could resolve once they saw visually how the branches were happening. The concept of remote repositories and pull requests is a little alien at first.</p>
<p>Issue tracking in Github is primitive relative to RTC. This is a strength for this course, I feel, but when we go from user stories to tasks it means students had to roll their own classification scheme (e.g., define a product backlog item, then the tasks which compose it).</p>
<p>The teams which used Github were much stronger than most other teams in the course, so the results are no doubt skewed. That being said, I don’t think RTC was any simpler to use—in a number of teams, at least one team member never managed to commit code to the shared repository.</p>
<h2 id="lookingahead">Looking ahead</h2>
<p>The obvious question is, “Would you use Github again”? The answer is <em>yes</em>, and perhaps even “I would like to make everyone use it.”</p>
<p>It was confusing to have two separate tools in the course. Partly, this is because marking is complicated by the fact student teams are in tutorial sections, so some teams in a given tutorial were using Github and some RTC. This meant TAs had to mark both tools (and learn both). Exam questions are more complicated, since you must account for some students never having used RTC, if you ask about issue tracking.</p>
<p>I like the fact that the project collaboration tool was separate from the IDE. I think RTC’s tight Eclipse integration makes it difficult to install the IDE necessary. Some students ran Eclipse 3.7 in conjunction with RTC (Eclipse 3.4) in order to get plugins working. Since <code>git</code> is so popular, it is much easier to find tool support for it than to munge RTC into your work flow. In future, tools like <a href="https://github.com/blog/852-github-mylyn-connector-for-eclipse">Mylyn</a> would be useful to better integrate issue tracking into the IDE.</p>
<p>The big outstanding issue is privacy. In BC, the provincial government is considering laws that prohibit (or seem to, IANAL) student data being anywhere near a US server (despite students happily sending email about their marks from Hotmail or Gmail). While I respect that motivation, I feel there should be some way to give consent, particularly when so many excellent tools are US-based.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fink08.wordpress.com/1411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fink08.wordpress.com/1411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fink08.wordpress.com/1411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fink08.wordpress.com/1411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fink08.wordpress.com/1411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fink08.wordpress.com/1411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fink08.wordpress.com/1411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fink08.wordpress.com/1411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fink08.wordpress.com/1411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fink08.wordpress.com/1411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fink08.wordpress.com/1411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fink08.wordpress.com/1411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fink08.wordpress.com/1411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fink08.wordpress.com/1411/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1411&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://neilernst.net/2012/04/26/using-github-for-3rd-year-software-engineering/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point>43.659070 -79.396681</georss:point>
		<geo:lat>43.659070</geo:lat>
		<geo:long>-79.396681</geo:long>
		<media:content url="http://1.gravatar.com/avatar/141272f109fbf660ffa001647f17d368?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">neil</media:title>
		</media:content>
	</item>
		<item>
		<title>DeMarco and &#8220;Cannot control what you cannot measure&#8221;</title>
		<link>http://neilernst.net/2012/04/17/demarco-deming-and-cannot-control-what-you-cannot-measure/</link>
		<comments>http://neilernst.net/2012/04/17/demarco-deming-and-cannot-control-what-you-cannot-measure/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 18:50:21 +0000</pubDate>
		<dc:creator>Neil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://neilernst.net/?p=1406</guid>
		<description><![CDATA[Tom DeMarco&#8217;s influential 1982 book &#8220;Controlling Software Projects: Management, Measurement, and Estimation&#8221; famously started with the aphorism that you &#8220;cannot control what you cannot measure&#8221;, in arguing for more metrics in software development. There is pushback against this notion, however, and DeMarco himself (pdf) has said he thinks it was written naively: &#8220;a curious combination of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1406&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tom DeMarco&#8217;s influential 1982 book &#8220;Controlling Software Projects: Management, Measurement, and Estimation&#8221; famously started with the aphorism that you &#8220;cannot control what you cannot measure&#8221;, in arguing for more metrics in software development. There is pushback against this notion, however, and DeMarco <a href="http://www2.computer.org/cms/Computer.org/ComputingNow/homepage/2009/0709/rW_SO_Viewpoints.pdf">himself</a> (pdf) has said he thinks it was written naively: &#8220;a curious combination of generally true things written on every page but combined into an overall message that’s wrong&#8221;.</p>
<p>The critique against management as measurement (e.g., <a href="http://catenary.wordpress.com/2007/01/11/controlling-what-you-cant-measure/">Jorge Aranda</a>&#8216;s) stems from a belief that measurement implies a <a href="http://en.wikipedia.org/wiki/Scientific_management">Taylorist</a> approach to software engineering that is simply not applicable. Software construction is not widget assembly, and even in industrial assembly lines the notion of human workers as cogs has changed dramatically, most obviously as encapsulated by the set of philosophies called the &#8220;Toyota Way&#8221;, and now commonly called &#8220;lean manufacturing&#8221;.</p>
<p>The idea that a software team lead could sit in a corner office, enveloped by dashboards showing lines of code added per day, bugs fixed, etc. does seem silly. Clearly, a better approach would be to understand the team dynamics and their struggles &#8211; the role that the Scrum Master plays, for example. However, this isn&#8217;t to say that metrics aren&#8217;t supremely important. The lessons of big data and Google-style machine learning is that there are often messages hidden in the data that cannot be surfaced with individual, anecdotal experience. Consider a simple indicator like &#8220;lead time&#8221; (the time from a work item being created/accepted to it being closed/released). It can be very difficult to get a good sense for this in the aggregate, since developers spend so much time on individual items. It is only looking back on a <a href="http://edn.embarcadero.com/article/32410">cumulative flow diagram</a> that spikes in lead time can be detected, and bottlenecks resolved.</p>
<p>I think the difference from Taylorism is that modern metrics are seen as complementary to hands-on, qualitative management, or pieces of  a software process improvement approach like Kanban. In <a href="http://en.wikipedia.org/wiki/Kanban_(development)">Kanban</a>, two key areas where this occurs are the principles of &#8220;Visualizing workflow&#8221;, often using a whiteboard with swim lanes, and &#8220;Managing Flow&#8221;, which uses lead-time and work in progress measures. The key point, though, is that these are two of the five core principles, the others being &#8220;limit work in progress&#8221;, &#8220;make process policies explicit&#8221;, and &#8220;improve collaboratively&#8221;. You don&#8217;t manage on metrics alone <a href="#fn1">1</a>. The metrics drive the self-improvement process but cannot replace in-depth understanding. In short delivery cycles like Scrum or XP advocate, this is much easier to do, because the ability to tweak the process occurs much more rapidly than in longer-iteration approaches, as Jim Highsmith <a href="http://jimhighsmith.com/2012/04/17/features-or-quality-selling-software-excellence-to-business-partners/">pointed out</a>.</p>
<p><a name="fn1"></a>1. Let us stipulate that there are endless examples of low-maturity teams out there whom <em>no</em> technique will help.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fink08.wordpress.com/1406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fink08.wordpress.com/1406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fink08.wordpress.com/1406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fink08.wordpress.com/1406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fink08.wordpress.com/1406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fink08.wordpress.com/1406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fink08.wordpress.com/1406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fink08.wordpress.com/1406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fink08.wordpress.com/1406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fink08.wordpress.com/1406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fink08.wordpress.com/1406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fink08.wordpress.com/1406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fink08.wordpress.com/1406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fink08.wordpress.com/1406/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1406&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://neilernst.net/2012/04/17/demarco-deming-and-cannot-control-what-you-cannot-measure/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>43.659070 -79.396681</georss:point>
		<geo:lat>43.659070</geo:lat>
		<geo:long>-79.396681</geo:long>
		<media:content url="http://1.gravatar.com/avatar/141272f109fbf660ffa001647f17d368?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">neil</media:title>
		</media:content>
	</item>
		<item>
		<title>Requirements tools and tasks</title>
		<link>http://neilernst.net/2012/03/28/requirements-tools-and-tasks/</link>
		<comments>http://neilernst.net/2012/03/28/requirements-tools-and-tasks/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 20:52:44 +0000</pubDate>
		<dc:creator>Neil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://neilernst.net/?p=1397</guid>
		<description><![CDATA[Just read a nice paper by Dan Berry et al. [1] on tools for requirements engineers. It was a position paper that looked at the progress to date in using natural language processing (NLP) for requirements analysis, modeling, and comprehension. In it, they argue that we should partition RE tasks into the clerical part (tools [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1397&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just read a nice paper by Dan Berry et al. [1] on tools for requirements engineers. It was a position paper that looked at the progress to date in using natural language processing (NLP) for requirements analysis, modeling, and comprehension. In it, they argue that we should partition RE tasks into the clerical part (tools can do this with 100% precision) and a thinking part, where tools can&#8217;t come close to enough precision. The key part is this paragraph:</p>
<blockquote><p>Finding this partition for any task will require research to think of a different way to decompose the task. It will require a thorough understanding of the task and of what is algorithmically possible. It will likely require ingenuity in finding perhaps multiple, orthogonal lexical proxies for the semantics of the task, whose combined capture of false positives is significantly reduced from that of any one lexical proxy. For any task, the partitioning will take into account<br />
– the burden to the human analyst of the imprecision of the clerical part and – the difficulty to the human analyst of the thinking-required part.</p>
<p>Obtaining this information will require research like that done by Dekhtyar et al.<a href="http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6051649&amp;tag=1"> [14]</a> for tracing tools to determine what is really difficult for humans and how well hu- mans perform parts of the task with and without automation. Addressing the issue of how to separate the clerical and thinking-required parts of a task is of course one of many research questions that challenge the developers of NLP-based tools for RE. The challenge of ensuring industrial adoption of the tools remains.</p></blockquote>
<p>This is a great motivation for my immediate research direction. My tool, RE-KOMBINE [2], can automate the process of discovering possible solutions a given set of requirements. It can provide information to the analyst about the optimal set of user stories (or use cases, requirements, what have you) to prioritize for development. But it should not, according to Berry et al., try to automatically generate solution, nor should it concern itself with how the requirements are entered into the knowledge base (indeed, our support of natural language propositional statements seems as much formality as one can demand). Finally, it seems the most important research challenge is &#8220;determining what is really difficult for humans&#8221; in RE.</p>
<p>For more on RE-KOMBINE you can check out our CAISE 12 paper [2].</p>
<p>[1] Daniel Berry, Ricardo Gacitua, Pete Sawyer and Sri Fatimah Tjong, &#8220;<a href="http://www.springerlink.com/content/v65xk36k04411271/">The Case for Dumb Requirements Engineering Tools</a>&#8220;, <em>REFSQ</em>, Essen, March 2012.</p>
<p>[2] Neil Ernst, Alexander Borgida, John Mylopoulos, Ivan Jureta, &#8220;<a href="http://fink08.files.wordpress.com/2012/03/caise-incons.pdf">Agile Requirements Evolution via Paraconsistent Reasoning</a>,&#8221; <em>CAISE</em>, Gdansk, June 2012.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fink08.wordpress.com/1397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fink08.wordpress.com/1397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fink08.wordpress.com/1397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fink08.wordpress.com/1397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fink08.wordpress.com/1397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fink08.wordpress.com/1397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fink08.wordpress.com/1397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fink08.wordpress.com/1397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fink08.wordpress.com/1397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fink08.wordpress.com/1397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fink08.wordpress.com/1397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fink08.wordpress.com/1397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fink08.wordpress.com/1397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fink08.wordpress.com/1397/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1397&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://neilernst.net/2012/03/28/requirements-tools-and-tasks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>43.659070 -79.396681</georss:point>
		<geo:lat>43.659070</geo:lat>
		<geo:long>-79.396681</geo:long>
		<media:content url="http://1.gravatar.com/avatar/141272f109fbf660ffa001647f17d368?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">neil</media:title>
		</media:content>
	</item>
		<item>
		<title>Case studies and grounded theory in software engineering</title>
		<link>http://neilernst.net/2012/02/23/case-studies-and-grounded-theory-in-software/</link>
		<comments>http://neilernst.net/2012/02/23/case-studies-and-grounded-theory-in-software/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 23:01:22 +0000</pubDate>
		<dc:creator>Neil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://neilernst.net/2012/02/23/case-studies-and-grounded-theory-in-software</guid>
		<description><![CDATA[Case study vs. anecdote In software development, many advances (by which I mean &#8220;better ways of developing software&#8221;, where better is defined with respect to perhaps cost, time, value-delivery …) have come from industry and consultants proposing solutions to the problems they have come across1, of which some examples include Scrum, Kanban, Go, Continuous Delivery, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1375&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>Case study vs. anecdote</h1>
<p>In software development, many advances (by which I mean &#8220;better ways of developing software&#8221;, where better is defined with respect to perhaps cost, time, value-delivery …) have come from industry and consultants proposing solutions to the problems they have come across<sup><a href="#fn-but" name="here">1</a></sup>, of which some examples include <em><a href="http://www.scrumalliance.org/learn_about_scrum">Scrum</a></em>, <em><a href="http://www.amazon.com/Kanban-David-J-Anderson/dp/0984521402">Kanban</a></em>, <em><a href="http://golang.org/">Go</a></em>, <em><a href="http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912">Continuous Delivery</a></em>, etc.  The argument could be made that one person&#8217;s hundreds of consultations with troubled software projects provides him or her much more in the way of actionable observation than does a researcher&#8217;s single site visit at a large organization, even if the latter is rigorously conducted. Several researchers have argued that the case study is not necessarily non-generalizable, and that it is probably the most useful empirical method for software engineering. However, I think this raises a bigger question: how does a well-conducted academic case study compare with the plethora of anecdotal evidence from software consultants?</p>
<p>Consider this <a href="http://martinfowler.com/bliki/PrematureRampUp.html">blog post</a> by Martin Fowler. He is a well-respected member of the software engineering community, a thought-leader if you will, having written important books and posts on refactoring and agile software development. In this post, he talks about the notion of adding members to a software development team, the difficulties with which have long been recognized, starting with Fred Brooks and the IBM os/360 project. Fowler makes a few interesting points about this process, and as evidence for his beliefs, cites some of the many consulting experiences his team has encountered. The question for an academic, then, is how your efforts can be compared with his. Is his experience any less generalizable to theory? Is his data less valid for being encountered as part of a for-profit consulting gig? How can a researcher compete with the level of access Fowler has?</p>
<p>Ultimately what troubles me is this question: is the knowledge which Martin Fowler gains via these visits any less useful to us than that which is collected through a more &#8220;scientific&#8221; case study approach? While we would certainly reject a paper which did not explain the research questions, data collection approach, and discuss threats to validity, none of which are mentioned in his blogs (and why should they be!) I would argue that Fowler&#8217;s experiences are in fact more useful: he is extremely experienced with software development, and the breadth of cases which he encounters makes the problem of research question moot. By at least one standard his knowledge has been directly applied: one can argue that the hugely influential &#8220;<a href="http://books.google.com/books?hl=en&amp;lr=&amp;id=1MsETFPD3I0C&amp;oi=fnd&amp;pg=PR18&amp;dq=refactoring&amp;ots=pLN7t0WF9b&amp;sig=jM7AP8hci1ApMI09eO2bFvkhaeQ">Refactoring</a>&#8221; book is a direct result of his anecdotal experiences<sup><a href="#fn-refact" name="refact">2</a></sup>.</p>
<h1>Yin: analytical generalization to theory</h1>
<p>The central argument against the complaint that case studies cannot be generalized (and therefore provide no general knowledge, just context-specific knowledge) is that of analytical generalization. This is a complex way of arguing that what you obtain from a case study is simply a singular datapoint about how phenomena are manifested. As the figure below, from Yin&#8217;s book<sup><a href="#fn-yin" name="yin">3</a></sup>, shows, the notion is that in any form of scientific inquiry we are interested in the theoretical implications (since we assume that the theory is how we make sense of the world). However, I&#8217;ve yet to encounter a similar notion to that of &#8220;<a href="http://en.wikipedia.org/wiki/Statistical_power">power</a>&#8221; in experiment for case studies. It seems it ought to exist, because a case study which merely confirms what we&#8217;ve already suspected is less useful than one which, well-constructed, can give us good evidence against a particular phenomenon.</p>
<p><img src="http://fink08.files.wordpress.com/2011/11/screen-shot-2011-11-11-at-13-27-42.png?w=700" alt="Yin's diagram on making inferences(p32)" /></p>
<p>Flyvberg <sup><a href="#fn-fly" name="fly">4</a></sup> makes a nice point about this: if you pick your case study subjects well, then you don&#8217;t need to conduct a number of repeated experiments&#8212;-one will be enough. This (to me) is what Kuhn and Popper have in common: the notion that intuitively, it ought to only take one good experiment to invalidate one&#8217;s acceptance of a theory (where theory might mean as little as &#8220;intuition&#8221;). Flyvberg illustrates this by pointing out that what Galileo did in establishing a revised theory of gravity was simply a conceptual experiment about conjoined masses. Since he had chosen his case study subject well, he was able to confirm for himself that Aristotle could not possibly be correct. There was no need, in other words, to continue doing experiments with different materials, since by that point he had demonstrated a counter-example and invalidated the theory. He did not even need to concretely demonstrate this to himself, but only show it must be true &#8211; the black swan, in Flyvberg&#8217;s words.</p>
<p>For me this illustrates the importance of case study selection. A poor selection will only be able to confirm what we already suspect, and in this must be supplemented with additional inquiry. But a well-chosen set of cases&#8212;-for example, looking at bug fixing practices in a large industrial setting, in an open source setting, and in a safety-critical setting&#8212;-could be sufficient to invalidate a number of existing assumptions. And for me this is also what distinguishes research from anecdote: research chooses cases so that they can serve this purpose. While the anecdotes of Martin Fowler <em>may</em> do this, it is more likely that they are a series of confirmatory experiences, none of which illustrate much other than the fecklessness of management and the importance of concepts such as frequent delivery, customer interaction, and version control&#8212;-none of which are remotely controversial<sup><a href="#fn-clear" name="clear">5</a></sup>. However, should Fowler find a single case where agility hurt business value, then we might have an interesting experience to report (although I suspect those circumstances would be waved off as extraordinary and non-relevant).</p>
<p>It did not take practitioners long to formulate theories such as agile software development (prefigured in any case by the work of Brooks, Boehm, and even Royce&#8217;s initial &#8220;waterfall&#8221; paper). Indeed, most of Extreme Programming was based on a single experience at the Chrysler Compensation system, hardly the stuff of rigour. I conclude, therefore, that as academics, one ought not to be fearful of the extensive industrial experiences of consultants, but instead apply strategic sampling in order to identify truly meaningful cases. I conclude this section with a nice passage from Flyvberg:</p>
<blockquote>
<p>Knowledge at the beginner’s level consists precisely in the reduced formulas that characterize theories, whereas true expertise is based on intimate experience with thousands of individual cases and on the ability to discriminate between situations, with all their nuances of difference, without distilling them into formulas or standard cases.</p>
</blockquote>
<p>In this light, then, perhaps we can cast Fowler&#8217;s anecdotes: that it is innately difficult for him to distill the true nature of these experiences into simple narrative for the beginner.</p>
<h1>What distinguishes case study from anecdote?</h1>
<p>There are fairly clear methodological guidelines for conducting formal case studies. To begin with, more (even <em>most</em>) problematically, Fowler does not make data available. Either because of time or NDA, there is no way to confirm any of the claims he makes based on the data<sup><a href="#fn-motiv" name="motiv">6</a></sup>. This means we cannot in good conscience reject rival hypotheses, since there is no formal proof. A case study is one way of deriving scientific knowledge (parallel techniques include experimentation and ethnographic studies). Since the case study is well-suited to investigating problems in context, it has been argued this technique is most suitable for software engineering, given the well-documented challenges research in this area has with reproducibility and isolating confounding factors.</p>
<p>The most important aspects of a case study is to begin with a clear research question (either exploratory or confirmatory), correctly identify meaningful units of analysis (e.g., development teams, specific bugs, software components), and follow a clear methodology for data gathering (using purposive sampling to gather as much variability as possible). The academic would argue, I suppose, that without a clear research question, and an underlying theoretical perspective (e.g., there is a rich, tacit knowledge in development teams, and bug databases do not capture this information), one cannot generalize to a theory.</p>
<p>This is perhaps the most important distinction to keep in mind, particularly since case studies are usually dismissed as anecdotal or trivial by doubters (who desperately want software to be math or physics). In experiments, we select a (hopefully random) sample of a population, and test a specific research hypothesis on them, attempting to isolate the factors we believe truly contribute to the effect. For example, we may ask a set of students to model a problem with either UML or ER diagrams, and try to measure which technique is &#8220;faster&#8221;, &#8220;richer&#8221;, &#8220;more understandable&#8221;. Assuming our study has sufficient power (large enough sample to be considered representative), and we have correctly controlled for unknown variables (unlikely, in my opinion) we can use this data to generalize to the wider population: for example, with a 5% chance of being a random result, we see that UML is 20% faster at modelling a problem.</p>
<p>In case studies, by contrast, we are generalizing to a theory. Let us say that we believe that bug repositories do not capture all the information inherent in bug reports<sup><a href="#fn-aranda" name="aranda">7</a></sup>. We conduct a study at a single company of 10 bugs, interviewing developers, and tracking the bugs throughout their lifecycle. We find that the information that developers know about that particular bug is not completely accessible using artifacts. This suggests that our theory about bug repositories is on to something: at least, it isn&#8217;t rejectable, yet. Such studies are often criticized for focusing on a single domain or company, where the findings may be completely different at a second or third setting. But I think this criticism misses the point. We now know more: that this study should be repeated at other places and in other settings does not invalidate the findings, but merely shows their limits. Instead, the criticism should be directed at the entire field: why do we insist so often on &#8220;new&#8221; results, rather than &#8220;true&#8221; results?</p>
<h1>Challenges with &#8220;grounded theory&#8221; in exploratory case studies</h1>
<p>I think this issue of anecdote vs. case study extends to grounded theory as a way of sense making and theory generation. At best, grounded theory is merely a systematic way of thinking inductively (from multiple &#8220;samples&#8221; to a cohesive theory). At worst, it is highly confirmatory: you find the data you would like to see. Tagging something with a grounded theory label is a way of justifying the conclusions you drew, of formalizing what scientists do anyway.</p>
<p>But again, without the detailed notes, I have no way of assessing whether the codes you identified are reasonable. There was a nice article I read that characterized (Andrew Gelman?) this type of work as &#8220;story-telling&#8221;: we seem to be highly narrative as humans, and so cannot resist spinning a good yarn. This leads to reading into the data effects which are poorly supported. The reality is that in many cases, there is a very weak effect at best; however, we get promoted for significant results, not minor improvements. This leads us to draw conclusions from the data that are not warranted. I worry that the same is true of grounded theory.</p>
<h1>The real challenge: reproducibility</h1>
<p>The real obstacle, of course, is repeating these studies. In isolation very few results mean anything. They must be replicated and reproduced in order to have more validity. This is true of positivist experiments as well as qualitative case studies. Unfortunately very little effort is spent confirming results. Consider the claim that there is a significant factor of difference between good and poor developers. The evidence for this claim is largely old and poorly reported. What we need to do is conduct more studies to test this theory! Yet in software engineering research, testing existing claims is poo-poohed as not innovative. We favour those who generate theories, even if they make little difference or have no good support behind them.</p>
<p>And here is where I believe we can link the academic and the consultant: verifying claims<sup><a href="#fn-verify" name="verify">8</a></sup>. In the piece by Martin Fowler I linked to above, he makes the testable claim that &#8220;any increase in productivity is likely to be proportional to the square root of the increase in people, so doubling a team will get you roughly a 50% increase in productivity&#8221;. Of course this is surrounded by caveats, and yet it is something testable. We ought to be doing this as researchers: in many ways, the consultants and talking heads have generated more than enough theories about software engineering for us academics to begin verifying those claims. Consider:</p>
<ul>
<li>&#8220;Kanban is an evolutionary system for changing workplaces that often leads to revolution&#8221;.</li>
<li>&#8220;Pair programming is more effective than programming as an individual&#8221;.</li>
<li>Test-driven development makes for higher-quality code.</li>
<li>Continuous delivery is preferred to piecewise delivery.</li>
</ul>
<div class="footnotes">
<hr />
<ol>
<li><a name="fn-but"></a>Many academics would point to earlier research which argued the same thing. For example, the notion of incremental and iterative development was not invented in the 1990s&#8212;-see C. Larman and V. Basili, Iterative and Incremental Development&#160;: A Brief History, <em>IEEE Computer</em>, June, 2003. <a href="#here">↩</a>
</li>
<li id="fn-refact">
<p>And boasts some 4100 citations on Google Scholar, with the closest academic papers with that search term coming in around 500. <a href="#refact">↩</a></p>
</li>
<li id="fn-yin">
<p>Yin, Robert K., &#8220;Case Study Research: Design and Methods&#8221;. Sage, 2003. <a href="#yin">↩</a></p>
</li>
<li id="fn-fly">
<p>Bent Flyvbjerg, &#8220;<a href="http://qix.sagepub.com/content/12/2/219">Five Misunderstandings About Case-Study Research</a>&#8221;, Qualitative Inquiry 2006&#160;<strong>12</strong>: 219 <a href="#fly">↩</a></p>
</li>
<li id="fn-clear">
<p>Although to be fair, that was not quite as clear earlier in our knowledge of software engineering. <a href="#clear">↩</a></p>
</li>
<li id="fn-motiv">
<p>But clearly, also no reason to doubt his motivations. <a href="#motiv">↩</a></p>
</li>
<li id="fn-aranda">
<p>J. Aranda and G. Venolia, The secret life of bugs: Going past the errors and omissions in software repositories, in <em>International Conference on Software Engineering</em>, 2009, pp. 298-308. <a href="#aranda">↩</a></p>
</li>
<li id="fn-verify">
<p>I should evaluate how many software engineering research papers are testing existing theories versus creating new ones (if they talk about theory at all: all too many papers are about some new technique or tool validated with a trivial and highly context-dependent data set&#8212;- a practice of which I&#8217;m guilty as well!). <a href="#verify">↩</a></p>
</li>
</ol>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fink08.wordpress.com/1375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fink08.wordpress.com/1375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fink08.wordpress.com/1375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fink08.wordpress.com/1375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fink08.wordpress.com/1375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fink08.wordpress.com/1375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fink08.wordpress.com/1375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fink08.wordpress.com/1375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fink08.wordpress.com/1375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fink08.wordpress.com/1375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fink08.wordpress.com/1375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fink08.wordpress.com/1375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fink08.wordpress.com/1375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fink08.wordpress.com/1375/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1375&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://neilernst.net/2012/02/23/case-studies-and-grounded-theory-in-software/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point>43.659070 -79.396681</georss:point>
		<geo:lat>43.659070</geo:lat>
		<geo:long>-79.396681</geo:long>
		<media:content url="http://1.gravatar.com/avatar/141272f109fbf660ffa001647f17d368?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">neil</media:title>
		</media:content>

		<media:content url="http://fink08.files.wordpress.com/2011/11/screen-shot-2011-11-11-at-13-27-42.png" medium="image">
			<media:title type="html">Yin&#039;s diagram on making inferences(p32)</media:title>
		</media:content>
	</item>
		<item>
		<title>Elsevier Journals for Software Engineering</title>
		<link>http://neilernst.net/2012/01/26/elsevier-journals-for-software-engineering/</link>
		<comments>http://neilernst.net/2012/01/26/elsevier-journals-for-software-engineering/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 08:17:33 +0000</pubDate>
		<dc:creator>Neil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://neilernst.net/?p=1325</guid>
		<description><![CDATA[Given the kerfuffle over Elsevier (see Michael Nielsen’s summary of affairs), I thought it would be instructive to list the Elsevier titles which cover my field of software engineering and information systems, in case people wanted to decide for themselves whether to support this corporation with free labour. I had some doubts about publishing this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1325&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Given the kerfuffle over Elsevier (see Michael Nielsen’s <a href="http://michaelnielsen.org/blog/on-elsevier/">summary of affairs</a>), I thought it would be instructive to list the Elsevier titles which cover my field of software engineering and information systems, in case people wanted to decide for themselves whether to support this corporation with free labour.</p>
<p>I had some doubts about publishing this list and making my views known, since being on the editorial board for journals like these helps one&#8217;s CV. But then, at some point you have to decide whether the larger issues of open access and relevance are important to you. In any event, these venues are, I&#8217;m convinced, making it very difficult for academics like me to have meaningful impact on the practice of software engineering. If it will cost a reader 35$ to read my article, I might as well not bother. Which seems to be what the low impact factors are telling us, anyway. (I&#8217;m not sure why I linked to them &#8230;)</p>
<ul>
<li><a href="http://www.journals.elsevier.com/journal-of-systems-and-software/">Journal of Systems and Software</a> &#8211; IF 1.277 &#8211; Editor Hans Van Vliet</li>
<li><a href="http://www.journals.elsevier.com/science-of-computer-programming/">Science of Computer Programming</a> &#8211; IF 1.282</li>
<li><a href="http://www.journals.elsevier.com/information-and-software-technology/">Information and Software Technology</a> &#8211; IF 1.507 &#8211; Editor Claes Wohlin</li>
<li><a href="http://www.journals.elsevier.com/international-journal-of-human-computer-studies/">International Journal of Human Computer Studies</a> &#8211; IF 1.600</li>
<li><a href="http://www.journals.elsevier.com/advances-in-engineering-software/">Advances in Engineering Software</a> &#8211; IF 1.004</li>
<li><a href="http://www.elsevier.com/wps/find/journaldescription.cws_home/724375/description#description">Applied Computing and Informatics</a> &#8211; no impact factor, run by the King Saud University (see <a href="http://crookedtimber.org/2011/12/30/cash-for-citations/">Crooked Timber</a> for more on Saudi universities).</li>
<li><a href="http://www.journals.elsevier.com/data-and-knowledge-engineering/">Data &amp; Knowledge Engineering</a> &#8211; IF 1.717</li>
<li><a href="http://www.journals.elsevier.com/information-and-management/">Information and Management</a> &#8211; IF 2.627</li>
<li><a href="http://www.journals.elsevier.com/information-systems/">Information Systems</a> &#8211; IF 1.595</li>
<li><a href="http://www.journals.elsevier.com/international-journal-of-human-computer-studies/">International Journal of Human Computer Studies</a> &#8211; IF 1.600</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fink08.wordpress.com/1325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fink08.wordpress.com/1325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fink08.wordpress.com/1325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fink08.wordpress.com/1325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fink08.wordpress.com/1325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fink08.wordpress.com/1325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fink08.wordpress.com/1325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fink08.wordpress.com/1325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fink08.wordpress.com/1325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fink08.wordpress.com/1325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fink08.wordpress.com/1325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fink08.wordpress.com/1325/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fink08.wordpress.com/1325/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fink08.wordpress.com/1325/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1325&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://neilernst.net/2012/01/26/elsevier-journals-for-software-engineering/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point>43.659070 -79.396681</georss:point>
		<geo:lat>43.659070</geo:lat>
		<geo:long>-79.396681</geo:long>
		<media:content url="http://1.gravatar.com/avatar/141272f109fbf660ffa001647f17d368?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">neil</media:title>
		</media:content>
	</item>
		<item>
		<title>The Research Works Act</title>
		<link>http://neilernst.net/2012/01/16/the-research-works-act/</link>
		<comments>http://neilernst.net/2012/01/16/the-research-works-act/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 19:37:11 +0000</pubDate>
		<dc:creator>Neil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://neilernst.net/?p=1321</guid>
		<description><![CDATA[Here is the text of an email I sent to the President of the ACM, Alain Chesnais (achesnais@acm.org) and the director of the ACM&#8217;s lobby effort, Cameron Wilson (cameron.wilson@acm.org). For more context, there is a good article in the Guardian. I am writing to express my concern that the ACM is tacitly supporting the Research [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1321&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here is the text of an email I sent to the President of the ACM, Alain Chesnais (achesnais@acm.org) and the director of the ACM&#8217;s lobby effort, Cameron Wilson (cameron.wilson@acm.org). For more context, there is a <a href="http://www.guardian.co.uk/science/2012/jan/16/academic-publishers-enemies-science">good article</a> in the Guardian.</p>
<blockquote><p>I am writing to express my concern that the ACM is tacitly supporting the Research Works Act. I have read the blog post [1] of M. Chesnais, the ACM president, and to me it reads much like he is an ostrich putting its head in the sand. This act (and others like SOPA) will have major negative implications for research in the computer science disciplines.</p>
<p>That the ACM is international, or that the President is not American, is immaterial. Elsevier is likewise &#8216;international&#8217;, and that has not stopped it from making major financial efforts to influence this legislation. The reality is that US policy and the US market is so important that it has international significance.</p>
<p>I would like the ACM and its affiliates to publicly disavow the Association of American Publishers by cancelling membership. I would also like a public statement to the effect that the provisions of the RWA are anti-science and anti-progress &#8211; in short, contravene (at least) Article 2 of the Constitution, which states the ACM&#8217;s purpose is to foster the &#8220;open interchange of information&#8221;.</p>
<p>This issue is so important that neutrality is not acceptable.</p>
<p>Neil Ernst<br />
Member</p></blockquote>
<p>[1] http://blog.acm.org/president/?p=67</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fink08.wordpress.com/1321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fink08.wordpress.com/1321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fink08.wordpress.com/1321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fink08.wordpress.com/1321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fink08.wordpress.com/1321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fink08.wordpress.com/1321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fink08.wordpress.com/1321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fink08.wordpress.com/1321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fink08.wordpress.com/1321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fink08.wordpress.com/1321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fink08.wordpress.com/1321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fink08.wordpress.com/1321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fink08.wordpress.com/1321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fink08.wordpress.com/1321/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1321&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://neilernst.net/2012/01/16/the-research-works-act/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>43.659070 -79.396681</georss:point>
		<geo:lat>43.659070</geo:lat>
		<geo:long>-79.396681</geo:long>
		<media:content url="http://1.gravatar.com/avatar/141272f109fbf660ffa001647f17d368?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">neil</media:title>
		</media:content>
	</item>
		<item>
		<title>My new gig at UBC</title>
		<link>http://neilernst.net/2011/11/15/my-new-gig-at-ubc/</link>
		<comments>http://neilernst.net/2011/11/15/my-new-gig-at-ubc/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 20:41:17 +0000</pubDate>
		<dc:creator>Neil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://neilernst.net/?p=1294</guid>
		<description><![CDATA[It has been an eventful fall. As I finished my PHD writing in late August, I had two conferences to attend &#8212; the Requirements Engineering conference in Italy, and the International Workshop on Principles of Software Evolution in Hungary. Following that, I travelled directly to Vancouver to begin a new position at UBC with Gail [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1294&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It has been an eventful fall. As I finished my PHD writing in late August, I had two conferences to attend &#8212; the <a href="http://re11.fbk.eu/">Requirements Engineering</a> conference in Italy, and the<a href="http://pleiad.cl/iwpse-evol/"> International Workshop on Principles of Software Evolution</a> in Hungary. Following that, I travelled directly to Vancouver to begin a new position at UBC with Gail Murphy&#8217;s group (the <a href="http://www.cs.ubc.ca/labs/spl/">Software Practices Lab</a>). I am also responsible for teaching <a href="http://www.ugrad.cs.ubc.ca/~cs310/">CPSC 310</a>, the third-year software engineering course here.</p>
<p>At the same time, or near enough as makes little difference, my wife gave birth to our second son in Toronto. Since everything went swimmingly, she and the children joined me at our place in Vancouver at the end of October. Needless to say life went from work-oriented to family-and-work-oriented in short order.</p>
<p>So the fall has been a little hectic, as we all get used to the new situation. I have found it challenging to get everything properly scheduled (children have a way of disrupting my careful planning). As with most university instructors who also do research, I have found it hard to balance my teaching responsibilities with my research duties. The most effective thing, so far, is to not even allow oneself to consider teaching tasks for certain periods of time. At any rate, it is taking a little while to transition to a new environment and new research goals.</p>
<p>The key for a post-doctoral fellow is to publish good quality papers to enhance one&#8217;s academic CV. Since the positions are typically two to three years long, that means you have at most two or three deadlines per conference to target in your time as a post-doc. That makes it challenging, since (in my experience) each paper is the product of at least one year&#8217;s work. You can do the math, but essentially time is of the essence.</p>
<p>Our group here is one focused on the software development task, by and large: how humans write and understand code. This makes it a bit different than what I worked on for <a href="http://fink08.files.wordpress.com/2011/11/ernst-thesis.pdf">my PHD</a>, which ended up fairly theoretical, relying a lot on automated reasoning and formalization. However, the purpose of taking the position at UBC was two-fold. One, I think working with smart people of any persuasion will inevitably rub off on you &#8211; you need to work with the best to raise your game. If you aren&#8217;t feeling challenged and inferior, at least occasionally, I think you are falling behind. More specifically, my intent was to examine my PHD work in the context of software development.</p>
<h2>Research questions</h2>
<p>As part of my adjustment period to the new environment, I&#8217;ve been reading and thinking at a higher level than I typically get time for. I want to refine where I would like to aim my research career for the next five years. To that end, I&#8217;ve been listing some research questions that interest me. I list some below, and intend to post more about them in subsequent weeks. I think my overriding focus is starting to clear up: I&#8217;m interested in the intersection of business objectives with the software development process. In particular:</p>
<ul>
<li>How do business objectives manifest themselves throughout the software lifecycle?</li>
<li>How do we reconcile a yearly financial cycle with the different cadences of software projects (or design in general).</li>
<li>How <em>do </em>developers handle software maintenance?</li>
<li>What exactly is the<a href="http://catenary.wordpress.com/2011/04/19/naurs-programming-as-theory-building/"> theory-building approach</a> to software development?</li>
</ul>
<div>If you are likewise interested in these questions, (or better yet, have already solved them), let&#8217;s collaborate! Please <a href="mailto:neil@neilernst.net">get in touch</a>.</div>
<p></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fink08.wordpress.com/1294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fink08.wordpress.com/1294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fink08.wordpress.com/1294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fink08.wordpress.com/1294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fink08.wordpress.com/1294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fink08.wordpress.com/1294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fink08.wordpress.com/1294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fink08.wordpress.com/1294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fink08.wordpress.com/1294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fink08.wordpress.com/1294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fink08.wordpress.com/1294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fink08.wordpress.com/1294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fink08.wordpress.com/1294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fink08.wordpress.com/1294/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1294&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://neilernst.net/2011/11/15/my-new-gig-at-ubc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<georss:point>43.659070 -79.396681</georss:point>
		<geo:lat>43.659070</geo:lat>
		<geo:long>-79.396681</geo:long>
		<media:content url="http://1.gravatar.com/avatar/141272f109fbf660ffa001647f17d368?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">neil</media:title>
		</media:content>
	</item>
		<item>
		<title>What I learned at UofT</title>
		<link>http://neilernst.net/2011/10/24/what-i-learned-at-uoft/</link>
		<comments>http://neilernst.net/2011/10/24/what-i-learned-at-uoft/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 03:56:18 +0000</pubDate>
		<dc:creator>Neil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://neilernst.net/?p=1280</guid>
		<description><![CDATA[My dissertation is nearing approval (touch wood) and I have started a new position as a Post-doctoral Research Fellow and lecturer at UBC. I wanted to summarize my experiences in grad school as a reflective exercise. I often found I got down on myself during the process: it is an incredible challenge to acquire a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1280&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My dissertation is nearing approval (touch wood) and I have started a new position as a Post-doctoral Research Fellow and lecturer at UBC. I wanted to summarize my experiences in grad school as a reflective exercise. I often found I got down on myself during the process: it is an incredible challenge to acquire a research Ph.D. at one of the top-10 computer science schools in the world. I&#8217;m extremely proud of my past selfs for persevering and allowing 2011 Neil to reap the reward, as it were. &#8216;Cause 2006-2008 Neils put up with a lot of sh*t.</p>
<p>These are all things I knew nothing about when I arrived for my PhD in 2004:</p>
<p><strong>Languages and Tools</strong></p>
<ul>
<li>Python (matplotlib, numpy, networkx)</li>
<li>Lisp (SBCL and Clozure)</li>
<li>Git and SVN</li>
<li>Twitter, Facebook, WordPress</li>
<li>Mendeley</li>
<li>Latex + Scrivener + MMD3</li>
<li>Flash / Flex</li>
<li>Sqlite</li>
<li>Ruby/RSpec/Rails/Gems</li>
</ul>
<div><strong>Frameworks</strong></div>
<div>
<ul>
<li>MDE with Eclipse and GMF</li>
<li>Logic programming with ATMS</li>
</ul>
</div>
<div><strong>Theories</strong></div>
<div>
<ul>
<li>Knowledge representation</li>
<li>Propositional logic</li>
<li>Non-monotonic logic</li>
<li>Latent Dirichlet Allocation</li>
<li>Agile software development</li>
</ul>
<div><strong>Miscellaneous</strong></div>
<div>
<ul>
<li>A smattering of Italian (<em>via</em> <em>ferrate</em> means &#8220;iron ways&#8221;).</li>
<li>The importance of good coffee.</li>
<li>How to change a diaper at 4am without turning on the lights.</li>
<li><em>Friends</em>: It&#8217;s somewhat trite to say that it was the people you met who you will remember, but that&#8217;s true. I think one of the most enjoyable things about moving on to a new experience is the idea that there will be all of these people you will call friends in five years, of whom you know nothing now.</li>
<li>How to prepare and defend a 60,000 word opus starting with no knowledge of the area, no relevant background skills, and little to no published work. In that context seven years seems about right.</li>
</ul>
<div>Thanks to my wife and family for getting me to this point. They found the right combination of &#8220;why are you doing this again&#8221; and &#8220;you can do it&#8221;.</div>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fink08.wordpress.com/1280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fink08.wordpress.com/1280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fink08.wordpress.com/1280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fink08.wordpress.com/1280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fink08.wordpress.com/1280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fink08.wordpress.com/1280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fink08.wordpress.com/1280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fink08.wordpress.com/1280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fink08.wordpress.com/1280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fink08.wordpress.com/1280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fink08.wordpress.com/1280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fink08.wordpress.com/1280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fink08.wordpress.com/1280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fink08.wordpress.com/1280/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1280&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://neilernst.net/2011/10/24/what-i-learned-at-uoft/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>43.659070 -79.396681</georss:point>
		<geo:lat>43.659070</geo:lat>
		<geo:long>-79.396681</geo:long>
		<media:content url="http://1.gravatar.com/avatar/141272f109fbf660ffa001647f17d368?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">neil</media:title>
		</media:content>
	</item>
		<item>
		<title>Ultra-large-scale systems: fundamentally different?</title>
		<link>http://neilernst.net/2011/09/30/ultra-large-scale-systems-fundamentally-different/</link>
		<comments>http://neilernst.net/2011/09/30/ultra-large-scale-systems-fundamentally-different/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 19:54:01 +0000</pubDate>
		<dc:creator>Neil</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[lscits]]></category>
		<category><![CDATA[software-engineering]]></category>
		<category><![CDATA[ulss]]></category>

		<guid isPermaLink="false">http://neilernst.net/?p=1289</guid>
		<description><![CDATA[An emerging trend in software research is a focus on complex software systems. These systems are typically: decentralized: a lack of hierarchical control. display emergent behaviour: unexpected behaviour arising from unexpected interaction effects. subject to network effects: a rich mixture of human and computer agents. large-scale: millions of lines of code, thousands of agents. An example of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1289&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>An emerging trend in software research is a focus on complex software systems. These systems are typically:</p>
<ul>
<li>decentralized: a lack of hierarchical control.</li>
<li>display emergent behaviour: unexpected behaviour arising from unexpected interaction effects.</li>
<li>subject to network effects: a rich mixture of human and computer agents.</li>
<li>large-scale: millions of lines of code, thousands of agents.</li>
</ul>
<p>An example of such a system is the stock market, or the US military&#8217;s <a href="http://en.wikipedia.org/wiki/BCT_Modernization">future soldier program</a>. Two major initiatives have been developed to focus on these systems: the Software Engineering Institute&#8217;s <a href="http://www.sei.cmu.edu/uls/index.cfm">ULSS program</a> and the <a href="http://lscits.cs.bris.ac.uk/index.html">Large-Scale Complex IT Systems</a> (LSCITS) program in the UK. According to these programs, there is a &#8220;Software Problem&#8221;, and the tools and techniques we use today must be radically improved if they are to manage these new challenges.</p>
<p>But as Peter Norvig illustrates <a href="http://blogs.scientificamerican.com/at-scientific-american/2011/08/23/systems-analysis-look-back-1966-scientific-american-article/#">in this article</a>, we have managed to scale from the half-million instruction programs of the 1970s to the hundred-million instruction programs of today. So why do we expect not to handle the billions of instructions in a ULS system? I&#8217;m not suggesting we build software perfectly today. There are many improvements possible. But I&#8217;m not sure I agree there is some fundamental challenge we cannot currently address.</p>
<p>One thing I think is important is the ability to fail gracefully. One lesson that seems to have been learned over the years (and the idea surfaces from the start in SE) is that iteration is fundamental. That means building systems such that failure is not fatal. Naturally, in some places that isn&#8217;t possible (<a href="http://www.theregister.co.uk/2010/07/27/buggy_pacemaker_code/">medical devices perhaps</a>). But even in these seemingly obvious examples, it should be possible to fail usefully: to alert someone to the problem, supporting remote software updates, or incorporating more adaptation capability.</p>
<p>The point of this post is to ask whether the statement: &#8220;<a href="http://lscits.cs.bris.ac.uk/overview.html#rational">Our ability to develop, maintain and manage such systems is falling behind the growth in their complexity</a>.&#8221; has any evidence behind it. Standish reports need not apply.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fink08.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fink08.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fink08.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fink08.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fink08.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fink08.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fink08.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fink08.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fink08.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fink08.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fink08.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fink08.wordpress.com/1289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fink08.wordpress.com/1289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fink08.wordpress.com/1289/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=neilernst.net&#038;blog=62241&#038;post=1289&#038;subd=fink08&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://neilernst.net/2011/09/30/ultra-large-scale-systems-fundamentally-different/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<georss:point>43.659070 -79.396681</georss:point>
		<geo:lat>43.659070</geo:lat>
		<geo:long>-79.396681</geo:long>
		<media:content url="http://1.gravatar.com/avatar/141272f109fbf660ffa001647f17d368?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">neil</media:title>
		</media:content>
	</item>
	</channel>
</rss>
