It is a technique supported by various programming tools.
Code generation
Scaffolding in software development refers to automated code generation techniques that quickly produce the fundamental structure of software applications. Typically employed within model–view–controller (MVC) and similar architectural patterns, scaffolding helps developers rapidly create code for common application functions and data interactions, particularly CRUD operations.
Scaffolding evolved from earlier software development tools such as Oracle's CASE Generator and various other 4GL tools, designed to simplify the creation of robust database-driven applications.
Applications and frameworks
The concept gained widespread popularity through frameworks like Ruby on Rails, known for its efficient generation of MVC structures and CRUD operations. Scaffolding is now supported by a wide range of development frameworks across different programming languages, including:
Supports scaffolding through tools like Create React App.
Run-time vs. design-time scaffolding
Scaffolding can occur at two distinct phases of software development:
Design-time scaffolding
This occurs during the development phase, generating files and code structures that can be customized and maintained by the developer. Although highly customizable, extensive scaffolding at design-time may introduce complexity due to a large number of generated files, which developers need to manage and maintain manually.
Run-time scaffolding
This method dynamically generates and handles operations at run-time, minimizing manual file generation. Run-time scaffolding simplifies management but offers fewer customization options and may impact application performance.
Benefits and limitations
Scaffolding presents several advantages and disadvantages:
Benefits
Accelerates development cycles.
Standardizes coding practices and promotes consistency.
Enhances rapid prototyping and iterative development.
Limitations
Generated code may require extensive customization.
Can introduce unnecessary complexity for smaller or simpler applications.
May reduce developers' understanding of underlying code structures.
Project generation
Complicated software projects often share certain conventions on project structure and requirements. For example, they often have separate folders for source code, binaries and code tests, as well as files containing license agreements, release notes and contact information. To simplify the creation of projects following those conventions, "scaffolding" tools can automatically generate them at the beginning of each project. Such tools include Yeoman, Cargo and Ritchie CLI. For .NET projects, dotnet, the command-line tool included with the .NET SDK, can be used to scaffold new projects.