Running Definition List: Software

Sean

, Uncategorized

The following is a running list of definitions for software terms that I’ve come across. I will update this list periodically as I run into new terms and concepts.  Note that the selection of the words in this list was done with a slight tilt in the direction of the Java programming language.

Aggregator

Refers to a website or computer software that aggregates a specific type of information from multiple online sources. Examples include search aggregator, social network aggregations, news aggregator, etc.

Agile

Agile is a time boxed, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end. It works by breaking projects down into little bits of user functionality called userstories, prioritizing them, and then continuously delivering them in short two week cycles called iterationsor sprints.

AJAX

AJAX stands for Asynchronous Javascript and XML. It is not a programming language. It is a technique that uses a combination of:

  • A browser built-in XMLHttpRequest object (to request data from a web server)
  • Javascript and HTML DOM (to display or used the data)

AJAX allows web pages to be updated asynchronously by exchanging data with a web server behind the scenes. This means that it is possible to update parts of a web page, without reloading the whole page.

Algorithm

An algorithm is a ordered set of step-by-step operations to be performed. Algorithms perform calculation, data processing, and/or automated reasoning tasks.

Alpha and beta testing

  1. Pre-alpha – Refers to all activities performed during the software project before formal testing. These activities can include requirements analysis, software design, development, and unit testing.
  2. Alpha – Named after the first letter in the greek alphabet, refers to the first phase to begin formal software testing. Testing is done using black-box techniques by another testing team. The alpha phase usually ends with a feature freeze, indicating that no more features will be added to the software.
  3. Beta – Named after the second letter in the greek alphabet, occurs after alpha testing when the software is feature complete but likely to contain a number of known or unknown bugs. The process of delivering a beta version to users is called a beta release and this is typically the first time that the software is available outside of the organization that developed it.

Apache Ant

Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects.

The most immediately noticeable difference between Ant and Make is that Ant uses XML to describe the build process and its dependencies, whereas Make uses Makefile format.

By default, the XML Ant build file is named build.xml.

Augmented Reality (AR) vs Virtual Reality (VR)

AR adds digital elements to a live view of the world often by using the camera on a smartphone. Examples of AR experiences include Snapchat animations and the game Pokemon Go. VR implies a complete immersion experience that shuts out the physical world.

Bash

Bash is a Unix shell. The name is an acronym, a pun and descriptive. As an acronym, it stands for Bourne-again shell, referring to its initial conception as a free open source clone of the Bourne shell (sh). As a pun, it refers to the Christian concept of being born again. The name is also descriptive of what it did, bashing togetherthe features of sh, csh and ksh.

Batch processing

Batch processing is the execution of a series of programs (jobs) on a computer without manual intervention. Batch jobs are set up so they can be run to completion without manual intervention.  All input data is preselected through scripts or command-line parameters. This is in contrast to “online” or interactive programs which prompt the user for such input. A batch program/process takes a set of data files as input, processes the data, and produces a set of output data files.

Benchmarking

Benchmarking is the practice of comparing key performance metrics to industry bests.

Big Data

Big Data describes:

  • The massive data sets collected by companies or institutions (think many many terabytes and more), and
  • The programs which analyze that data to glean information from it

Big Data typically refers to a set of data so big that traditional analysis software struggles to analyze it.

Bleeding edge technology

A category of tech that is so new that they could have a high risk of being unreliable. The term tends to imply even greater advancement and newness than “cutting edge.”

BlockChain

Blockchain is a new type of database, which is distributed and encrypted by default.

Traditional databases overwrite a record when a change occurs on it, but with BlockChain, every change creates a new record, that is timestamped and contains a link to the previous version of the record.

This means that you can see all the transactions that ever occurred on a particular record since it was created, which facilitates verification and validation.

While blockchain is inherently distributed (meaning that many parties hold copies of the data), it is not inherently decentralized. Whether a blockchain database is centralized or decentralized simply refers to the rights of the participants. Decentralized means that many parties can write to the database.

The popular crypto-currency bitcoin is based on the BlockChain technology, and it’s currently being evaluated for use in other domains like medical and banking records.

Blog

