Scaffold (programming)

Scaffold (programming) is a technique in modern computer science that allows programmers to quickly and easily alter, modify, or repurpose sets of structured data within computer software. Scaffolding works with a variety of other computer features and functions to allow programmers, and in some cases users, to modify data and templates. These modifications can lead to the customization of existing software or the development of new software. Scaffolding is commonly used to create applications, or programs that allow a user to interact with the computer and instruct the computer to perform specific tasks.

Background

Despite the great variety of modern computers, they all have some features in common. For example, all computers involve hardware, or the physical parts of the machines themselves, such as screens, control devices, and internal features meant to store and access information. Despite the power of computers, they are useless without input from humans. This input takes the form of computer software, instructions written by humans that give a computer specific tasks. Programs are pieces of software that instruct computers to do tasks including storing and sorting data, calculating equations, sending messages, and even playing games.

Computer hardware developed at a rapid pace after its invention in the 1940s, and by the twenty-first century has become highly advanced. Like hardware, software also improved vastly and rapidly. Engineers and programmers sought to make software more powerful and adaptable, as well as easier to use. Among the important innovations were programming languages, methods of conveying complex information to computers; databases, structured sets of information within a computer memory; and user interfaces, systems through which people and computers may interact.

As technology advanced, hardware and software became smaller, stronger, faster, and much more varied. Computers entered the mainstream and consumers demanded more options. The business of computer design and production, as well as the science and technology of computing itself, expanded at an enormous rate to meet this growing demand. Computer engineers began studying hardware and software architecture, "blueprints" showing how a computer system should operate and behave. Like traditional architecture, computer architecture has many interrelated features, styles, and theories, as well as unlimited possibilities for customizing and innovating. Two important ideas to come from computer architecture are frameworks and scaffolding.

Overview

Frameworks and scaffolding are two of the most influential innovations in modern computer science. Both are functions that help programmers customize and create software and software features with relative speed and ease. Such techniques allow programmers to design a wide variety of programs and other products to meet the ever-changing and often highly specific demands of the world's computer users, as well as to continually improve these offerings and make future innovations easier.

A software framework is a setup in which programmers can easily customize existing software. Some software performs generic functions in a computer system. If this software is part of a framework, a programmer can easily add new code (instructions to the computer) to the software that will in some way alter its functions. One popular type of framework is the model-view-controller (MVC) framework. The MVC framework is an architectural technique for designing user interfaces, the systems by which humans may interact with computers. These interfaces are known to be efficient and user-friendly, and many users favor them for tasks such as designing new software. In modern times, the most popular software type is the application. Applications (or apps) are a kind of software that combines programs with a user interface. MVC-type applications may be used on the Internet, mobile devices, or desktop or laptop machines.

MVC frameworks support a programming technique known as scaffolding. Like frameworks, scaffolding allows programmers to create and alter various software functions. Most work done with scaffolding involves application databases, or structured sets of data stored inside the computer memory. Programmers use scaffolding to determine how the database and its information will be used. Scaffolding codes can instruct applications to review, update, create, or remove particular pieces of data from the database. The code forms a sort of template that helps to moderate the changes taking place within the database. The code and templates work together to alter and improve the application and allow it to expand in a controlled way.

Scaffolding in a database system can take place in several ways and environments. In some scaffolding, programmers may be able to access and modify individual codes and templates. This system is useful for maintaining strict control over the methods by which the database operates. However, it can also be difficult, since altering existing templates can be challenging and large databases may contain thousands or even millions of files. Other styles of scaffolding are more automated, allowing changes to the code or templates to appear throughout the database immediately with less human effort.

Different groups of people may also employ scaffolding techniques on a particular database. Most scaffolding is performed by the programmers who operate and maintain the database or application. This "server side" scaffolding can directly alter templates, codes, and other features of the database itself. However, users of some databases may also use scaffolding. "Client side" scaffolding generally cannot access the internal workings of the database. However, it can create new methods of transporting data to or from the database.

Scaffolding is possible within many kinds of software frameworks, covering a wide range of different fields and goals. The most well-known of these frameworks is called Ruby on Rails, which helped to popularize scaffolding techniques. Many modern programmers use Ruby-based systems for designing applications. Demand for computer applications is extremely high due to the popularity of mobile devices. Device users demand a wide variety of applications that are user-friendly, helpful, and entertaining. Frameworks and scaffolding allow programmers to quickly and easily meet that demand with a range of new and highly efficient products.

Frameworks and scaffolding are both important parts of software architecture. The terms are derived from traditional architecture, since they have somewhat related meanings. Frameworks in traditional architecture are simple structures around which larger, better structures may be built. Computer frameworks, generic programs that can be modified to fit specific purposes, are rather similar. Likewise, in traditional architecture, "scaffolding" refers to a temporary structure set up around a large structure to aid in maintaining or building it. Computer scaffolding serves a rather similar purpose by using a "structure" of codes and templates to enable and guide the creation of larger and better applications.

Bibliography

Banâtre, Jean-Pierre, et al., editors. Unconventional Programming Paradigms. Springer, 2004.

Hudgens, Jordan. Comprehensive Ruby Programming. Packt Publishing, 2017.

Kernighan, Brian W., and Rob Pike. The Practice of Programming. Addison-Wesley/Lucent Technologies, 1999.

Patterson, David A., and John L. Hennessy. Computer Organization and Design: The Hardware/Software Interface. 5th ed., Elsevier Inc., 2014.

Sanderson, Dan. Programming Google App Engine: Build and Run Scalable Web Apps on Google's App Engine. O'Reilly Media, Inc., 2010.

"Software Architecture." Carnegie Mellon University, www.sei.cmu.edu/research-capabilities/all-work/display.cfm?customel‗datapageid‗4050=21328. Accessed 7 Mar. 2018.

Uher, Thomas E. Programming and Scheduling Techniques. U of New South Wales P, 2003.

Van-Roy, Peter and Seif Haridi. Concepts, Techniques, and Models of Computer Programming. The MIT Press, 2004.

"What Is Scaffolding, and Why Is It Important When Teaching Computer Science?" EnCode/Create, 30 Oct. 2024, encodecreate.com/updates-2022-1-21-what-is-scaffolding-and-why-is-it-important-for-teaching-computer-scienceupdates-2022-1-21what-is-scaffolding-and-why-is-it-important-for-teaching-computer-science/. Accessed 22 Nov. 2024.

"What Is Software Architecture?" Microsoft Developer Network, msdn.microsoft.com/en-us/library/ee658098.aspx. Accessed 7 Mar. 2018.