Table of Contents
Basic Terminologies
1. Combination of computer instructions and data definitions that enable computer hardware to perform computational or control functions.
2. Syntactic unit that conforms to the rules of a particular programming language and that is composed of declarations and statements or instructions needed for a certain function, task, or problem solution. 1ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
Based on the definitions provided, we can see that:
- A program is made up of “computer instructions and data definitions” (1).
- The components of a program together create a unit of execution (1) and (2).
- The components of a program are put together to accomplish a particular task on a computer (1) and (2).
- A program follows the syntax of a programming language (2).
Here is an overview of a program from different perspectives:
- Form: A program can exist in two forms - human-readable form (source code) or machine code (binary code).
- Type: A program is written in a specific programming language2 but can be either compiled into binary form for computer execution or interpreted by an interpreter program.
- Usage: A program can be executable, meant to run directly, or a library, designed to be used by another program without running directly.
- Scope: A program can consist of multiple smaller programs, such as a function within a program library. It may also include multiple source code files.
Document that describes the structure and functions of a program in sufficient detail to permit programming and to facilitate maintenance. 1
ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
A program requirement details what the program needs to do and how it should be coded. It describes the program’s structure and how its source code is organized.
1. Language used to express computer programs.
2. Artificial language for expressing programs. 1ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
Programming languages are not like English. They are made-up languages used to tell computers what to do. Without programming languages, we would have to use binary code, which is a long sequence of 0s and 1s. This would be very difficult and time-consuming.
Programming languages make it easier for humans to write programs. Instead of using binary code, we can use words that we understand. These words can then be translated into binary code using a compiler, or they can be read by another program and executed directly (interpreted). This is why programming languages can be either compiled or interpreted.
1. Computer programs, procedures and possibly associated documentation and data pertaining to the operation of a computer system. 3
2. All or part of the programs, procedures, rules, and associated documentation of an information processing system. 3 4
3. Program or set of programs used to run a computer. 5ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
Based on the definitions provided, we can see that:
- Software consists of programs, data, documentation and more.
- Software consists of at least one program.
1. Software capability needed by a user to solve a problem or to achieve an objective.
2. Software capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed document.ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
Software requirements define the precise objectives that the software must achieve, encompassing its functionality, performance, design constraints, and attributes.
The purpose of a software requirements specification is to document the essential requirements of the software and its integration with external systems.
System for which software is of primary importance to the stakeholders.
ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
The ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary defines a system as a “combination of interacting elements organized to achieve one or more stated purposes”. Therefore, we redefine a software system as a “combination of interacting software organized to achieve one or more stated purposes”.
It is possible for the software in a software system to run in different locations, not all in one place. This is referred to as a distributed system.
The view of a software system can vary depending on the level of granularity. Users see it as one software, whereas developers see it as a collection of software interacting with each other.
1. Software designed to facilitate the operation and maintenance of a computer system and its associated programs.
2. Application-independent software that supports the running of application software. 1
EXAMPLE: operating systems, assemblers, utilities.ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
According to the definition, system software aims to establish a foundation for application software to function. Additionally, people use system software for computer administration and maintenance tasks.
1. Software designed to help users perform particular tasks or handle particular types of problems, as distinct from software that controls the computer itself.
2. Software or a program that is specific to the solution of an application problem 1.
3. Software designed to fulfill specific needs of a user.
4. Software of an application 6.
Note 1 to entry: Application software is the software that the application management organization produces, services, and maintains. There is also system software: the software to produce and maintain the application software and to run the application software on its platform. The application management organization is one of the users of the system software.ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
Unlike system software, application software is designed to directly solve user problems, with the support of system software.
Categories
1. Finite set of well-defined rules for the solution of a problem in a finite number of steps.
2. Sequence of operations for performing a specific task.
3. Finite ordered set of well-defined rules for the solution of a problem. 1
EXAMPLE:a complete specification of a sequence of arithmetic operations for evaluating sine x to a given precision.ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
When a computer solves a problem, it follows a sequence of steps known as an algorithm. Usually, this algorithm takes inputs and generates outputs.
A computational problem is a problem that can be solved with a computer. Finding a solution to a computational problem is essentially finding an algorithm.
Physical or logical relationship among data elements, designed to support specific data manipulation functions.
Note 1 to entry: The data structures are usually documented in technical and logical data models.ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
Programs use data structures to represent and manipulate data.
Data structures are defined by their internal properties, governing how their elements interact. They are also defined by the functions used to manipulate the data.
When selecting a data structure for a program, it’s essential to consider the cost, or complexity, of the data manipulation functions within the context of the problem being solved. This cost is closely linked to the properties of the data structure. Even if two data structures have identical data manipulation functions, one may be favored over the other in a specific context because of its internal properties. For example, an array list is preferred over a linked list for index-based data read and update operations.
Distributed computing: spreading of computation and data across a number of computers connected by a network.
ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
When it comes to software, a distributed system refers to a software system that performs distributed computing. It is made up of subsystems that are spread across several computers connected by a network. Each sub-system consists of one or more software.
With modern lightweight software platforms, it’s common to have multiple software platforms on a single physical computer. Thus, the subsystems of a distributed system may be spread across various software platforms connected by a network, operating on one or more physical computers.
Collection of software, firmware, and hardware elements that controls the execution of computer programs and provides such services as computer resource allocation, job control, input/output control, and file management in a computer system.
ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
The definition of an operating system includes not only software but also firmware and hardware. However, the term “operating system” is commonly used loosely to refer specifically to the software component, also known as operating system software. Examples of this include Linux and Microsoft Windows.
Operating system software manages the execution of computer programs on hardware. It offers services to these programs by interfacing with hardware through firmware. The hardware and firmware components of the operating system provide the essential resources for the software component to manage and serve executing programs.
We use the term operating system (OS) loosely to talk about operating system software in our articles.
1. General activity of software development.
2. Designing, writing, modifying, and testing of programs. 1ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
Programming, software development, and coding are often used interchangeably.
1. Fundamental concepts or properties of a system in its environment embodied in its elements, relationships, and in the principles of its design and evolution. 7 8 9
2. Set of rules to define the structure of a system and the interrelationships between its parts. 10ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
Software architecture outlines models that dictate how software should be structured into parts and how these parts should interrelate and interact. Each defined model is termed a software architectural pattern and is alternatively known as a software architectural style by some practitioners. Multiple pattern may be combined to form another pattern.
The software requirements and quality attributes play a significant role in determining the software architectural pattern to be used. These quality attributes include maintainability (ability to maintain the software), testability (ability to test the software) and debuggability (ability to debug the software).
Some architectural patterns, like object-oriented programming, concentrate on the architecture at the source code level. These are applied within a single program and are categorized as intra-program architectural patterns.
On the other hand, architectural patterns such as microservice architecture are geared towards the architecture at the broader system level, dictating how programs within a system are organized. These are categorized as inter-program architectural patterns.
Certain patterns, like the pipes and filters architectural pattern, can serve as both inter and intra-program patterns. For instance, a filter could be a function within a single executable program or an entire executable program within a larger system.
1. Type of computer or hardware device and/or associated operating system, or a virtual environment, on which software can be installed or run. 11
2. A collection of hardware and software components that are needed for a CASE tool to operate. 12
3. Combination of an operating system and hardware that makes up the operating environment in which a program runs. 13
Note 1 to entry: A platform is distinct from the unique instances of that platform, which are typically referred to as devices or instances.ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
A software platform provides an environment where programs can run without requiring additional administrator setup. It encompasses system software and hardware or virtual environments.
Nowadays, multiple software platforms can coexist on the same physical computer.
1. Capability of software product to satisfy stated and implied needs when used under specified conditions. 14
2. Degree to which a software product satisfies stated and implied needs when used under specified conditions. 15
3. Degree to which a software product meets established requirements. 16
Note 1 to entry: Quality depends upon the degree to which the established requirements accurately represent stakeholder needs, wants, and expectations. In SQuaRE standards software quality has the same meaning as software product quality.ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary
Software quality refers to how well software performs as expected. It also reflects how effective its monitoring, debugging, and maintenance are.
ISO/IEC 2382:2015, Information technology — Vocabulary ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
While it’s not ideal, sometimes a program can be made up of multiple smaller programs written in various programming languages. This is achievable thanks to technologies such as Application Binary Interface (ABI) and Foreign Function Interface (FFI). ↩︎
IEEE 828-2012 IEEE Standard for Configuration Management in Systems and Software Engineering, 2.1 ↩︎ ↩︎
ISO/IEC 19770-1:2012 Information technology — Software asset management — Part 1: Processes and tiered assessment of conformance, 3.14 ↩︎
ISO/IEC 26514:2008 Systems and software engineering — requirements for designers and developers of user documentation, 4.46 ↩︎
ISO/IEC 16350-2015 Information technology — Systems and software engineering — Application management, 4.6 ↩︎
ISO/IEC TS 24748-1:2016 Systems and software engineering — Life cycle management — Part 1: Guide for life cycle management, 2.6 ↩︎
ISO/IEC/IEEE 15288:2015 Systems and software engineering — System life cycle processes, 4.1.5 ↩︎
ISO/IEC/IEEE 42010:2011 Systems and software engineering — Architecture description, 3.2 ↩︎
ISO/IEC 10746-2:2009 Information technology — Open Distributed Processing — Reference Model: Foundations, 6.6 ↩︎
ISO/IEC 19770-1:2012 Information technology — Software asset management — Part 1: Processes and tiered assessment of conformance, 3.9 ↩︎
IEEE 1175.2-2006 IEEE Recommended Practice for CASE Tool Interconnection — Characterization of Interconnections, 3.11 ↩︎
ISO/IEC 26513:2009 Systems and software engineering — Requirements for testers and reviewers of user documentation, 3.26 ↩︎
ISO/IEC 25000:2014 Systems and software Engineering — Systems and software product Quality Requirements and Evaluation (SQuaRE) — Guide to SQuaRE, 4.33 ↩︎
ISO/IEC 25010:2011 Systems and software engineering — Systems and software Quality Requirements and Evaluation (SQuaRE) — System and software quality models, 4.3.13 ↩︎
IEEE 730-2014 IEEE Standard for Software Quality Assurance Processes, 3.2 ↩︎