White box (software engineering)

Last updated
Black box systems
Black box diagram.svg
System
Black box  · Oracle machine
Methods and techniques
Black-box testing  · Blackboxing
Related techniques
Feed forward  · Obfuscation  · Pattern recognition  · White box  · White-box testing  · Gray-box testing  · System identification
Fundamentals
A priori information  · Control systems  · Open systems  · Operations research  · Thermodynamic systems

A white box (or glass box, clear box, or open box) is a subsystem whose internals can be viewed but usually not altered. [1] The term is used in systems engineering, software engineering, and in intelligent user interface design, [2] [3] where it is closely related to recent interest in explainable artificial intelligence. [4] [5]

Having access to the subsystem internals in general makes the subsystem easier to understand, but also easier to hack; for example, if a programmer can examine source code, weaknesses in an algorithm are much easier to discover.[ citation needed ] That makes white-box testing much more effective than black-box testing but considerably more difficult from the sophistication needed on the part of the tester to understand the subsystem.

The notion of a "Black Box in a Glass Box" was originally used as a metaphor for teaching complex topics to computing novices. [6]


Mathematical models for complex systems Mathematical models for complex systems.jpg
Mathematical models for complex systems

See also

Related Research Articles

Software testing is the act of examining the artifacts and the behavior of the software under test by validation and verification. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include, but not necessarily limited to:

<span class="mw-page-title-main">Unix philosophy</span> Software development philosophy

The Unix philosophy, originated by Ken Thompson, is a set of cultural norms and philosophical approaches to minimalist, modular software development. It is based on the experience of leading developers of the Unix operating system. Early Unix developers were important in bringing the concepts of modularity and reusability into software engineering practice, spawning a "software tools" movement. Over time, the leading developers of Unix established a set of cultural norms for developing software; these norms became as important and influential as the technology of Unix itself, and have been termed the "Unix philosophy."

In software engineering, the terms frontend and backend refer to the separation of concerns between the presentation layer (frontend), and the data access layer (backend) of a piece of software, or the physical infrastructure or hardware. In the client–server model, the client is usually considered the frontend and the server is usually considered the backend, even when some presentation work is actually done on the server itself.

White-box testing is a method of software testing that tests internal structures or workings of an application, as opposed to its functionality. In white-box testing, an internal perspective of the system is used to design test cases. The tester chooses inputs to exercise paths through the code and determine the expected outputs. This is analogous to testing nodes in a circuit, e.g. in-circuit testing (ICT). White-box testing can be applied at the unit, integration and system levels of the software testing process. Although traditional testers tended to think of white-box testing as being done at the unit level, it is used for integration and system testing more frequently today. It can test paths within a unit, paths between units during integration, and between subsystems during a system–level test. Though this method of test design can uncover many errors or problems, it has the potential to miss unimplemented parts of the specification or missing requirements. Where white-box testing is design-driven, that is, driven exclusively by agreed specifications of how each component of software is required to behave, white-box test techniques can accomplish assessment for unimplemented or missing requirements.

The following outline is provided as an overview of and topical guide to human–computer interaction:

Human-centered computing (HCC) studies the design, development, and deployment of mixed-initiative human-computer systems. It is emerged from the convergence of multiple disciplines that are concerned both with understanding human beings and with the design of computational artifacts. Human-centered computing is closely related to human-computer interaction and information science. Human-centered computing is usually concerned with systems and practices of technology use while human-computer interaction is more focused on ergonomics and the usability of computing artifacts and information science is focused on practices surrounding the collection, manipulation, and use of information.

<span class="mw-page-title-main">Ambient intelligence</span>

In computing, ambient intelligence (AmI) refers to electronic environments that are sensitive and responsive to the presence of people. Ambient intelligence was a projection on the future of consumer electronics, telecommunications and computing that was originally developed in the late 1990s by Eli Zelkha and his team at Palo Alto Ventures for the time frame 2010–2020. Ambient intelligence would allow devices to work in concert to support people in carrying out their everyday life activities, tasks and rituals in an intuitive way using information and intelligence that is hidden in the network connecting these devices. As these devices grew smaller, more connected and more integrated into our environment, the technological framework behind them would disappear into our surroundings until only the user interface remains perceivable by users.

<span class="mw-page-title-main">Systems architect</span>

The systems architect is an information and communications technology professional. Systems architects define the architecture of a computerized system in order to fulfill certain requirements. Such definitions include: a breakdown of the system into components, the component interactions and interfaces, and the technologies and resources to be used in its design and implementation.

A system architecture is the conceptual model that defines the structure, behavior, and more views of a system. An architecture description is a formal description and representation of a system, organized in a way that supports reasoning about the structures and behaviors of the system.

