HOME

TheInfoList



OR:

{{Short description, Technique of documenting design choices in source code In
software engineering Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining Application software, software applications. It involves applying engineering design process, engineering principl ...
, a design marker is a technique of documenting ''design choices'' in
source code In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer. Since a computer, at base, only ...
using the Marker Interface pattern. Marker interfaces have traditionally been limited to those interfaces intended for explicit,
runtime verification Runtime verification is a computing system analysis and execution approach based on extracting information from a running system and using it to detect and possibly react to observed behaviors satisfying or violating certain properties. Some very p ...
(normally via ''instanceof''). A design marker is a marker interface used to document a design choice. In
Java Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
programs the design choice is documented in the marker interface's
Javadoc Javadoc (also capitalized as JavaDoc or javadoc) is an API documentation generator for the Java programming language. Based on information in Java source code, Javadoc generates documentation formatted as HTML and other formats via extensions. ...
documentation. Many choices made at software design time cannot be directly expressed in today's implementation languages like C# and Java. These design choices (known by names like
Design Pattern A design pattern is the re-usable form of a solution to a design problem. The idea was introduced by the architect Christopher Alexander and has been adapted for various other disciplines, particularly software engineering. The " Gang of Four" ...
, Design Contract,
Refactoring In computer programming and software design, code refactoring is the process of restructuring existing source code—changing the '' factoring''—without changing its external behavior. Refactoring is intended to improve the design, structure, ...

Effective Programming IdiomsBlueprints
etc.) must be implemented via programming and
naming conventions A naming convention is a convention (norm), convention (generally agreed scheme) for naming things. Conventions differ in their intents, which may include to: * Allow useful information to be deduced from the names based on regularities. For ins ...
, because they go beyond the built-in functionality of production programming languages. The consequences of this limitation conspire over time to erode design investments as well as to promote a false segregation between the designer and implementer mindsets. Two independent proposals recognize these problems and give the same basic strategies for tackling them. Until now, the budding explicit programming movement has been linked to the use of an experimental Java research tool called ELIDE. The Design Markers technique requires only standard
Javadoc Javadoc (also capitalized as JavaDoc or javadoc) is an API documentation generator for the Java programming language. Based on information in Java source code, Javadoc generates documentation formatted as HTML and other formats via extensions. ...
-like tools to garner many of the benefits of ''Explicit Programming''.


See also

* ''
Design Patterns ''Design Patterns: Elements of Reusable Object-Oriented Software'' (1994) is a software engineering book describing software design patterns. The book was written by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, with a fore ...
'' * Marker interface pattern


External links


Design Markers: Explicit Programming for the rest of us

Design Markers home page


Software design