User loginNavigation |
Software EngineeringseL4: Formal Verification of an Operating-System KernelIn seL4: Formal Verification of an Operating-System Kernel, Communications of the ACM, June, 2010 Klein et al
Overall the paper is more of an experience report than an in depth exploration of the kernel and its proofs but there is a some meat to be found. More information can be found at the sel4 website. By James Iry at 2010-04-15 16:35 | General | Software Engineering | 74 comments | other blogs | 27822 reads
Extending the Scope of Syntactic AbstractionExtending the Scope of Syntactic Abstraction by Oscar Waddell and R. Kent Dybvig, POPL '99. (Also: Waddell's thesis with the same title.)
This paper is probably known to many LtUers, but it's never been posted, and I find it very enjoyable. It introduces two very simple forms, Module names are lexically scoped just like variables, and modules can appear wherever definitions can occur, so one can define modules (say) inside a lambda. Furthermore, modules and import forms may also be generated by macros. They show how more advanced features (such as qualified references ("module::var"), anonymous modules, selective importing and renaming, and mutually recursive modules, among others) can be built on top of this simple base using a hygienic macro system, cleverly and without much fuss. Side note: such a "syntactic" module system can be contrasted with R6RS's "static" library system. There is currently some discussion to this effect in the Scheme community. By Manuel J. Simoni at 2010-02-28 06:59 | General | Software Engineering | 38 comments | other blogs | 21010 reads
A few billion lines of code later: using static analysis to find bugs in the real worldAl Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, and Dawson Engler. "A few billion lines of code later: using static analysis to find bugs in the real world", Communications of the ACM, Volume 53, Issue 2, February 2010, Pages 66-75.
This is a fascinating piece by Dawson Engler & co. on their experiences in commercializing their static analysis research through Coverity. It's an entertaining read, with many interesting anecdotes from various customers. But it also contains a number of useful insights about the difference between a research tool and a commercial product, the kinds of static analyses that do and don't make sense in a commercial context, and the multitude of problems caused by the lack of programming language standardization:
There's a lot of useful information in there for anyone interested in industrial-strength static analysis. There are also a lot of worthwhile things to keep in mind if you're designing a programming language, and want to make sure it's as friendly as possible to future static analysis tools. By Allan McInnes at 2010-02-13 04:20 | Software Engineering | 43 comments | other blogs | 37855 reads
Google TechTalk: The Evolution of End-User ProgrammingEnd-User Programming has been a topical discussion lately in mainstream software outlets. The IEEE journal Software recently had an issue dedicated to end-user programming challenges; see Joel Brandt's Opportunistic Programming: Writing Code to Prototype, Ideate and Discover and Martin Erwig's Software Engineering for Spreadsheets. Also, a few years ago a consortium of universities formed End-Users Shaping Effective Software, which includes Martin Erwig's PLT work on bringing type systems to spreadsheets. Recently, Google invited Allen Cypher to give a TechTalk on The Evolution of End-User Programming, which appears to be a recapitulation of his VL/HCC paper by the same name. Allen was the editor of Watch What I Do (an LtU recommended reading). Towards the end of the talk, Allen mentions the practical issues of knowing when to use what tool, and that novice users struggle with finding the right tool for the right job. What's notable about discussion of end-user software engineering is how little attention its proponents pay to its critics biggest criticism: Security. In the IEEE Software realm, probably the most open critic has been Warren Harrison (see: The Dangers of End-User Programming). For example, Ko's 2009 ACM Computing Survey The State of the Art in End-User Software Engineering only mentions security once, in the context of designing end-user description languages for security, but does not assess how well this technique compares to techniques software engineers might employ. It seems strange that leading researchers in visual languages and end-user programming do not discuss the potential usage of object capability systems, especially as companies try to monetize a percentage of the value added by users who mash-up their service with other services. By Z-Bo at 2010-02-12 18:24 | General | History | Software Engineering | 8 comments | other blogs | 12891 reads
Implicit Phasing for R6RS LibrariesAbdulaziz Ghuloum and R. Kent Dybvig, Implicit Phasing for R6RS Libraries, Proc. ICFP 2007.
R6RS leaves it up to implementations whether import statements need to explicitly state the meta-level into which bindings should be placed. The authors argue for letting the implementation automatically figure out the required meta-levels, and present an implementation-oriented description of how to do so, that they implemented portably. The paper also includes a well-written and detailed introduction to the issues involved, and since they want the community to adopt their solution, they seem to have worked extra hard to produce a convincing paper ;). By Manuel J. Simoni at 2009-11-26 15:54 | Meta-Programming | Software Engineering | Theory | 1 comment | other blogs | 7393 reads
Safe Garbage Collection = Regions + Intensional Type AnalysisSafe Garbage Collection = Regions + Intensional Type Analysis, by Daniel C. Wang and Andrew W. Appel:
I'm surprised this region calculus hasn't received more attention or follow-up discussion in subsequent papers. It seems eminently practical, as it replaces the more complicated alias analyses required in other region calculi, with garbage collection of region handles; seems like a huge improvement over general GC, assuming region inference is sufficiently precise. By naasking at 2009-10-11 20:47 | Implementation | Software Engineering | Teaching & Learning | 14 comments | other blogs | 10469 reads
Effective Interactive Proofs for Higher-Order Imperative ProgramsEffective Interactive Proofs for Higher-Order Imperative Programs
Adam Chlipala has been telling us how underutilized Coq's Ltac tactic programming language for proof automation is for years. Here is the... er... proof. By Paul Snively at 2009-08-06 16:54 | Implementation | Software Engineering | Type Theory | 4 comments | other blogs | 10767 reads
Certiï¬ed Web Services in YnotCertiï¬ed Web Services in Ynot
Ynot, always ambitious, takes another serious swing: extracting a real web application from a proof development. In some respects the big news here is the additional coverage that Ynot now offers in terms of support for file and socket I/O, and the event trace mechanism. But there's even bigger news, IMHO, which is the subject of another paper that warrants a separate post. By Paul Snively at 2009-08-06 16:46 | DSL | Functional | General | Implementation | Software Engineering | Type Theory | 2 comments | other blogs | 7421 reads
Programming Satan’s ComputerRoss Anderson and Roger Needham, 1995. Programming Satan’s Computer. In J. van Leeuwen, editor, Computer Science Today, LNCS 1000, pages 426-440.
Incidentally, the first edition of Anderson's book, Security Engineering, Wiley, 2001, is available for download. By Charles Stewart at 2009-07-08 08:35 | Software Engineering | 2 comments | other blogs | 12762 reads
Factor MixinsMixins, a very interesting post from Slava Pestov's Factor blog.
That's pretty much what I want from an object-functional language. By Manuel J. Simoni at 2009-06-18 04:00 | Object-Functional | Software Engineering | 11 comments | other blogs | 10362 reads
|
Browse archives
Active forum topics |
Recent comments
23 weeks 3 days ago
23 weeks 3 days ago
23 weeks 3 days ago
45 weeks 4 days ago
49 weeks 6 days ago
51 weeks 3 days ago
51 weeks 3 days ago
1 year 2 weeks ago
1 year 6 weeks ago
1 year 6 weeks ago