(In the automation and engineering environments, the hardware engineer or architect encompasses the electronic engineering and electrical engineering fields, with subspecialities in analog, digital, or electromechanical systems.)

In user interface design, an interface metaphor is a set of user interface visuals, actions and procedures that exploit specific knowledge that users already have of other domains. The purpose of the interface metaphor is to give the user instantaneous knowledge about how to interact with the user interface. They are designed to be similar to physical entities but also have their own properties. They can be based on an activity, an object (skeuomorph), or a combination of both and work with users' familiar knowledge to help them understand 'the unfamiliar', and placed in the terms so the user may better understand.

In software engineering, graphical user interface testing is the process of testing a product's graphical user interface (GUI) to ensure it meets its specifications. This is normally done through the use of a variety of test cases.

Adaptive hypermedia (AH) uses hypermedia which is adaptive according to a user model. In contrast to linear media, where all users are offered a standard series of hyperlinks, adaptive hypermedia (AH) tailors what the user is offered based on a model of the user's goals, preferences and knowledge, thus providing links or content most appropriate to the current user.

Manual testing is the process of manually testing software for defects. It requires a tester to play the role of an end user where by they use most of the application's features to ensure correct behaviour. To guarantee completeness of testing, the tester often follows a written test plan that leads them through a set of important test cases.

User modeling is the subdivision of human–computer interaction which describes the process of building up and modifying a conceptual understanding of the user. The main goal of user modeling is customization and adaptation of systems to the user's specific needs. The system needs to "say the 'right' thing at the 'right' time in the 'right' way". To do so it needs an internal representation of the user. Another common purpose is modeling specific kinds of users, including modeling of their skills and declarative knowledge, for use in automatic software-tests. User-models can thus serve as a cheaper alternative to user testing but should not replace user testing.

In science, computing, and engineering, a black box is a system which can be viewed in terms of its inputs and outputs, without any knowledge of its internal workings. Its implementation is "opaque" (black). The term can be used to refer to many inner workings, such as those of a transistor, an engine, an algorithm, the human brain, or an institution or government.

Adaptive learning, also known as adaptive teaching, is an educational method which uses computer algorithms as well as artificial intelligence to orchestrate the interaction with the learner and deliver customized resources and learning activities to address the unique needs of each learner. In professional learning contexts, individuals may "test out" of some training to ensure they engage with novel instruction. Computers adapt the presentation of educational material according to students' learning needs, as indicated by their responses to questions, tasks and experiences. The technology encompasses aspects derived from various fields of study including computer science, AI, psychometrics, education, psychology, and brain science.

CL-HTTP is a web server, client and proxy written in Common Lisp. It is based on its own web application framework. It was written by John C. Mallery "in about 10 days" starting in 1994 on a Symbolics Lisp Machine. In the same year a port to Macintosh Common Lisp was done. In 1996 CL-HTTP became the first web server to support the HTTP 1.1 protocol. It runs on Unix, Linux, BSD variants, Mac OS X, Solaris, Symbolics Genera and Microsoft Windows.

<span class="mw-page-title-main">Center for Neurotechnology</span>

The Center for Neurotechnology (CNT) is an Engineering Research Center funded by the National Science Foundation to create devices to restore the body's capabilities for sensation and movement. The National Science Foundation has awarded the CNT $~30 million since 2011.

This article discusses a set of tactics useful in software testing. It is intended as a comprehensive list of tactical approaches to Software Quality Assurance (more widely colloquially known as Quality Assurance and general application of the test method.

References

  1. Patrick J. Driscoll, "Systems Thinking," in Gregory S. Parnell, Patrick J. Driscoll, and Dale L. Henderson (eds.), Decision Making in Systems Engineering and Management, 2nd. ed., Hoboken, NJ: Wiley, 2011, 40.
  2. Höök, Kristina; Karlgren, Jussi; Waern, Annika; Dahlbäck, Nils; Jansson, Carl Gustaf; Karlgren, Klas; Lemaire, Benoît (1998). "A glass box approach to adaptive hypermedia". Adaptive hypertext and hypermedia: 143-170.
  3. Karlgren, Jussi; Höök, Kristina; Lantz, Ann; Palme, Jacob; Pärgman, Daniel (1994). "The glass box user model for filtering". Fourth international conference on User Modeling.
  4. Raj, Arun (2020). "Explainable AI: From black box to glass box". Journal of the Academy of Marketing Science. 48 (1): 137-141.
  5. Höök, Kristina; Karlgren, Jussi; Waern, Annika (1995). "A glass box intelligent help interface". First Workshop on Intelligent Multimodal Interfaces.
  6. du Boulay, Benedict; O'Shea, Tim; Monk, John (1981). "The black box inside the glass box: presenting computing concepts to novices". International Journal of Man-Machine Studies. 14 (3): 237-249.