<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://lambda-the-ultimate.org">
<channel>
 <title>Lambda the Ultimate - Software Engineering</title>
 <link>http://lambda-the-ultimate.org/taxonomy/term/17/0</link>
 <description>Programming language issues related to SE. For example: module systems, genericity etc.</description>
 <language>en</language>
<item>
 <title>Catch me if you can: Towards type-safe, hierarchical, lightweight, polymorphic and efficient error management in OCaml</title>
 <link>http://lambda-the-ultimate.org/node/2892</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.univ-orleans.fr/lifo/Members/David.Teller/publications/ml2008.pdf&quot;&gt;Catch me if you can: Towards type-safe, hierarchical, lightweight, polymorphic and efficient error management in OCaml&lt;/a&gt;, by David Teller, Arnaud Spiwack, Till Varoquaux:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;This is the year 2008 and ML-style exceptions are everywhere. Most modern languages, whether academic or industrial, feature some variant of this mechanism. Languages such as Java even have a degree of out-of-the-box static coverage-checking for such exceptions, which is currently not available for ML languages, at least not without resorting to external tools.&lt;/p&gt;
&lt;p &gt;In this document, we demonstrate a design principle and a tiny library for managing errors in a functional manner, with static coverage-checking, automatically-inferred, structurally typed and hierarchical exceptional cases, all of this for what we believe is a reasonable run-time cost. Our work is based on OCaml and features simple uses of higher-order programming, low-level exceptions, phantom types, polymorphic variants and compile-time code&lt;br &gt;
rewriting.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Exhaustively checked, user-friendly exception handling was a bit of an open problem for awhile. As the paper details, languages supported either cumbersome, exhaustively checked polymorphic exceptions, as in Haskell, or we had unchecked easily extensible monomorphic exceptions, as in ML, or we had checked, extensible exceptions using a universal type as in Java.&lt;/p&gt;
&lt;p &gt;Supporting exhaustively checked, easily extensible polymorphic exceptions seemed quite a challenge, which this paper solves using monadic error handling and nested polymorphic variants. The paper also gives a good overview of current techniques of exception checking in OCaml, ie. &lt;a href=&quot;http://caml.inria.fr/pub/old_caml_site/ocamlexc/ocamlexc.htm&quot;&gt;ocamlexc&lt;/a&gt;.&lt;/p&gt;
&lt;p &gt;The performance of such exceptions is understandably lower than native exceptions, given all the thunking and indirection that monads entail. The authors attempt various implementations and test their performance against native exceptions. Ultimately, monadic error management seems acceptable for actual error handling, but not for control flow as native exceptions are sometimes used in OCaml.&lt;/p&gt;
&lt;p &gt;One interesting extension is to consider how efficient the implementations would be given more sophisticated control flow operators, such as continuations, coroutines, or delimited continuations, or whether native exceptions can be salvaged using a type and effects system in place of monads.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Fri, 11 Jul 2008 11:16:54 -0400</pubDate>
</item>
<item>
 <title>The irreducible physicality of security properties</title>
 <link>http://lambda-the-ultimate.org/node/2773</link>
 <description>&lt;p &gt;The recent discussion around &lt;a href=&quot;http://lambda-the-ultimate.org/node/2757&quot;&gt;Safe and Secure Software in Ada&lt;/a&gt; involved some amount of discussion around what is involved in proving software secure, and what role do PLs play in this.  I&#039;d like to recommend two papers to advance this discussion:&lt;/p&gt;
