White Papers

Component-based Design

The specifications are encapsulated by independent components. Software is designed to balance reuse and abstraction against the project goals, all the while optimizing maintainability.

Read more >

Design by contract

The specifications are built right into the code. Software publishes its assumptions instead of leaving its contract implicit.

Read more >

Test-driven development

Tests are a central part of building software. All component features have application-independent tests which can be run automatically and throughout development.

Read more >

Document everything

Software without documentation is not maintainable. Good naming conventions, logical designs and well-built tests help make code self-documenting. High-level tutorials explain how the different components are intended to work together.

Read more >

Code Reviews

Finished code is reviewed before it is committed. Reviews make sure that the other parts of the design process were followed (documentation, tests, etc.) and that errors are fixed as quickly as possible.

Read more >

Continuous Integration and Delivery

Low-overhead releases lead to faster turnaround and higher quality. Automated (or nightly) builds pinpoint software errors before they can become problems.

Read more >

updated on 2/6/2018