Results 1 -
3 of
3
Modular Domain Specific Languages and Tools
- in Proceedings of Fifth International Conference on Software Reuse
, 1998
"... A domain specific language (DSL) allows one to develop software for a particular application domain quickly and effectively, yielding programs that are easy to understand, reason about, and maintain. On the other hand, there may be a significant overhead in creating the infrastructure needed to supp ..."
Abstract
-
Cited by 95 (5 self)
- Add to MetaCart
A domain specific language (DSL) allows one to develop software for a particular application domain quickly and effectively, yielding programs that are easy to understand, reason about, and maintain. On the other hand, there may be a significant overhead in creating the infrastructure needed to support a DSL. To solve this problem, a methodology is described for building domain specific embedded languages (DSELs), in which a DSL is designed within an existing, higher-order and typed, programming language such as Haskell or ML. In addition, techniques are described for building modular interpreters and tools for DSELs. The resulting methodology facilitates reuse of syntax, semantics, implementation code, software tools, as well as look-and-feel.
Social patterns in productive software development organizations
- Annals of Software Engineering
, 1996
"... Software development is a predominantly social activity. It is important to view software development groups, departments, and corporations as social bodies. We study software organizations by using a novel data-gathering approach that combines several techniques commonly used in social network anal ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Software development is a predominantly social activity. It is important to view software development groups, departments, and corporations as social bodies. We study software organizations by using a novel data-gathering approach that combines several techniques commonly used in social network analysis. We differ from ordinary social anthropology in that we help the organization introspect about itself; the technique is a “mirror ” for the subject organization. We catalogued social network diagrams using a variety of visualization techniques. We have found visual patterns that correlate well to subjective measures of a good organization. We built analytical models to capture properties of the social networks, employing techniques similar to those used in established social network science. The emerging design technique based on architectural patterns provides a good vehicle for communicating organizational patterns. We have captured practices from outstanding organizations in a group of patterns that form a “pattern language ” for productive software development.
Jakarta: A Tool Suite for Constructing Software Generators
, 1997
"... Introduction Software component (or software building block) technologies enable customized applications or their subsystems to be synthesized quickly and inexpensively from component reuse libraries. Software that is synthetically produced is inherently more evolvable than software produced by oth ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Introduction Software component (or software building block) technologies enable customized applications or their subsystems to be synthesized quickly and inexpensively from component reuse libraries. Software that is synthetically produced is inherently more evolvable than software produced by other means: a revised system is specified by a more appropriate composition of components and then regenerated. Generators are tools that convert component compositions into optimized source code and that validate compositions to ensure consistency. From our experience in building component technologies and generators for a variety of domains [Bat92-97], there is a serious lack of support from industrial programming languages and tools to simplify generator construction. 60% of the effort in building domain-specific generators involves the creation of largely domain-independent programming infrastructure (e.g., languages for component specificati