&lt;ul &gt;
&lt;li &gt;First, Rao &amp;amp; Rohatgi (2001)&#039;s &lt;a href=&quot;http://eprint.iacr.org/2001/037.pdf&quot;&gt;EMpowering Side-channel attacks&lt;/a&gt;, which discusses a fairly new technology for gathering information from running systems by monitoring their EM emissions; and
&lt;li &gt;Rae &amp;amp; Wildman (2003)&#039;s &lt;a href=&quot;http://it.uq.edu.au/~luke/taxonomy.pdf&quot;&gt;A Taxonomy of Attacks on Secure Devices&lt;/a&gt;, which provides a synthetic classification of attacks on computer systems based on the attackers degree of access to the machinery and the attacker&#039;s objectives, and which catalogues a range of attacks into the classification.
&lt;/ul&gt;
&lt;p &gt;So I hereby advance three slogans:&lt;/p&gt;
&lt;ol &gt;
&lt;li &gt;&lt;b &gt;Security is physical&lt;/b&gt;: neither applications nor operating systems can satisfy elementary security properties, but only deployed computer systems.  This is because elementary security properties are about what the attacker does, which ultimately has a physical basis;
&lt;li &gt;&lt;b &gt;Security is non-modular&lt;/b&gt;: Programming languages and software engineering practices can ensure that software possesses properties helpful to security, but the properties are only meaningful in the context of a strategy to ensure a computer system satisfies its security policy;
&lt;li &gt;&lt;b &gt;We should not talk of secure programming languages and secure programs&lt;/b&gt;, such talk &lt;i &gt;does&lt;/i&gt; mislead; to talk instead of software being &lt;i &gt;secureable&lt;/i&gt; might promote better understanding.
&lt;/ol&gt;
&lt;p &gt;&lt;b &gt;Edited&lt;/b&gt; following &lt;a href=&quot;http://lambda-the-ultimate.org/node/2773#comment-41263&quot;&gt;Dave Griffith&#039;s remarks&lt;/a&gt;. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Tue, 15 Apr 2008 10:07:08 -0400</pubDate>
</item>
<item>
 <title>Applied Metamodelling: A Foundation for Language Driven Development</title>
 <link>http://lambda-the-ultimate.org/node/2711</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.ceteva.com/book.html&quot;&gt;Applied Metamodelling: A Foundation for Language Driven Development&lt;/a&gt; (2004)&lt;br &gt;
