Supporting Reuse and Evolution in Software Design

Program design is an area of programming that can benefit significantly from machine-mediated assistance. A proposed tool, called the Design Apprentice (DA), can assist a programmer in the detailed design of programs. The DA supports software reuse through a library of commonly-used algorithmic frag...

Full description

Bibliographic Details
Main Author: Tan, Yang Meng
Language:en_US
Published: 2004
Online Access:http://hdl.handle.net/1721.1/6562
_version_ 1811095358394073088
author Tan, Yang Meng
author_facet Tan, Yang Meng
author_sort Tan, Yang Meng
collection MIT
description Program design is an area of programming that can benefit significantly from machine-mediated assistance. A proposed tool, called the Design Apprentice (DA), can assist a programmer in the detailed design of programs. The DA supports software reuse through a library of commonly-used algorithmic fragments, or cliches, that codifies standard programming. The cliche library enables the programmer to describe the design of a program concisely. The DA can detect some kinds of inconsistencies and incompleteness in program descriptions. It automates detailed design by automatically selecting appropriate algorithms and data structures. It supports the evolution of program designs by keeping explicit dependencies between the design decisions made. These capabilities of the DA are underlaid bya model of programming, called programming by successive elaboration, which mimics the way programmers interact. Programming by successive elaboration is characterized by the use of breadth-first exposition of layered program descriptions and the successive modifications of descriptions. A scenario is presented to illustrate the concept of the DA. Technques for automating the detailed design process are described. A framework is given in which designs are incrementally augmented and modified by a succession of design steps. A library of cliches and a suite of design steps needed to support the scenario are presented.
first_indexed 2024-09-23T16:15:49Z
id mit-1721.1/6562
institution Massachusetts Institute of Technology
language en_US
last_indexed 2024-09-23T16:15:49Z
publishDate 2004
record_format dspace
spelling mit-1721.1/65622019-04-11T02:52:25Z Supporting Reuse and Evolution in Software Design Tan, Yang Meng Program design is an area of programming that can benefit significantly from machine-mediated assistance. A proposed tool, called the Design Apprentice (DA), can assist a programmer in the detailed design of programs. The DA supports software reuse through a library of commonly-used algorithmic fragments, or cliches, that codifies standard programming. The cliche library enables the programmer to describe the design of a program concisely. The DA can detect some kinds of inconsistencies and incompleteness in program descriptions. It automates detailed design by automatically selecting appropriate algorithms and data structures. It supports the evolution of program designs by keeping explicit dependencies between the design decisions made. These capabilities of the DA are underlaid bya model of programming, called programming by successive elaboration, which mimics the way programmers interact. Programming by successive elaboration is characterized by the use of breadth-first exposition of layered program descriptions and the successive modifications of descriptions. A scenario is presented to illustrate the concept of the DA. Technques for automating the detailed design process are described. A framework is given in which designs are incrementally augmented and modified by a succession of design steps. A library of cliches and a suite of design steps needed to support the scenario are presented. 2004-10-04T15:31:28Z 2004-10-04T15:31:28Z 1990-10-01 AIM-1256 http://hdl.handle.net/1721.1/6562 en_US AIM-1256 9348517 bytes 7304238 bytes application/postscript application/pdf application/postscript application/pdf
spellingShingle Tan, Yang Meng
Supporting Reuse and Evolution in Software Design
title Supporting Reuse and Evolution in Software Design
title_full Supporting Reuse and Evolution in Software Design
title_fullStr Supporting Reuse and Evolution in Software Design
title_full_unstemmed Supporting Reuse and Evolution in Software Design
title_short Supporting Reuse and Evolution in Software Design
title_sort supporting reuse and evolution in software design
url http://hdl.handle.net/1721.1/6562
work_keys_str_mv AT tanyangmeng supportingreuseandevolutioninsoftwaredesign