Separation of concerns, the Glossary
In computer science, separation of concerns (sometimes abbreviated as SoC) is a design principle for separating a computer program into distinct sections.[1]
Table of Contents
51 relations: Abstraction (computer science), Abstraction principle (computer programming), Architecture, Artificial intelligence, Aspect (computer programming), Aspect-oriented programming, C (programming language), C Sharp (programming language), C++, Class (computer programming), Cognitive science, Computer program, Computer science, Computer security, Concern (computer science), Coupling (computer programming), Cross-cutting concern, CSS, Data logger, Delphi (software), Edsger W. Dijkstra, Encapsulation (computer programming), Function (computer programming), Holism, HTML, Information design, Information hiding, Instance (computer science), Interface (computing), Internet layer, Internet protocol suite, Java (programming language), JavaScript, Model–view–controller, Model–view–presenter, Modular design, Modular programming, Object (computer science), Object-oriented programming, OSI model, Pascal (programming language), Procedural programming, Programming language, Separation of content and presentation, Service (systems architecture), Service-orientation, Single-responsibility principle, Software design pattern, Subject-oriented programming, Transmission Control Protocol, ... Expand index (1 more) »
- Programming principles
- Reductionism
Abstraction (computer science)
In software engineering and computer science, abstraction is the process of generalizing concrete details, such as attributes, away from the study of objects and systems to focus attention on details of greater importance.
See Separation of concerns and Abstraction (computer science)
Abstraction principle (computer programming)
In software engineering and programming language theory, the abstraction principle (or the principle of abstraction) is a basic dictum that aims to reduce duplication of information in a program (usually with emphasis on code duplication) whenever practical by making use of abstractions provided by the programming language or software libraries. Separation of concerns and abstraction principle (computer programming) are programming principles.
See Separation of concerns and Abstraction principle (computer programming)
Architecture
Architecture is the art and technique of designing and building, as distinguished from the skills associated with construction.
See Separation of concerns and Architecture
Artificial intelligence
Artificial intelligence (AI), in its broadest sense, is intelligence exhibited by machines, particularly computer systems.
See Separation of concerns and Artificial intelligence
Aspect (computer programming)
In computer programming, an aspect of a program is a feature linked to many other parts of the program, but is not related to the program's primary function.
See Separation of concerns and Aspect (computer programming)
Aspect-oriented programming
In computing, aspect-oriented programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns.
See Separation of concerns and Aspect-oriented programming
C (programming language)
C (pronounced – like the letter c) is a general-purpose programming language.
See Separation of concerns and C (programming language)
C Sharp (programming language)
C# is a general-purpose high-level programming language supporting multiple paradigms.
See Separation of concerns and C Sharp (programming language)
C++
C++ (pronounced "C plus plus" and sometimes abbreviated as CPP) is a high-level, general-purpose programming language created by Danish computer scientist Bjarne Stroustrup.
See Separation of concerns and C++
Class (computer programming)
In object-oriented programming, a class defines the shared aspects of objects created from the class.
See Separation of concerns and Class (computer programming)
Cognitive science
Cognitive science is the interdisciplinary, scientific study of the mind and its processes.
See Separation of concerns and Cognitive science
Computer program
A computer program is a sequence or set of instructions in a programming language for a computer to execute.
See Separation of concerns and Computer program
Computer science
Computer science is the study of computation, information, and automation.
See Separation of concerns and Computer science
Computer security
Computer security (also cybersecurity, digital security, or information technology (IT) security) is the protection of computer systems and networks from threats that may result in unauthorized information disclosure, theft of (or damage to) hardware, software, or data, as well as from the disruption or misdirection of the services they provide.
See Separation of concerns and Computer security
Concern (computer science)
In computer science, a concern is a particular set of information that has an effect on the code of a computer program.
See Separation of concerns and Concern (computer science)
Coupling (computer programming)
In software engineering, coupling is the degree of interdependence between software modules; a measure of how closely connected two routines or modules are; the strength of the relationships between modules. Separation of concerns and coupling (computer programming) are programming principles.
See Separation of concerns and Coupling (computer programming)
Cross-cutting concern
In aspect-oriented software development, cross-cutting concerns are aspects of a program that affect several modules, without the possibility of being encapsulated in any of them.
See Separation of concerns and Cross-cutting concern
CSS
Cascading Style Sheets (CSS) is a style sheet language used for specifying the presentation and styling of a document written in a markup language such as HTML or XML (including XML dialects such as SVG, MathML or XHTML).
See Separation of concerns and CSS
Data logger
A data logger (also datalogger or data recorder) is an electronic device that records data over time or about location either with a built-in instrument or sensor or via external instruments and sensors.
See Separation of concerns and Data logger
Delphi (software)
Delphi is a general-purpose programming language and a software product that uses the Delphi dialect of the Object Pascal programming language and provides an integrated development environment (IDE) for rapid application development of desktop, mobile, web, and console software, currently developed and maintained by Embarcadero Technologies.
See Separation of concerns and Delphi (software)
Edsger W. Dijkstra
Edsger Wybe Dijkstra (11 May 1930 – 6 August 2002) was a Dutch computer scientist, programmer, software engineer, mathematician, and science essayist.
See Separation of concerns and Edsger W. Dijkstra
Encapsulation (computer programming)
In software systems, encapsulation refers to the bundling of data with the mechanisms or methods that operate on the data. Separation of concerns and encapsulation (computer programming) are programming principles.
See Separation of concerns and Encapsulation (computer programming)
Function (computer programming)
In computer programming, a function, procedure, method, subroutine, routine, or subprogram is a callable unit of software logic that has a well-defined interface and behavior and can be invoked multiple times.
See Separation of concerns and Function (computer programming)
Holism
Holism is the interdisciplinary idea that systems possess properties as wholes apart from the properties of their component parts.
See Separation of concerns and Holism
HTML
Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displayed in a web browser.
See Separation of concerns and HTML
Information design
Information design is the practice of presenting information in a way that fosters an efficient and effective understanding of the information.
See Separation of concerns and Information design
Information hiding
In computer science, information hiding is the principle of segregation of the design decisions in a computer program that are most likely to change, thus protecting other parts of the program from extensive modification if the design decision is changed. Separation of concerns and information hiding are programming principles.
See Separation of concerns and Information hiding
Instance (computer science)
In computer science, an instance is an occurrence of a software element that is based on a type definition.
See Separation of concerns and Instance (computer science)
Interface (computing)
In computing, an interface is a shared boundary across which two or more separate components of a computer system exchange information.
See Separation of concerns and Interface (computing)
Internet layer
The internet layer is a group of internetworking methods, protocols, and specifications in the Internet protocol suite that are used to transport network packets from the originating host across network boundaries; if necessary, to the destination host specified by an IP address.
See Separation of concerns and Internet layer
Internet protocol suite
The Internet protocol suite, commonly known as TCP/IP, is a framework for organizing the set of communication protocols used in the Internet and similar computer networks according to functional criteria.
See Separation of concerns and Internet protocol suite
Java (programming language)
Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible.
See Separation of concerns and Java (programming language)
JavaScript
JavaScript, often abbreviated as JS, is a programming language and core technology of the Web, alongside HTML and CSS.
See Separation of concerns and JavaScript
Model–view–controller
Model–view–controller (MVC) is a software design pattern commonly used for developing user interfaces that divides the related program logic into three interconnected elements.
See Separation of concerns and Model–view–controller
Model–view–presenter
Model–view–presenter (MVP) is a derivation of the model–view–controller (MVC) architectural pattern, and is used mostly for building user interfaces.
See Separation of concerns and Model–view–presenter
Modular design
Modular design, or modularity in design, is a design principle that subdivides a system into smaller parts called modules (such as modular process skids), which can be independently created, modified, replaced, or exchanged with other modules or between different systems.
See Separation of concerns and Modular design
Modular programming
Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.
See Separation of concerns and Modular programming
Object (computer science)
In computer science, an object is a programming element that has state, has associated operations and is accessed via an identifier.
See Separation of concerns and Object (computer science)
Object-oriented programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of objects, which can contain data and code: data in the form of fields (often known as attributes or properties), and code in the form of procedures (often known as methods).
See Separation of concerns and Object-oriented programming
OSI model
The Open Systems Interconnection (OSI) model is a reference model from the International Organization for Standardization (ISO) that "provides a common basis for the coordination of standards development for the purpose of systems interconnection." In the OSI reference model, the communications between systems are split into seven different abstraction layers: Physical, Data Link, Network, Transport, Session, Presentation, and Application.
See Separation of concerns and OSI model
Pascal (programming language)
Pascal is an imperative and procedural programming language, designed by Niklaus Wirth as a small, efficient language intended to encourage good programming practices using structured programming and data structuring.
See Separation of concerns and Pascal (programming language)
Procedural programming
Procedural programming is a programming paradigm, classified as imperative programming, that involves implementing the behavior of a computer program as procedures (a.k.a. functions, subroutines) that call each other.
See Separation of concerns and Procedural programming
Programming language
A programming language is a system of notation for writing computer programs.
See Separation of concerns and Programming language
Separation of content and presentation
Separation of content and presentation (or separation of content and style) is the separation of concerns design principle as applied to the authoring and presentation of content.
See Separation of concerns and Separation of content and presentation
Service (systems architecture)
In the contexts of software architecture, service-orientation and service-oriented architecture, the term service refers to a software functionality, or a set of software functionalities (such as the retrieval of specified information or the execution of a set of operations) with a purpose that different clients can reuse for different purposes, together with the policies that should control its usage (based on the identity of the client requesting the service, for example).
See Separation of concerns and Service (systems architecture)
Service-orientation
Service-orientation is a design paradigm for computer software in the form of services.
See Separation of concerns and Service-orientation
Single-responsibility principle
The single-responsibility principle (SRP) is a computer programming principle that states that "A module should be responsible to one, and only one, actor." The term actor refers to a group (consisting of one or more stakeholders or users) that requires a change in the module. Separation of concerns and single-responsibility principle are programming principles.
See Separation of concerns and Single-responsibility principle
Software design pattern
In software engineering, a design pattern describes a relatively small, well-defined aspect (i.e. functionality) of a computer program in terms of how to write the code.
See Separation of concerns and Software design pattern
Subject-oriented programming
In computing, subject-oriented programming is an object-oriented software paradigm in which the state (fields) and behavior (methods) of objects are not seen as intrinsic to the objects themselves, but are provided by various subjective perceptions ("subjects") of the objects.
See Separation of concerns and Subject-oriented programming
Transmission Control Protocol
The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite.
See Separation of concerns and Transmission Control Protocol
Urban planning
Urban planning, also known as town planning, city planning, regional planning, or rural planning in specific contexts, is a technical and political process that is focused on the development and design of land use and the built environment, including air, water, and the infrastructure passing into and out of urban areas, such as transportation, communications, and distribution networks, and their accessibility.
See Separation of concerns and Urban planning
See also
Programming principles
- Abstraction principle (computer programming)
- Black box
- Booch method
- Code reuse
- Cohesion (computer science)
- Command–query separation
- Composition over inheritance
- Coupling (computer programming)
- Defensive programming
- Dependency inversion principle
- Deutsch limit
- Discoverability
- Don't repeat yourself
- Encapsulation (computer programming)
- Fail-fast system
- GRASP (object-oriented design)
- Information hiding
- Interface segregation principle
- Inversion of control
- KISS principle
- Law of Demeter
- Liskov substitution principle
- Loose coupling
- Ninety–ninety rule
- Offensive programming
- Open–closed principle
- Principle of least astonishment
- Pristine Sources
- Rule of three (computer programming)
- SOLID
- Separation of concerns
- Separation of mechanism and policy
- Single-responsibility principle
- The Power of 10: Rules for Developing Safety-Critical Code
- Uniform access principle
- Worse is better
- You aren't gonna need it
- Zen of Python
- Zero one infinity rule
Reductionism
- Focused proof
- Fragmentalism
- Genetic reductionism
- Greedy reductionism
- Hitchens's razor
- Intertheoretic reduction
- Logical atomism
- Mechanism (philosophy)
- Methodological individualism
- Reductionism
- Reductive art
- Separation of concerns
- Special sciences
- Technological determinism
- Type physicalism
References
[1] https://en.wikipedia.org/wiki/Separation_of_concerns
Also known as Separation of concern.