A blog is a informational website consisting of discrete, often informal diary-style text entries (posts). Posts are typically displayed in reverse chronological order, so that the most recent post appears first.

Bring your own device (BYOD)

Refers to the policy of permitting employees to bring personally owned devices (laptops, tablets, and smart phones) to their workplace, and use those devices to access privileged company information and applications.

Build scripts

A build script is all about automating the process of generating application artifacts for deployment. When we compile projects, we also want to perform some other steps such as running tests, compiling documentation, create an examples package, move some files from one location to another, and in the end zip them, or create an installer for the project. Doing them by hand is not usually an ideal option.  People sometimes think of preparing a batch file/shell script before they learn about build files.

Chatbots

Chatbots are computer programs which conduct “human like” conversations with users, typically via text. They are typically used in Instant Messaging applications, such as Slack, or on websites to help users with frequently asked questions.

Cloud computing

The practice of using a network of remote servers hosted on the Internet to store, manage, and process data, rather than a local server or a personal computer.

Cluster

A computer cluster is a group of linked computers, working together to form what appears to be a single computer. The components of a cluster are commonly, but not always, connected to each other through fast local area networks. Clusters are usually deployed to improve performance and availability over that of a single computer, while typically being much more cost-effective than single computers of comparable speed or availability.

Computer terminal

A computer terminal is an electronic or electromechanical hardware device that is used for entering data into, and displaying data from, a computer or a computing system.

The function of a terminal is confined to display and input of data; a device with significant local programmable data processing capability may be called a “smart terminal” or fat client. A terminal that depends on the host computer for its processing power is called a thin client. A personal computer can run software that emulates the function of a terminal, sometimes allowing concurrent use of local programs and access to a distant terminal hostsystem.

Content Management System

A CMS is a software application that enables users to create and manage digital content without having to know how to write code.

Cross-platform

Cross-platform software is software that is implemented on multiple computing platforms.

Datafication

A modern technological trend turning many aspects of our life into computerized data and transforming this information into new forms of value.

Data mining

Computational process of discovering patterns in large data sets involving methods at the intersection of artificial intelligence, machine learning, statistics, and database systems. The overall goal of data mining is to extract information from a data set and transform it into a new understandable format for further use.

Data science

Interdisciplinary field about processes and systems to extract knowledge or insights from data in various forms.

Datasource

Datasource is a name given to the connection set up on a server to a database. 

Deep web

Parts of the web whose contents are not indexed by standard search engines for any reason. The opposite term to the deep web is the surface web.

Demilitarized zone (DMZ)

The DMZ (demilitarized zone) is a physical or logical sub-network between the secure intranet and the unsecure internet. Commonly, the database and other secure resources are located in the intranet, and the web and application servers are located in the DMZ.

The purpose of the DMZ is to add an additional layer of security to an organizations LAN. An external hacker only has access to the equipment in the DMZ, rather than any other part of the network.

Design pattern

A re-usable form of a solution to a common design problem.

DevOps

A cultural trend in software development in which developers partner with operations staff to assure that software runs with minimal problems.

Diff

In computing, diffis a file comparison utility that outputs the differences between two files. It is typically used to show the changes between one version of a file and a former version of the same file. Diff displays the changes made per line for text files. Like the use of the word “grep” for describing the act of searching, the word diffis used in jargon as a verb for calculating any difference.

ECM (Enterprise Content Management)

Enterprise Content Management (ECM) is a formalized means of organizing and storing an organization’s documents, and other content, that relate to the organization’s processes. The term encompasses strategies, methods, and tools used throughout the lifecycle of the content.

