Group: code generation
Group: program module
Topic: automation
Topic: configuration management
Topic: data caching
Topic: dependency analysis
Topic: deployable module or assembly
Topic: incremental development
Topic: object code linkers and loaders
Topic: programming environment
Topic: scripting language
Topic: software change management
Topic: software maintenance by patching
Topic: software management
Topic: timestamps
Topic: version control
| |
Summary
Modification of one module may require re-compilation or modification of other modules. The new system will need retesting for internal consistency and external effectiveness. Re-integration of large systems is a slow process unless modified modules can be identified with time stamps and cross references. Detailed analysis may reduce build times further. Recompilations can be anticipated or distributed.
For large projects, a system build and regression test may take hours or longer. If so, daily builds help keep a project going. (cbb 5/80 4/98)
Subtopic: builds are repeatable, incremental, and consistent actions
Quote: avoid manual procedures; use scripts for repeatable command sequences; under source control [»huntA_2000]
| Quote: in Vesta, every system build occurs from scratch; all files and procedures are immutable and immortal; builds are repeatable, incremental, and consistent [»heydA_2006]
| Quote: a build consists of actions applied to sources and derived files (deriveds) [»heydA_2006]
| Quote: a build is consistent if every derived file is up-to-date relative to its source files
| Quote: a build is a series of tool invocations in a controlled naming environment; each invocation has a slightly different environment or binding; defines dot as the implicit, current environment [»heydA_2006]
| Subtopic: incremental build
Quote: MAKE in UNIX issues commands to keep the parts of a program consist after changes are made [»feldSI4_1979]
| Quote: a useful utility is one that determines compilation dependencies and recompiles dependent modules [»laueHC_1979]
| Quote: directory and software management by running commands according to file dates; e.g., print all files changed since last listing [»feldSI4_1979]
| Quote: to 'make' a node N, 'make' all nodes on which it depends; if any were modified after N, update N [»feldSI4_1979]
| Quote: Vesta is faster than Make on both scratch and incremental builds; much faster if several files change; low overhead [»heydA_2006]
| Quote: Vesta is faster than make because a single test determines that libraries are up-to-date; avoids unnecessary file stats [»heydA6_2000]
| Quote: Vesta should cache all calls, not just runtool calls
| Subtopic: daily build
Quote: at Microsoft, a program under development is built and smoke tested every day; reduces integration problems, helps to locate problems, and boosts morale [»mccoS7_1996]
| Quote: fixing a broken build has top priority; the build happens everyday and a smoke test checks it; enforces discipline and keeps projects on track [»mccoS7_1996]
| Quote: synchronize and stabilize -- daily builds, two or more milestones, frequent alpha and beta releases [»cusuMA10_1999]
| Subtopic: dependency analysis
Quote: a compilation dependency occurs when one module is used to compile another; if a module is recompiled, then so are all dependent modules [»laueHC_1979]
| Quote: in source control, users should define dependencies between elements for warnings prior to changes and notification after changes [»leblDB5_1984]
| Quote: maintain intermodule dependencies by augmenting a graph with factoring and filtering nodes; reduces recompilation size to one seventh of a header file-based scheme [»chamC4_1995]
| Quote: a filtering node is a program to check an intermodule dependency; e.g., compare old and new callee set and invalidate on change; compilers may need to do this work anyway [»chamC4_1995]
| Quote: for an application, identify the programs needed from the 'uses' hierarchy and include everything else that is used [»parnDL5_1978]
| Quote: a DSEE system model describes the components, their build dependencies, and the build rules needed to recreate the system [»leblDB5_1984]
| Quote: Vesta is a functional programming language for building systems [»heydA6_2000]
| Quote: Vesta builds execute in an encapsulated environment, including the file system; every file system referent is recorded as a dependency; all file accesses use temporary build directories [»heydA_2006]
| Quote: Vesta caches the results of expensive function calls with precise, dynamic, fine-grained dependencies
| Quote: index function cache by primary dependencies; i.e., body of function, values of scalar arguments [»heydA6_2000]
| Quote: function cache's secondary key is the names and values that the function call depends on
| Subtopic: build environment
Quote: configuration management includes the build environment as well as the source code; only use what is in your toolbox [»willC4_2001]
| Subtopic: configuration model, makefile
Quote: DSEE separates the program's makefile (system model) from the versions used (configuration thread); a build is a binary pool with a bound configuration thread (BCT) [»lubkD6_1991]
| Quote: SCRAM defines a project using XML; e.g., the BootStrap document includes the source code servers [»willC4_2001]
| Quote: SCRAM's Requirements doc lists the ToolDocs and versions used by a project [»willC4_2001]
| Quote: a Vesta package is a collection of related files and a system model for building the package [»heydA_2006]
| Subtopic: branch builds
Quote: during development, 5ESS international software is one codeline; after release, multiple streams for unique customers and applications [»hoshJ7_1998]
| Subtopic: data description
Quote: description files for external objects allow separate compilation and strong type checking [»hansDR11_1979]
| Subtopic: developer builds
Quote: SCRAM defines a shared, central release area and multiple, developer areas; each developer area is an incremental change to a release area [»willC4_2001]
| Quote: source and derived files come from the central release area unless they exist in the developer area [»willC4_2001]
| Subtopic: rapid turnaround
Quote: with development on Multics, system changes within ten minutes and sometimes seconds [»corbFJ_1979]
| Subtopic: faster builds
Quote: DSEE uses parallel builds to reduce system build time; up to 10x faster than serial builds [»leblDB11_1987]
| Quote: build systems optimistically by precompiling out-of-date targets; median speedup was 1.7, mean was 8.3 [»bubeR2_1992]
| Subtopic: distributed build
Quote: in heterogeneous builds need to track intermediate results on foreign computers; otherwise communication costs are too high [»lubkD6_1991]
| Subtopic: separate compilation
Quote: separate compilation not necessary; can perform global analysis, C code generation, and recompilation of modified files [»zendO10_1997]
| Quote: description files for external objects allow separate compilation and strong type checking [»hansDR11_1979]
| Quote: Scade requires a pre operator for feedback values; enables separate compilation; i.e., execution order within a node is independent of the node's caller
| Quote: a C++ template is like a macro that obeys the scope, naming, and type rules of C++; the generated code is like separately compiled code [»stroB_1991]
|
Related Topics
Group: code generation (30 topics, 593 quotes)
Group: program module (10 topics, 336 quotes)
Topic: automation (15 items)
Topic: configuration management (25 items)
Topic: data caching (35 items)
Topic: dependency analysis (34 items)
Topic: deployable module or assembly (12 items)
Topic: incremental development (74 items)
Topic: object code linkers and loaders (31 items)
Topic: programming environment (46 items)
Topic: scripting language (27 items)
Topic: software change management (48 items)
Topic: software maintenance by patching (27 items)
Topic: software management (28 items)
Topic: timestamps (19 items)
Topic: version control (34 items)
|