In continuation to my previous blog post, this is the final blog regarding the acronyms every beginner in software engineering should know. Hope you find this helpful.
The Bourne shell or sh is a basic shell i.e. a small program with few features. The Bourne shell is not a standard shell but it is still available on every Linux system for compatibility with UNIX programs. Bourne Again Shell, on the other hand, is the GNU standard shell, intuitive and flexible. On Linux, bash is the standard shell for common users. It is a super-set of the Bourne shell which contains some more add-ons and plugins. Bourne Again Shell is compatible with Bourne Shell but the reverse is not true.
A batch file is similar to the shell script in Linux. But it is compatible with DOS, OS/2 and Microsoft Windows. It is made up of sequence of commands to be executed by the command-line interface, stored in a plain text file. They are used to automate everyday tasks thereby reducing the time required. The term batch arises from batch processing, meaning non-interactive execution.
A Command Line Interface is a command line program that accepts text input to execute operating system functions. Before the arrival of the mouse, CLI’s were the only way to interact with computers. Today most users use GUI or Graphical User Interfaces and rarely use CLI. However, CLI is used by software engineers and system administrators to configure computers, install software and access features not available in the GUI (Graphical User Interface).
In software engineering CRUD stands for Create, Read, Update and Delete which are the basic functions of persistent storage or database. When we are creating API’s we want the models to provide all these four functionalities. The model must be able to create a new resource, read which returns the resource if already created, update an existing resource and delete any existing resource.
It is a cross-platform and language-independent application programming interface that treats an HTML (Hyper Text Markup Language), XHTML (Extensible Hypertext Markup Language) or XML (Extensible Markup Language) as a tree structure where each node is an object representing a part of the document. DOM represents a document with a logical tree. Each branch of the tree ends as a node and each object contains objects. DOM methods allow programmatic access to the tree, which makes it possible to manipulate the document structure, style or content. Nodes can also have event handlers attached with them, which are executed when an event is triggered.
LTS stands for Long Term Support. You may find these term associated with most of the open-source software. For example, Node.js versions like 10.13.0 LTS or Ubuntu 18.04.1 LTS etc. LTS means that the released piece of software will be maintained for a longer period of time. For example in terms of Ubuntu, a new Ubuntu Desktop and Ubuntu Server release every 6 months, whereas a LTS is released every 2 years. And a LTS has a support period of 3 years support for Ubuntu desktop and 5 years for Ubuntu Server. It’s advisable to use LTS versions in production.
DRY stands for Don’t Repeat Yourself is a basic software development principle to avoid duplication of code. The advantages DRY bring is the maintainability, readability, reusability, and testing. Unit testing becomes a lot easier when you use the DRY approach.
Test Driven Development is a software development process in which each requirement is turned into very specific test cases, then the software is improved to pass the new tests only. Following is a sequence of steps for test-driven development:
- Add a test: Each new feature starts with writing a test. To write the test the developer should completely understand the feature's specification and requirements.
- Run new tests for failure: Run the new tests and check whether they all fail, which is the expected behaviour since there is no code for the test cases written.
- Write the code: In this step, we write the code to pass the tests. Even though all the test cases pass, the code may not be perfect or optimized. However, this will be improved in step 5 when we refactor the code.
- Run all tests for success: In this step, all test cases are executed, and if all test cases pass this gives confidence to the developer that the new feature does not break any existing parts of the system. If the new code changes break any existing part of the system then the new code must be adjusted till all the test cases pass.
- Refactor code: In this step, the new code is refactored i.e. it is examined for duplication. It is in this step that the Object, class, variable and methods are named clearly to make the code readable and also clearly represent their purpose. Applying design patterns if necessary is done in this step. The developer continually re-runs the test while refactoring the code and this gives him confidence that the changes are not affecting the existing functionality.