Jump to content

Draft:Software definition

From Wikipedia, the free encyclopedia

Software Definitions

[edit]

There are many published descriptions of software.[1][2] This article attempts to refine those descriptions into an actionable, engineering-quality definition statement set that can be an effective communication tool for all software stakeholders.

Introduction

[edit]

Software is a person's concept of a goal, the steps to achieve that goal, and the requirements (criteria and tests) that determine whether the "finished" software behaves in a way that actually achieves the goal. That person holds a real stake in their concept, their goal, and everything in between. However, that stakeholder can only manipulate representations of those things.

For example, requirements are typically written in a natural language. Design is often displayed with structured text and/or diagrams specific to the design process. Implementations are built with programming languages. Rather than software internals, users focus on software's input, output, behavior, and user interfaces; and each of these has its own representations. Software exists as many necessarily co-existing representations during its life cycle.

For software to be correct, its co-existing representations must be consistent with each other. In addition, software's representations not only co-exist; each representation also evolves step-wise into its successor(s). So, any inconsistency will be a step in the wrong direction along the path to the desired goal. Furthermore, because stakeholders revise their concepts and requirements over time, representation evolution must be iterative. So, consistency must be maintained over time.[3] In other words, software acts like a system that is working toward a final state (goal) by adjusting its components and their relationships.[4][5]

Software representation examples and their relationships.

These informal and brief observations suggest two basic software definitions:

  1. Software is the union of all of its representations.
  2. Software development is the stakeholders' management and control of software representation evolution.

The following sections introduce a more formal and complete definition set that justifies these suggestions.

Definition Statements

[edit]

Beginnng with early principles, four sub-sections provide statements that define (1) general system terms, (2) software-specific terms, (3) software development and operations terms, and (4) basic cybersecurity terms.

The definition statements are presented in a Backus-Naur Form where the symbol ":=" should be read as "is/are defined as".

Systems

[edit]

Object[6] := the perceived properties and corresponding values attached to an entity or phenomenon.

Data := text and/or numbers that identify, describe, measure, or otherwise characterize object property values.

Agent := a human, legal, or other entity that can create or delete objects and that can read or write object properties and values.

Circumscription (literally, writing around) := a process for identifying (e.g., uniquely naming, physically grouping, etc.) objects and associating them with each other to the exclusion of all other objects.

Boundary := a closed line created by circumscription that includes some objects and excludes all other objects.

Set := an object defined by a boundary that contains zero or more other objects[7].

Object, member, and boundary concepts for sets.

Member := an object included in a set.

State := summary data calculated by enumerating the properties of an object and then assigning values to those properties individually and/or collectively.

Information := a quantitative measure of state, as defined by Shannon[8][9].

System := a set of interacting members whose states can be combined to form a state for the set as a whole.

System Boundary := a boundary that defines a system.

Interface := a section of a system boundary that allows information to flow into or out of a system.

Simple Behavior := an object 's single transition from a specified current state to an adjacent next state.

Local Behavior := the set of all possible simple behaviors given a specified current state.

Behavior Path := a sequence of simple behaviors.

Global Behavior := the set of all possible unique behavior paths for a given system.

Representation := a practical manifestation of a concept that can transfer an object's data among agents, e.g., discussion, documentation, flow charts, source code, etc.

Statement := a unit of representation in a natural or other language appropriate for the representation.

Software

[edit]

Algorithm := a finite set of instructions[], performed in a prescribed sequence, that change an object 's state from a specified set of initial conditions to a specified set of final conditions.

Data Structure := a physical, mathematical, and/or logical arrangement of data that affects that data’s accessibility and/or usefulness for a specified purpose.

Program := a system whose members are (1) algorithms and their associated data structures and/or (2) other programs[10].

Computer := a manufactured physical device designed to host and/or execute programs.

Computer Program := a program hosted and/or executed by a computer.

Program Behavior := a computer program 's simple behavior or local behavior or global behavior.

Computer Program Representation := ordered collection of statements that capture, categorize, execute, or otherwise express desired representation-specific program behavior.

Software := the union of all representations of a computer program.

Software Development

[edit]

Requirement := a statement that specifies program behavior.[11][12][13]

Domain := an engineered, natural, legal, social, and/or other context in which software is required to operate or actually operates.

Software Instance := a uniquely identifiable manifestation or copy of specific software.

Reference Software Instance := a software instance designated as a standard to which other software instances generated from the same software may be compared.