ECM combines 5 components which can also be used as stand alone components.

  1. Capture – Capture involves converting information from paper documents into an electronic format through scanning.
    1. Recognition technologies – Various recognition technologies can be used to extract information from scanned documents
    2. Image cleanup – Image cleanup features include rotation, straightening, color adjustment, transposition, zoom, aligning, page separation, annotations and despeckling.
  2. Manage – The manage category includes 5 traditional application areas:
    1. Document management (DM)
    2. Collaboration (or collaborative software, a.k.a. groupware)
    3. Web content management (including web portals)
    4. Records management
    5. Workflow and business process management (BPM)
  3. Store – Store components temporarily store information that isn’t required, desired, or ready for long-term storage or preservation. Even if the Store component uses media that are suitable for long-term archiving, “Store” is still separate from “Preserve.”
  4. Preserve – Preserve involves the long-term, safe storage and backup of static, unchanging information. Preservation is typically accomplished by the records management features of an ECM system and many are designed to help companies comply with government and industry regulations.
  5. Deliver – The Deliver components of ECM present information from the Manage, Store, and Preserve components.

EICAR

The EICAR test file (official name: EICAR Standard Anti-Virus Test File) is a file, developed by the European Institute for Computer Antivirus Research, to test the response of computer antivirus (AV) programs. The rationale behind it is to allow people, companies, and AV programmers to test their software without having to use a real computer virus that could cause actual damage should the AV not respond correctly. EICAR likens the use of a live virus to test AV software to setting a fire in a trashcan to test a fire alarm, and promotes the EICAR test file as a safe alternative.

The file is simply a text file of either 68 or 70 bytes that is a legitimate executable file called a COM file that can be run by Microsoft operating systems and some work-alikes (except for 64-bit due to 16-bit limitations), including OS/2. When executed, it will print “EICAR-STANDARD-ANTIVIRUS-TEST-FILE!” and then stop. The test string was specifically engineered to consist of ASCII human-readable characters, easily created using a standard computer keyboard. It makes use of self-modifying code to work around technical issues that this constraint makes on the execution of the test string.

The Eicar test string reads:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

ETL (Extract, Transform, and Load)

Think of the ETL process as house cleaning for your data. ETL is software that enables businesses to consolidate their disparate data while moving it from place to place, and it doesn’t really matter that the data is in different forms or formats. The data can come from any source.

For example, a financial institution might have information on a customer in several departments and each department might have that customer’s information listed in a different way. The membership department might list the customer by name, whereas the accounting department might list the customer by number. ETL can bundle all this data and consolidate it into a uniform presentation, such as for storing in a database or data warehouse.

Firewall

A firewall is a part of a computer system or network that is designed to block unauthorized access while permitting authorized communications. It is a device or set of devices that is configured to permit or deny network transmissions based upon a set of rules and other criteria.

Firewalls can be implemented in either hardware or software, or a combination of both. Firewalls are frequently used to prevent unauthorized Internet users from accessing private networks connected to the Internet, especially intranets. All messages entering or leaving the intranet pass through the firewall, which inspects each message and blocks those that do not meet the specified security criteria.

Firewall exception

A firewall exception is a change in the firewall policy which allows inbound or output messages to pass through the firewall for certain programs or ports.

FTP (File Transfer Protocol)

File Transfer Protocol (FTP) is a standard network protocol used to copy a file from one host to another over a TCP-based network, such as the Internet. FTP is built on a client-server architecture. The client makes a TCP connection to the server’s port 21.

Fuzzy logic

A form of many-valued logic in which truth values of variables may be any real number between 0 and 1. By contrast, in Boolean logic, the truth values of variables may only be the crisp values 0 or 1.

ICAP

ICAP is designed to provide simple dispatching of HTTP messages for obtaining content services. It allows ICAP clients to pass HTTP messages to ICAP servers for some specified type of processing. The ICAP server executes the requested service and sends the (possibly) modified message back to the ICAP client.

For example, a Web proxy might use ICAP to send binary downloads it received to another server for virus checking. The server checks the data, removes detected viruses, and uses ICAP to return the cleaned-up data back to the Web proxy.

Internet of Things (IoT)

IoT is a term that encompasses everything involved in connecting everyday devices to the Internet, in order to collect data from them, exchange data between devices or control them from a distance.

These devices can be cars, home automation systems or your everyday toaster.

JAX-B (Java Architecture for XML Binding)

Java Architecture for XML Binding (JAXB) allows Java developers to map Java classes to XML representations. JAXB provides two main features: the ability to marshalJava objects into XML and the inverse, i.e. to unmarshallXML back into Java objects.

