- Programming in the large and programming in the small
- Concurrent computing
- Relativistic programming
- Declarative (contrast: Imperative)
- Function-level (contrast: Value-level)
- Imperative (contrast: Declarative)
- Non-structured (contrast: Structured)
- Parallel computing
- Programming in the large / small
- Structured (contrast: Non-structured)
- Value-level (contrast: Function-level)
In software development, programming in the large and programming in the small describe two different approaches to writing software. The terms were coined by Frank DeRemer and Hans Kron in their 1975 paper "Programming-in-the large versus programming-in-the-small" 
Fred Brooks identifies that the way an individual program is created is different from how a programming systems product is created. The former likely does one relatively simple task well. It is probably coded by a single engineer, is complete in itself, and is ready to run on the system on which it was developed. The programming activity was probably fairly short-lived as simple tasks are quick and easy to complete. This is the endeavor that DeRemer and Kron describe as programming in the small.
Compare with the activities associated with a programming systems project, again as identified by Brooks. Such a project is typified by medium-sized or large industrial teams working on the project for many months to several years. The project is likely to be split up into several or hundreds of separate modules which individually are of a similar complexity to the individual programs described above. However, each module will define an interface to its surrounding modules.
Brooks describes how programming systems projects are typically run as formal projects that follow industry best practices and will comprise testing, documentation and ongoing maintenance activities as well as activities to ensure that the product is generalized to work in different scenarios including on systems other than the development systems on which it was created.
DeRemor and Kron have this to say about programming in the large vs in the small (taken from the abstract of their paper - see the references section, below):
"By large programs we mean systems consisting of many small programs (modules), possibly written by different people. We need languages for programming-in-the-small, i.e. languages not unlike the common programming languages of today, for writing modules. We also need a “module interconnection language” for knitting those modules together into an integrated whole and for providing an overview that formally records the intent of the programmer(s) and that can be checked for consistency by a compiler. We explore the software reliability aspects of such an interconnection language. Emphasis is placed on facilities for information hiding and for defining layers of virtual machines."
Programming in the large
In software development, programming in the large can involve programming by larger groups of people or by smaller groups over longer time periods. Either of these conditions will result in large, and hence complicated, programs that can be challenging for maintainers to understand.
With programming in the large, coding managers place emphasis on partitioning work into modules with precisely-specified interactions. This requires careful planning and careful documentation.
With programming in the large, program changes can become difficult. If a change operates across module boundaries, the work of many people may need re-doing. Because of this, one goal of programming in the large involves setting up modules that will not need altering in the event of probable changes. This is achieved by designing modules so they have high cohesion and loose coupling.
Programming in the large requires abstraction-creating skills. Until a module becomes implemented it remains an abstraction. Taken together, the abstractions should create an architecture unlikely to need change. They should define interactions that have precision and demonstrable correctness.
Programming in the large requires management skills. The process of building abstractions aims not just to describe something that can work but also to direct the efforts of people who will make it work.
The concept was introduced by Frank DeRemer and Hans Kron in their 1976 paper "Programming-in-the-Large Versus Programming-in-the-Small", IEEE Trans. on Soft. Eng. 2(2).
In computer science terms, programming in the large can refer to programming code that represents the high-level state transition logic of a system[dubious ]. This logic encodes information such as when to wait for messages, when to send messages, when to compensate for failed non-ACID transactions, etc.
A language that was designed to explicitly support programming in the large is BPEL.
Programming in the small
In software development, programming in the small describes the activity of writing a small program. Small programs are typified by being small in terms of their source code size, are easy to specify, quick to code and typically perform one task or a few very closely related tasks very well.
Programming in the small can involve programming by individuals or small groups over short time periods and may involve less formal practices (for instance less emphasis on documentation or testing), tools and programming languages (eg the selection of a loosely typed scripting language in preference to a strictly typed programming language). Programming in the small can also describe an approach to making a prototype software or where rapid application development is more important than stability or correctness.
In computer science terms, programming in the small deals with short-lived programmatic behavior, often executed as a single ACID transaction and which allows access to local logic and resources such as files, databases, etc.[dubious ]
- Critical mass (software)
- Data flow diagram
- Dataflow programming
- Flow-based programming
- Linda (coordination language)
- Modular programming
- Pipeline (Unix)
- Scripting language
- Douglas McIlroy's Mass Produced Software Components - NATO conference on software engineering in Garmisch, Germany, 1968
- ^ http://portal.acm.org/citation.cfm?id=808431
- ^ a b c Brooks, Frederick P., Jr. (1982). "The Tar Pit", published in The Mythical Man-Month - Anniversary Edition. ISBN 0-201-83595-9
DeRemer, Frank; Kron, Hans (1975). "Programming-in-the large versus programming-in-the-small". Proceedings of the international conference on Reliable software. Los Angeles, California: ACM. pp. 114--121. doi:10.1145/800027.808431.
Wikimedia Foundation. 2010.
Look at other dictionaries:
Programming in the small — In computer science terms, programming in the small deals with short lived programmatic behavior, often executed as a single ACID transaction and which allows access to local logic and resources such as files, databases, etc.In contrast,… … Wikipedia
Small business — Small businesses on Dalrymple Street in Greenock, Scotland A small business is a business that is privately owned and operated, with a small number of employees and relatively low volume of sales. Small businesses are normally privately owned… … Wikipedia
The Rainbow (magazine) — The Rainbow was a monthly magazine for the TRS 80 Color Computer by the Tandy Corporation (now RadioShack). It was started by the late Lawrence C. Falk [ [http://www.lrc.ky.gov/record/06SS/SR4/bill.doc Kentucky Senate Resolution on Lonnie Falk s… … Wikipedia
The Wizard of Oz (1939 film) — The Wizard of Oz Theatrical release poster Directed by Victor Fleming Uncredited: Norman Taurog Richard Thorpe … Wikipedia
The Manchester Studios — Granada Studios Granada House with the original two storey studios in the foreground. The broadcasting tower and the red Granada TV logo on Granada House have since been removed Former names … Wikipedia
The Phillips Collection — Established 1921 Location Dupont Circle, Washington, D.C., USA Type Art museum … Wikipedia
The Arts Centre (Melbourne) — The Victorian Arts Centre The spire of The Arts Centre General information Type Arts centre … Wikipedia
The Hunchback of Notre-Dame (radio) — “The Hunchback of Notre Dame” is a program from the American radio anthology series Radio Tales. The anthology series adapted classic works of American and world literature for the radio. The series was a recipient of numerous awards, including… … Wikipedia
The Bronx — Bronx redirects here. For other uses, see Bronx (disambiguation). The Bronx Borough of New York City Bronx County Motto: Ne cede malis Do not give way to evil … Wikipedia
Programming in the large — In software development, programming in the large can involve programming by larger groups of people or by smaller groups over longer time periods. Either of these conditions will result in large, and hence complicated, programs that can be… … Wikipedia