Software Development := the creation of a computer program representation or the conversion of one computer program representation into another where the creation/conversion intent is to produce software that satisfies all requirements.[11]

Software Development Operations := a system of physical, human, and procedural resources that enables and sustains software development.[11]

Software Administrative Operations := a system of physical, human, and procedural resources that manages the delivery, configuration, and use of software instances.[11]

Software Execution := the initiation or exhibition of a software instance 's program behavior.

Software Operations := a system of physical, human, and procedural resources that configures software instances and causes software execution.

Stakeholder := any human, legal, or other entity that can affect or be effected by software development, software development operations, software administrative operations, and/or software operations.

Software Security

[edit]

External Influence := any stakeholder, action, or circumstance

  1. that is not an explicit and legitimate part of software development, software development operations, software,
  2. and that can change the behavior of any computer program representation or can cause software execution.

Threat := the possibility of unexpected and/or undesirable program behavior and/or the consequences of that behavior.

Threat Source := any external influence that can cause a threat[].

Threat Likelihood := a stakeholder 's expectation that a threat source will cause a threat[].

Threat Boundary := a boundary that separates a system from a threat source.

Vulnerability := a threat boundary interface[CISA].

Threat Model := documentation that

  1. identifies each threat source,
  2. quantifies each threat likelihood,
  3. defines every threat boundary,
  4. lists every vulnerability,
  5. includes up-to-date vulnerability status (severity, impact, remediation, etc.)[CVE, Virus Total, ...], and
  6. includes a vulnerability elimination plan[TD...].

Attack := a threat source 's action projected at or across a threat boundary, i.e., a realized threat[MITRE].

Exploit := an attack that has prevented or changed required program behavior, i.e., a successful attack.[0]

Fault Tolerance := a software instance's ability[] to exhibit required program behavior during an attack.

Resilience := a software instance's ability[] to exhibit required program behavior after an exploit.[14]


References

[edit]

Citations

[edit]
  1. ^ Sillitto et al. (2026).
  2. ^ Software Definition (2026).
  3. ^ CISA (2026).
  4. ^ de Weck (2026).
  5. ^ Systems Engineering Handbook (2026).
  6. ^ Merriam-Webster (2026).
  7. ^ Prather (1986).
  8. ^ Shannon (1948).
  9. ^ Suh (1990).
  10. ^ Wirth (1976).
  11. ^ a b c d Bourque & Failey (2026).
  12. ^ Systems and Software Engineering (2026).
  13. ^ Systems and Software Engineering — Life cycle processes — Requirements engineering (2018).
  14. ^ Firesmith (2019).

Bibliography

[edit]
  • Sillitto, Hillary; et al. "Systems Engineering and System Definitions" (PDF). INCOSE. Retrieved 2026-06-08.
  • Prather, Ronald E. (1986). Elements of Discrete Mathematics. Boston, MA: Houghton Mifflin Company. ISBN 0-395-35165-0.
  • Wirth, Niclaus (1976). Algorithms + Data Structures = Programs. Englewood Cliffs, N.J.: Prentice-Hall. ISBN 978-0-13-022418-7.
  • Kumar, Amruth; Raj, Rajendra; Aly, Sherif; Anderson, Monica; Becker, Brett; Blumenthal, Richard; Eaton, Eric; Epstein, Susan; Goldweber, Michael; Jalote, Pankaj; Lea, Douglas; Oudshoorn, Michael; Pias, Marcelo; Reiser, Susan; Servin, Christian; Simha, Rahul; Winters, Titus; Xiang, Oiao (2026). Computer Science Curricula 2023. New York, NY, USA: Association for Computing Machinery. p. 459. ISBN 979-8-4007-1033-9.
  • Suh, Nam P. (1990). Principles of Design. New York, NY, USA: Oxford University Press. p. 401. ISBN 0-19-504345-6.
  • Hutchison, Nicole; Hoffman, Chris; Smith, Gary; Hybertson, Duane; Tuddenham, Peter; Dagli, Cihan; Endler, David; Haskins, Cecelia; McDermott, Tom; Calvo-Amodio, Javier; Dahmann, Judith; Hefner, Rick; Singam, Caitlyn; Raz, Ali; Phuong Le, Ha; Madachy, Ray. "Guide to the Systems Engineering Body of Knowledge". SEBoK. International Council on Systems Engineering (INCOSE). Retrieved 2026-06-08.
  • CISA. "Secure by Design". Secure by Design. Cybersecurity & Infrastructure Security Agency. Retrieved 2026-06-21.