JAX-RPC (Java API for XML-based RPC)

The fundamental purpose of JAX-RPC is to make communications between Java and non-Java platforms easier, first by using universal Web service technologies like XML, SOAP, and WSDL, and then by providing a simple object-oriented API that Java developers can use to communicate using those technologies. You can use JAX-RPC to access Web services that run in non-Java environments.

JAX-RPC defines the standard programming model for both Web service clients and endpoints in J2EE. There are essentially two sides to the JAX-RPC model: client-side and server-side. The client-side programming model allows you to access a remote Web service as if it were a local object, using methods that represent SOAP operations. The server-side programming model allows you to develop Web service endpoints as Java objects or Enterprise JavaBeans, which run on the J2EE platform.

Kernel

In computing, the kernel is the central component of most computer operating systems; it is a bridge between applications and the actual data processing done at the hardware level. The kernel’s responsibilities include managing the system’s resources (the communication between hardware and software components). Usually as a basic component of an operating system, a kernel can provide the lowest-level abstraction layer for the resources (especially processors and I/O devices) that application software must control to perform its function. It typically makes these facilities available to application processes through inter-process communication mechanisms and system calls.

Load balancing

In networking, load balancing is a technique to distribute workload evenly across two or more computers, network links, CPUs, hard drives, or other resources, in order to get optimal resource utilization, maximize throughput, minimize response time, and avoid overload. Using multiple components with load balancing, instead of a single component, may increase reliability through redundancy. The load balancing service is usually provided by a dedicated program or hardware device (such as a multilayer switch or a DNS server).

Machine learning

A subfield of computer science that gives computers the ability to learn without being explicitly programmed.

Mashup

A webpage or web app that combines content and functionality from two or more sources or APIs to create a new application.

McAfee UVScan

The UVScan program is the virus-scanning portion of the McAfee security suite. UV scan can be executed as a command line program taking the file name to be scanned as an argument.

Microservices

A bunch of individual web APIs instead of one monolithic web service API that is handling all the requests. Microservices are a drill down API architecture where specific units of functionality have their own API. The goal is to make the functionality more modular and easier to maintain.

Net Neutrality

Net Neutrality is the concept that a government or Internet Provider should treat the speed of all data traffic on the internet the same way, no matter who’s data it is, where it comes from, where it is going, or what it contains.

Imagine this: without Net Neutrality, an Internet Provider could prioritize the traffic of its own video streaming service over Netflix’s. This would mean that Netflix’s service would be terrible in that area, forcing users to sign up for the Internet Provider’s service instead.

Platform as a Service (PaaS)

A category of cloud computing services that provide a platform allowing customers to develop, run, and manage applications without the complexity of building and maintaining the infrastructure required to launching an app.

Performance testing

In software engineering, performance testing is testing that is performed to determine how fast some aspect of a system performs under a particular workload. It can also serve to validate and verify other quality attributes of the system, such as scalability, reliability and resource usage.

Personalization

The concept of customizing the information presented to a user of a product so it is tailored specifically for them. Personalization is used in targeted ads such as Google Ads, and in recommendation tools such as Amazon’s product recommendations or Facebook’s friend recommendations.

Portal

A specially designed web site that brings information together from diverse sources in a uniform way. Usually, each information source gets its dedicated area on the page for displaying information.

Putty

PuTTY is a free and open source terminal emulator application which can act as a client for the SSH, Telnet, rlogin, and raw TCP computing protocols and as a console client.

Responsive web design

An approach to web design aimed at allowing the layout of desktop webpages to be adjusted in response to the size of the device one is viewing it with.

RPC (Remote Procedure Call)

In computer science, a remote procedure call (RPC) allows a computer program to cause a subroutine or procedure to execute on another computer on a shared network, without the programmer explicitly coding the details for this remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program, or remote. When the software in question uses object-oriented principles, RPC is called remoteinvocation or remote method invocation.

Scalability

The capability of an application, system, network, or process to handle a growing amount of work, or its potential to be enlarged in order to accommodate that growth.

Shell

