<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-4197487009537491364</id><updated>2010-02-02T10:48:07.507-07:00</updated><title type='text'>Mark Kollasch's Incomparable Software-Making Weblog</title><subtitle type='html'>Go ahead and try to compare it. You can't.</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4197487009537491364/posts/default'/><link rel='alternate' type='text/html' href='http://www.frontal-lobe.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.frontal-lobe.net/atom.xml'/><author><name>Mark Kollasch</name><uri>http://www.blogger.com/profile/04009107446914687794</uri><email>mark@frontal-lobe.net</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4197487009537491364.post-3073062161131366686</id><published>2010-02-02T10:48:00.000-07:00</published><updated>2010-02-02T10:48:07.515-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seminar'/><category scheme='http://www.blogger.com/atom/ns#' term='class'/><title type='text'>Software Evolution</title><content type='html'>Discussed the paper &lt;i&gt;Software Evolution&lt;/i&gt; by Meir Lehman and Juan C. Fernández-Ramil, as published in chapter 1 of &lt;i&gt;Software Evolution and Feedback: Theory and Practice&lt;/i&gt; by N. Madhavji, J. Ramil, and D. Perry (editors).&lt;br /&gt;&lt;br /&gt;Interesting notions on display here. The authors reuse a classification of programs into S-type and E-type, where S-type programs hew precisely to a formal specification (and, consequently, appear principally in academic contexts or as subsets of E-type programs) and E-type programs are of the more conventional sort, meant to be used by actual users and, accordingly, are subject to evolutionary forces over its lifetime as its developers attempt to satisfy the users.&lt;br /&gt;&lt;br /&gt;"Evolution," they say, specifically refers to the effects of maintenance, or to maintenance itself. "Maintenance," then, would be a misnomer. Driven by user feedback, or by a motivation to retain user satisfaction, programs will increase in functionality and other measures, such as size or some notion of complexity, or so the thesis goes. This can (and, in fact, was) observed in several programs; the article makes reference to a study tracking the size of IBM OS/360 over many releases, demonstrating that the size of the operating system increased steadily for twenty releases, then becomes unstable. An exploration of the instability ensues; a possible explanation is that the "ripple" resembles a feedback loop: tenuous, but plausible. The original study may provide necessary detail.&lt;br /&gt;&lt;br /&gt;Thinking of software development as a self-directing process yields a degree of insight. The authors specifically note that evolutionary behavior is evident in software once more than one level of management is involved, as individual groups' activity may be directed, but the interaction between them is more chaotic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4197487009537491364-3073062161131366686?l=www.frontal-lobe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4197487009537491364/3073062161131366686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4197487009537491364&amp;postID=3073062161131366686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4197487009537491364/posts/default/3073062161131366686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4197487009537491364/posts/default/3073062161131366686'/><link rel='alternate' type='text/html' href='http://www.frontal-lobe.net/2010/02/software-evolution.html' title='Software Evolution'/><author><name>Mark Kollasch</name><uri>http://www.blogger.com/profile/04009107446914687794</uri><email>mark@frontal-lobe.net</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15654954508671282406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4197487009537491364.post-8270261375317369193</id><published>2010-01-26T10:51:00.000-07:00</published><updated>2010-01-26T10:51:32.336-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='class'/><title type='text'>Quantification</title><content type='html'>An open question in software is the matter of obtaining useful quantitative measures describing programs, both artifacts and their creation. Such measures, applied to large real-world data sets, would, it is hoped, lead the way to a sort of empirically-determined Holy Grail of best practices... for given values of "best," at least. Producing concrete, meaningful, complete, and adequate descriptions of phenomena which can be identified (preferably automatically) in code and the development history behind it would permit the discovery, by way of statistical analysis, of predictive models describing software.&lt;br /&gt;&lt;br /&gt;I will give an example.&lt;br /&gt;&lt;br /&gt;Suppose you want your software to be as good as possible. This is, of course, a tremendous assumption. Well, what do you mean by "good?" Let's start a bit less subjectively. Suppose you want your software to be, to draw an attribute out of a hat, as &lt;i&gt;maintainable&lt;/i&gt; as possible, by which you mean you want it to take less effort to maintain. Fortunately, you've got data about projects which can be generalized to apply to your own. So you analyze the data to find which attributes correlate well to the effort used in maintenance, give or take a few caveats, invariants, and sanity checks. Optimize those attributes in your own process, and you'll know exactly how to carry out your project and just how maintainable you can expect it to be, and even how likely it is that it won't turn out that way.&lt;br /&gt;&lt;br /&gt;There are, clearly, a number of steps in that procedure which are filled in by what amounts to wishful thinking. The science is not, as they say, in. That's what this class is for. We can identify more informative composite measures than the raw data. We can develop ways to automatically identify data attributes which are not obvious, perhaps most interestingly locating the use of explicit design patterns, or even hitherto-unidentified patterns used unintentionally. We can try to reverse-engineer the design intentions of developers on projects where there are no process records, and also beg open-source developers to begin keeping such records, in hopes that our successors don't have to bother with this dreary guesswork.&lt;br /&gt;&lt;br /&gt;And if we succeed? Another thin layer will be peeled away from the vast onion of misinformation, superstition, and ad-hoc stumbling in software engineering. I think I'm going to cry.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4197487009537491364-8270261375317369193?l=www.frontal-lobe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4197487009537491364/8270261375317369193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4197487009537491364&amp;postID=8270261375317369193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4197487009537491364/posts/default/8270261375317369193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4197487009537491364/posts/default/8270261375317369193'/><link rel='alternate' type='text/html' href='http://www.frontal-lobe.net/2010/01/quantification.html' title='Quantification'/><author><name>Mark Kollasch</name><uri>http://www.blogger.com/profile/04009107446914687794</uri><email>mark@frontal-lobe.net</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15654954508671282406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4197487009537491364.post-5267602888703734044</id><published>2010-01-21T10:29:00.000-07:00</published><updated>2010-01-21T10:29:50.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>Reboot</title><content type='html'>I am enrolled in a master's degree program in computer science at Colorado State University. In one of my classes, Advanced Topics in Software Engineering: Measurement, Analysis, &amp;amp; Evaluation, it is a requirement for each student to keep a weblog consisting of comments on the other students' presentations. This seems a convenient excuse for me to throw my hat back in the blogging ring.&lt;br /&gt;&lt;br /&gt;So, in addition to the minimal class requirements, I will use this space to comment on related material and concepts, whether within the course's curriculum or without. Topics will generally fall in the realm of computer science, although I make no promises, since digression is half the fun. I will write in a style whose principal aim is to examine and understand the concepts myself, so many posts will be unsuitable for laymen, while others will be unsuitable for experts.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4197487009537491364-5267602888703734044?l=www.frontal-lobe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4197487009537491364/5267602888703734044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4197487009537491364&amp;postID=5267602888703734044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4197487009537491364/posts/default/5267602888703734044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4197487009537491364/posts/default/5267602888703734044'/><link rel='alternate' type='text/html' href='http://www.frontal-lobe.net/2010/01/reboot.html' title='Reboot'/><author><name>Mark Kollasch</name><uri>http://www.blogger.com/profile/04009107446914687794</uri><email>mark@frontal-lobe.net</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15654954508671282406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>