Draft:Software definition

  • Comment: I appreciate the effort and expertise that went into drafting this contribution, but this is not really suitable as a standalone Wikipedia article. See Wikipedia:No original research - this appears to be an original work that aims to synthesize a number of existing definitions into a new, systematic definition. Wikipedia articles are intended to summarize other people's research in a straightforward sort of way, rather than being their own works of analysis or scholarship.
    I encourage reviewing existing related articles and seeing if you can integrate some of these good citations into those articles to help strengthen them, such as Software, Software system, Software requirements, Software requirements specification, and System requirements specification. Dreamyshade (talk) 06:00, 26 June 2026 (UTC)

Software Definitions

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

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

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

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

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

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

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

Citations

  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

  • 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.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.