by Tony Clark, Paul Sammut, James Willans&lt;/p&gt;
&lt;p &gt;An excerpt: &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Language-driven development is fundamentally based on the ability to rapidly design new languages and tools in a unified and interoperable manner. We argue that existing technologies do not provide this capability, but a language engineering approach based on metamodelling can. The detailed study of metamodelling and how it can realise the Language-Driven Development vision will form the focus for the remainder of this book.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;In software engineering circles the term &quot;language driven development&quot; is synonymous with &quot;language oriented programming&quot;, a term which LtU members are more familiar with (thanks to Martin Ward&#039;s article &lt;a href=&quot;http://www.cse.dmu.ac.uk/~mward/martin/papers/middle-out-t.pdf&quot;&gt;Language Oriented Programming&lt;/a&gt; which first appeared in 1994, and then Martin Fowler&#039;s essays on the topic). The book hasn&#039;t appeared on the radar here on LtU, despite &lt;a href=&quot;http://scholar.google.ca/scholar?hl=en&amp;amp;lr=&amp;amp;cites=13735337140062296561&quot;&gt;41 citations&lt;/a&gt;. I suspect this is due in part to only &lt;a href=&quot;http://citeseer.ist.psu.edu/736058.html&quot;&gt;one citation at Citeseer&lt;/a&gt;, and the lack of cross-talk between computer scientists and software engineers.&lt;/p&gt;
&lt;p &gt;There are a lot of similarities between the &lt;a href=&quot;http://www.ceteva.com/xmf.html&quot;&gt;XMF language&lt;/a&gt; (&lt;a href=&quot;http://lambda-the-ultimate.org/node/2686&quot;&gt;discussion at LtU&lt;/a&gt;) and that of the &lt;a href=&quot;http://www.chrisseaton.com/katahdin/&quot;&gt;Katahdin language&lt;/a&gt; (&lt;a href=&quot;http://lambda-the-ultimate.org/node/2303&quot;&gt;discussion at LtU&lt;/a&gt;). Other related discussions here at LtU, include &lt;a href=&quot;http://lambda-the-ultimate.org/node/815&quot;&gt;Language Workbenches: The Killer App for DSLs&lt;/a&gt; - about the essay by Martin Fowler, &lt;a href=&quot;http://lambda-the-ultimate.org/node/1851&quot;&gt;Ralph Johnson: Language workbenches&lt;/a&gt; - a response to Fowler&#039;s essay, &lt;a href=&quot;http://lambda-the-ultimate.org/node/577&quot;&gt;XActium - Lightweight Language Engineering?&lt;/a&gt; - which discusses an essay about a previous version of XMF, &lt;a href=&quot;http://lambda-the-ultimate.org/node/1690&quot;&gt;Generating Interpreters?&lt;/a&gt; , &lt;a href=&quot;http://lambda-the-ultimate.org/node/377&quot;&gt;Language Oriented Programming&lt;/a&gt; - discusses an essay by Jetbrain&#039;s Sergey Dmitriev, &lt;a href=&quot;http://lambda-the-ultimate.org/node/1693&quot;&gt;&quot;Language Oriented Programming&quot; Meta Programming System&lt;/a&gt; - discussion of the Jetbrain MPS system, &lt;a href=&quot;http://lambda-the-ultimate.org/node/46&quot;&gt;The DSL, MDA, UML thing again...&lt;/a&gt; - an older discussion on the relationship between DSLs and MDA. &lt;/p&gt;
&lt;p &gt;(Disclaimer: Some may notice that I am mentioned on the XMF web site, but this is just because I subjected their XMF language to a number of grueling challenges which they passed with flying colors: see the &lt;a href=&quot;http://www.ceteva.com/XMF/&quot;&gt;language snippets&lt;/a&gt; in the documentation. I have no affiliation with their company.) &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/15">Meta-Programming</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Fri, 07 Mar 2008 14:07:33 -0500</pubDate>
</item>
<item>
 <title>Software Craftsmanship: Apprentice to Journeyman</title>
 <link>http://lambda-the-ultimate.org/node/2691</link>
 <description>&lt;p &gt;O&#039;Reilly is hosting a collaborative book/wiki called 
&lt;a href=&#039;http://softwarecraftsmanship.oreilly.com/wiki&#039;&gt;Software Craftsmanship: Apprentice to Journeyman&lt;/a&gt;. It&#039;s structured as a series of &quot;recipes&quot; on how to approach different aspects of software development.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Sun, 24 Feb 2008 16:50:01 -0500</pubDate>
</item>
<item>
 <title>Jumbala : An Action Language for UML State Machines</title>
 <link>http://lambda-the-ultimate.org/node/2657</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.tcs.hut.fi/Publications/A101.shtml&quot;&gt;Jumbala : An Action Language for UML State Machines&lt;/a&gt;, Juro Dubrovin, Master&#039;s Thesis. &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;UML 2.0 is a language for modeling complex software systems. A UML model may describe the dynamic aspects of software as well as the static structure. We concentrate on models of reactive systems, such as embedded controllers or telecommunications switches. The behavior of such systems is modeled using UML state machines. Although UML defines the structure of state machines, it leaves open the choice of an action language,which is the language used to specify how the transitions of a state machine affect the configuration of the underlying model.&lt;/p&gt;
&lt;p &gt;A UML action language named Jumbala is introduced. The language has been designed as part of a project where the goal is to formally analyze behavioral UML models. Jumbala is based on the Java programming language. It has nearly the same syntax and semantics for statements and expressions as Java. Some new programming constructs have been added to facilitate state machine modeling. Jumbala also supports object-oriented programming with classes and inheritance. &lt;/p&gt;
&lt;p &gt;An interpreter that parses and executes Jumbala programs has been developed. The interpreter will be part of a prototype tool set for analyzing the behavior of reactive computer systems modeled in UML.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is interesting because it is another example of efforts from the modeling community towards combining models and programming languages to provide a single compilable specification of software. Some of these efforts are being coordinated using the term &lt;a href=&quot;http://www.omg.org/mda/specs.htm&quot;&gt;model-driven architecture (MDA)&lt;/a&gt;. &lt;/p&gt;
&lt;p &gt;[edit: fixed formatting issues]&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/14">OOP</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Tue, 05 Feb 2008 14:17:04 -0500</pubDate>
</item>
<item>
 <title>Kermeta Programming Language</title>
 <link>http://lambda-the-ultimate.org/node/2650</link>
 <description>&lt;p &gt;In my recent adventures researching modeling languages I came across a language not previously mentioned on Lambda-the-Ultimate.org called &lt;a href=&quot;http://www.kermeta.org/documents/manual/&quot;&gt;Kermeta&lt;/a&gt;. From the reference manual: &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Kermeta is a Domain Specific Language dedicated to metamodel engineering. It fills the gap let by MOF which defines only the structure of meta-models, by adding a way to specify static semantic  (similar to OCL) and dynamic semantic (using operational semantic in the operation of the metamodel). Kermeta uses the object-oriented paradigm like Java or Eiffel.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;There is a list of &lt;a href=&quot;http://www.kermeta.org/documents/articles/&quot;&gt;published papers related to Kermeta here&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/14">OOP</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Sun, 03 Feb 2008 01:54:39 -0500</pubDate>
</item>
<item>
 <title>J&amp;: Nested Intersection for Scalable Software Composition</title>
 <link>http://lambda-the-ultimate.org/node/2591</link>
 <description>&lt;a href=&quot;http://www.cs.cornell.edu/andru/papers/compose.pdf&quot;&gt;J&amp;amp;: Nested Intersection for Scalable Software Composition&lt;/a&gt;
by Nathaniel Nystrom, Xin Qi, Andrew C. Myers. 2006.
&lt;blockquote &gt;
We identify the following requirements for general extension
and composition of software systems:
&lt;ol &gt;
&lt;li &gt; Orthogonal extension: Extensions may require both new data
types and new operations.
&lt;li &gt; Type safety: Extensions cannot create run-time type errors.
&lt;li &gt; Modularity: The base system can be extended without modifying
or recompiling its code.
&lt;li &gt; Scalability: Extensions should be scalable. The amount of code
needed should be proportional to the functionality added.
&lt;li &gt; Non-destructive extension: The base system should still be
available for use within the extended system.
&lt;li &gt; Composability of extensions.
&lt;/ol&gt;
The first three of these requirements correspond to Wadler’s expression
problem. Scalability (4) is often but not necessarily
satisfied by supporting separate compilation; it is important for extending
large software. Non-destructive extension (5) enables existing
clients of the base system and also the extended system itself
to interoperate with code and data of the base system, an important
requirement for backward compatibility. Nested inheritance
addresses the first five requirements, but it does not support extension
composition. Nested intersection adds this capability.
&lt;/blockquote&gt;
Compare this approach to one taken by Scala (or read the section 7).</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Fri, 04 Jan 2008 07:44:32 -0500</pubDate>
</item>
<item>
 <title>DySy: Dynamic Symbolic Execution for Invariant Inference</title>
 <link>http://lambda-the-ultimate.org/node/2554</link>
 <description>&lt;small&gt;&lt;a href=&quot;http://research.microsoft.com/research/pubs/view.aspx?0rc=p&amp;type=technical+report&amp;id=1394&quot;&gt;DySy: Dynamic Symbolic Execution for Invariant Inference&lt;/a&gt;. Christoph Csallner,  Nikolai Tillmann, Yannis Smaragdakis&lt;/small&gt;&lt;p&gt;
&lt;blockquote&gt;
Dynamically discovering likely program invariants from concrete test executions has emerged as a highly promising software engineering technique. Dynamic invariant inference has the advantage of succinctly summarizing both “expected”program inputs and the subset of program behaviors that is normal under those inputs. In this paper, we introduce a technique that can drastically increase the relevance of inferred invariants, or reduce the size of the test suite required to obtain good invariants. Instead of falsifying invariants produced by pre-set patterns, we determine likely program invariants by combining the concrete execution of actual test cases with a simultaneous symbolic execution of the same tests. The symbolic execution produces abstract conditions over program variables that the concrete tests satisfy during their execution. In this way, we obtain the benefits of dynamic inference tools like Daikon: the inferred invariants correspond to the observed program behaviors. At the same time, however, our inferred invariants are much more suited to the program at hand than Daikon’s hardcoded invariant patterns. The symbolic invariants are literally derived from the program text itself, with appropriate value substitutions as dictated by symbolic execution. We implemented our technique in the DySy tool, which utilizes a powerful symbolic execution and simplification engine. The results confirm the benefits of our approach. In Daikon’s prime example benchmark, we infer the majority of the interesting Daikon invariants, while eliminating invariants that a human user is likely to consider irrelevant.&lt;/blockquote&gt;&lt;p&gt;
The Daikon invariant detector mentioned in the abstract is &lt;a href=&quot;http://groups.csail.mit.edu/pag/daikon/&quot;&gt;here&lt;/a&gt;.&lt;p&gt;
Seems like a pretty straightforward idea, I guess, but as always: God is in the details. </description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Tue, 04 Dec 2007 02:11:57 -0500</pubDate>
</item>
<item>
 <title>Samurai - Protecting Critical Data in Unsafe Languages</title>
 <link>http://lambda-the-ultimate.org/node/2540</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://research.microsoft.com/research/pubs/view.aspx?0rc=p&amp;amp;type=technical+report&amp;amp;id=1173&quot;&gt;Samurai - Protecting Critical Data in Unsafe Languages&lt;/a&gt;. Karthik Pattabiraman, Vinod Grover, Benjamin G. Zorn.&lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;
Programs written in type-unsafe languages such as C and C++ incur costly memory errors that result in corrupted data structures, program crashes, and incorrect results. We present a data-centric solution to memory corruption called critical memory, a memory model that allows programmers to identify and protect data that is critical for correct program execution. Critical memory defines operations to consistently read and update critical data, and ensures that other non-critical updates in the program will not corrupt it. We also present Samurai, a runtime system that implements critical memory in software. Samurai uses replication and forward error correction to provide probabilistic guarantees of critical memory semantics. Because Samurai does not modify memory operations on non-critical data, the majority of memory operations in programs run at full speed, and Samurai is compatible with third party libraries. Using both applications, including a Web server, and libraries (an STL list class and a memory allocator), we evaluate the performance overhead and fault tolerance that Samurai provides.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;An acceptable overhead for the pleasure of using an unsafe language? You decide. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Tue, 20 Nov 2007 00:22:14 -0500</pubDate>
</item>
<item>
 <title>Engineering Software Correctness</title>
 <link>http://lambda-the-ultimate.org/node/2502</link>
 <description>&lt;p &gt;Rex Page, &lt;a href=&quot;http://www.cs.ou.edu/%7Erlpage/SEcollab/EngrSwFDPE05.pdf&quot;&gt;Engineering software correctness&lt;/a&gt;,  Proceedings of the ACMS,PLAN 2005 Workshop on Functional and Declarative Programming in Education, September 25, 2005.&lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;
Software engineering courses offer one of many opportunities for&lt;br &gt;
providing students with a significant experience in declarative&lt;br &gt;
programming. This report discusses some results from taking&lt;br &gt;
advantage of this opportunity in a two-semester sequence of&lt;br &gt;
software engineering courses for students in their final year of&lt;br &gt;
baccalaureate studies in computer science. The sequence is based&lt;br &gt;
on functional programming using ACL2, a purely functional&lt;br &gt;
subset of Common Lisp with a built-in, computational logic&lt;br &gt;
developed by J Strother Moore and his colleagues over the past&lt;br &gt;
three decades...&lt;/blockquote&gt;
&lt;p &gt;
A &lt;a href=&quot;http://www.ccs.neu.edu/home/matthias/JFP/page.html&quot;&gt;JFP educational pearl&lt;/a&gt; with the same title and a similar abstract appears in Journal of Functional Programming  (2007), 17: 675-68, but I haven&#039;t managed to access it yet.&lt;p &gt;
&lt;br &gt;
I am still in the process of finding furniture etc. But at least I have an apartment now... Thanks for all the help and tips, guys!&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Sun, 21 Oct 2007 02:40:20 -0400</pubDate>
</item>
<item>
 <title>Code Splitting for Network Bound Web 2.0 Applications</title>
 <link>http://lambda-the-ultimate.org/node/2464</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://research.microsoft.com/research/pubs/view.aspx?0rc=p&amp;amp;type=technical+report&amp;amp;id=1344&quot;&gt;Code Splitting for Network Bound Web 2.0 Applications&lt;/a&gt;. Benjamin Livshits, Chen Ding. August 2007.&lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;
Modern Web 2.0 applications such as Gmail, Live Maps, MySpace, Flickr and many others have become a common part of everyday life. These applications are network bound, meaning that their performance can and does vary a great deal based on network conditions. However, there has not been much systematic research on trying to optimize network usage of these applications to make them more responsive for end-user interactions. Interestingly enough, code itself, usually in the form of JavaScript that runs within the client browser, constitutes a significant fraction of what needs to be transferred to the client for the application to run. Therefore, one way to significantly improve the perceived client-side performance for a range ofWeb 2.0 applications is to perform judicious decomposition — or splitting — of code and only transfer the code that is necessary just before it is needed. In this paper we propose several code splitting algorithms and explore their effectiveness at improving the responsiveness of large sophisticated Web 2.0 sites.&lt;/blockquote&gt;
&lt;p &gt;
Once upon a time there was a lot of research on mobile code. It seemed like it was going nowhere. Then came Javascript, AJAX and Web 2.0, and in a worse-is-better fashion Javascript became the mobile code platform of choice. Maybe now is a good time to resume research on the subject...&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/31">Javascript</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Sat, 22 Sep 2007 09:19:23 -0400</pubDate>
</item>
<item>
 <title>No Name: Just Notes on Software Reuse</title>
 <link>http://lambda-the-ultimate.org/node/2435</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.mcs.vuw.ac.nz/comp/Publications/CS-TR-03-11.abs.html&quot;&gt;No Name: Just Notes on Software Reuse&lt;/a&gt;. Robert Biddle, Angela Martin, James Noble.&lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;
In the beginning, so our myths and stories tell us, the programmer created the program from the eternal nothingness of the void. In this essay, we recognise that programs these days are like any other assemblage, and suggest that in fact programming has always been about reuse. We also explore the nature of reuse, and claim that Components themselves are not the most important consideration for reuse; it is the end product, the composition. The issues still involve value, investment, and return. But pervasive reuse promotes a change in the method of construction of the program, and in the program itself.&lt;/blockquote&gt;
&lt;p &gt;
This report isn&#039;t new, but seeing as it&#039;s awfully quiet around here  and it does contain amusing pictures and quotations, I thought I&#039;d share the link.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Sun, 02 Sep 2007 17:50:19 -0400</pubDate>
</item>
<item>
 <title>Relationally-Parametric Polymorphic Contracts</title>
 <link>http://lambda-the-ultimate.org/node/2390</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cs.brown.edu/~sk/Publications/Papers/Published/gmfk-rel-par-poly-cont/&quot;&gt;Relationally-Parametric Polymorphic Contracts&lt;/a&gt;, Arjun Guha, Jacob Matthews, Robert Bruce Findler, Shriram Krishnamurthi. 2007&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
The analogy between types and contracts raises the question of how many features of static type systems can be expressed as dynamic contracts. An important feature missing in prior work on contracts is parametricity, as represented by the polymorphic types in languages like Standard ML.&lt;/p&gt;
&lt;p &gt;We present a contract counterpart to parametricity. We explore multiple designs for such a system and present one that is simple and incurs minimal execution overhead. We show how to extend the notion of contract blame to our definition. We present a form of inference that can often save programmers from having to explicitly instantiate many parametric contracts. Finally, we present several examples that illustrate how this system mimics the feel and properties of parametric polymorphism in typed languages.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;There&#039;s a really simple and elegant idea here: you can &lt;em &gt;test at runtime&lt;/em&gt; whether a function uses a particular argument parametrically (ie, doesn&#039;t examine it) by wrapping it in a value that raises an error if you try to use it before sending it to the function.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Fri, 10 Aug 2007 11:34:57 -0400</pubDate>
</item>
<item>
 <title>Domain-Specific Aspect Languages </title>
 <link>http://lambda-the-ultimate.org/node/2384</link>
 <description>&lt;blockquote &gt;&lt;p &gt;Although the majority of work in the AOSD community focuses on general-purpose aspect languages (e.g. AspectJ), seminal work on AOSD proposed a number of domain-specific aspect languages, such as COOL for concurrency management and RIDL for serialization, RG, AML, and others. A  growing trend of research in the AOSD community is returning to this seminal work&lt;/blockquote&gt;
&lt;p &gt;
Since it seems  it is DSL week around here, and since Domain-Specific Aspect Languages were not discussed here before as far as I can remember, I think now may be an appropriate time to discuss this notion.&lt;p &gt;
To begin the tour, head out to the web page of the first DSAL workshop: &lt;a href=&quot;http://dsal06.dcc.uchile.cl/&quot;&gt;DSAL&#039;06&lt;/a&gt; which &quot;approached domain-specific aspect languages from a language implementation point of view, where advances in the field of domain-specific language engineering were investigated to answer the implementation challenges of aspect languages,&quot; and then move over to &lt;a href=&quot;http://dsal07.dcc.uchile.cl/&quot;&gt;DSAL&#039;07&lt;/a&gt; which dealt with the design and implementation of new domain-specific aspect languages in more detail.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/14">OOP</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Wed, 08 Aug 2007 06:38:22 -0400</pubDate>
</item>
<item>
 <title>Designing High-Security Systems: A Comparison of Programming Languages</title>
 <link>http://lambda-the-ultimate.org/node/2329</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.adacore.com/2007/07/02/designing-high-security-systems/&quot;&gt;Designing High-Security Systems: A Comparison of Programming Languages&lt;/a&gt;. Ben Brosgol. STSC.&lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;
The high degree of interconnectivity in today’s computing systems and the increasing threat from technically sophisticated adversaries make security an essential requirement in modern military software. Many technical factors affect the ease or difficulty of meeting this requirement, including the programming language, the software development tools, the operating system, and the application program interface. This presentation focuses on the programming language, which is arguably the factor that a development project manager can control most directly, and assesses three major language families with respect to the criteria that a secure system must meet:&lt;p &gt;
* Ada 2005 and the Ada-based SPARK language&lt;br &gt;
* C and C++&lt;br &gt;
* Java and its relevant extensions (Real-Time Specification for Java, Safety-Critical Real-Time Java)
&lt;p &gt;
The presentation focuses in particular on how modern language features (such as the data type model, Object-Oriented Programming (&quot;OOP&quot;), exception handling, and concurrency) affect application security, and compares the requirememts for security and for safety.&lt;br &gt;
&lt;/blockquote&gt;
&lt;p &gt;
Not overly technical, but a useful summary none the less.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Thu, 05 Jul 2007 06:56:25 -0400</pubDate>
</item>
</channel>
</rss>