A shell is a piece of software that provides an interface for users of an operating system to access to the services of a kernel.  The name shelloriginates from shells being an outer layer of interface between the user and the internals of the operating system (the kernel).

Operating system shells generally fall into one of two categories: command-line and graphical. Command-line shells provide a command-line interface (CLI) to the operating system, while graphical shells provide a graphical user interface (GUI). In either category the primary purpose of the shell is to invoke or “launch” another program; however, shells frequently have additional capabilities such as viewing the contents of directories.

Software as a Service (SaaS)

A software licensing and delivery model in which software is licensed on a subscription basis and is centrally hosted. SaaS is typically accessed by uses via a web browser.

Software framework

A reusable set of libraries or classes that can be leveraged by an application.

Spam

Irrelevant/inappropriate messages or unsolicited advertising sent to a large number of recipients.

SSH

Secure Shell or SSH is a network protocol that allows data to be exchanged using a secure channel between two networked devices. The two major versions of the protocol are referred to as SSH1 or SSH-1 and SSH2 or SSH-2. Used primarily on Linux and Unix based systems to access shell accounts, SSH was designed as a replacement for Telnet and other insecure remote shells, which send information, notably passwords, in plaintext, rendering them susceptible to packet analysis. The encryption used by SSH is intended to provide confidentiality and integrity of data over an unsecured network, such as the Internet.

Telnet

Telnet is a network protocol used on the Internet or local area networks to provide a bidirectional interactive text-oriented communications facility using a virtual terminal connection.

Terminal emulator

A terminal emulator, terminal application, term, or tty for short, is a program that emulates a video terminal within some other display architecture.

Test scripts

A test script in software testing is a set of instructions that will be performed on the system under test to test that the system functions as expected.

Websphere Application Server (WAS)

On a WAS you can run and deploy servlets, JSF-applications, EJB’s and Web services. There are of course a lot of other application-types. Usually you install on a WAS multiple EAR-Files.

Websphere Process Server

WebSphere Process Server is the runtime engine for artifacts produced in a business-driven development process. Technically, WebSphere Process Server is mounted on top of WebSphere Application Server and extends the WebSphere Enterprise Service Bus.

WebSphere Process Server uses the WebSphere Integration Developer as development tool.

If you want to build business processes with a tool like the WebSphere Integration Developer (WID) then the WPS will be your target runtime. Your business process will usually then use Business Process Execution Language (BPEL). 

Workflow

An orchestrated and repeatable pattern of business activity.

XLink (XML Linking Language)

XLink defines a standard way of creating hyperlinks in XML documents.

XPath (XML Path Language)

XPath, the XML Path Language, is a query language for selecting nodes from an XML document. In addition, XPath may be used to compute values (e.g., strings, numbers, or Boolean values) from the content of an XML document. XPath was defined by the World Wide Web Consortium (W3C).

The XPath language is based on a tree representation of the XML document, and provides the ability to navigate around the tree, selecting nodes by a variety of criteria. In popular use (though not in the official specification), an XPath expression is often referred to simply as an XPath

XPointer (XML Pointer Language)

XPointer allows the hyperlinks to point to more specific parts in the XML document.

XQuery

XQuery is a query programming language that is designed to query collections of XML data.

XQuery provides the means to extract and manipulate data from XML documents or any data source that can be viewed as XML, such as relational databases or office documents.

XQuery uses XPath expression syntax to address specific parts of an XML document. It supplements this with a SQL-like “FLWOR expression” for performing joins. A FLWOR expression is constructed from the five clauses after which it is named: FOR, LET, WHERE, ORDER BY, RETURN.

The language also provides syntax allowing new XML documents to be constructed.

XSLT (Extensible Stylesheet Language Transformations)

XSLT is a declarative, XML based language for transforming XML documents into HTML, XHTML, plain text, or to other XML documents. The original document is not changed; rather, a new document is created based on the content of an existing one. XSLT is most often used to convert data between different XML schemas or to convert XML data into web pages or PDF documents.

The XSLT processing model involves:

  • one or more XML source documents;
  • one or more XSLT stylesheet modules;
  • the XSLT template processing engine (the processor); and
  • one or more result documents.