You can also browse Wikipedia:Featured articles and Wikipedia:Good articles to find examples of Wikipedia's best writing on topics similar to your proposed arti
Submission declined on 26 June 2026 by Dreamyshade (talk). This draft appears to be a duplicate of an existing article. Wikipedia does not permit multiple articles on the same topic.
Where to get help
How to improve a draft
You can also browse Wikipedia:Featured articles and Wikipedia:Good articles to find examples of Wikipedia's best writing on topics similar to your proposed article. Improving your odds of a speedy review To improve your odds of a faster review, tag your draft with relevant WikiProject tags using the button below. This will let reviewers know a new draft has been submitted in their area of interest. For instance, if you wrote about a female astronomer, you would want to add the Biography, Astronomy, and Women scientists tags. Editor resources
|
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.
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]

These informal and brief observations suggest two basic software definitions:
The following sections introduce a more formal and complete definition set that justifies these suggestions.
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".
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].

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.
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.
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.
External Influence := any stakeholder, action, or circumstance
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
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]
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.
- summarize secondary sources: do not offer your own analysis or arguments;
- be written from a neutral point of view: represent the subject without bias, avoiding praise, criticism, or persuasive or promotional language;
- not contain original research: do not include new theories, unpublished ideas, or personal experiences.
Instead, only summarize in your own words a range of independent, reliable, published sources that discuss the subject.