System - A set of facts, principles, rules, etc. classified or arranged in a regular, orderly form so as to show a logical plan linking the various parts.
Computer system - Computer systems are a combination of both hardware and software working together. Hardware is the physical components of a computer and software is the programs that run on a computer.
Software - Software is a set of instructions, data or programs used to operate computers and execute specific tasks. ... Examples of applications include office suites, database programs, web browsers, word processors,software development tools, image editors and communication platforms.
Application software - Application software (app for short) is a program or group of programs designed for end users. Examples of an application include a word processor, a spreadsheet, an accounting application, a web browser, an email client, a media player, a file viewer, simulators, a console game or a photo editor.
System Software - System software is a type of computer program that is designed to run a computer’s hardware and application programs. If we think of the computer system as a layered model, the system software is the interface between the hardware and user applications. The operating system (OS) is the best-known example of system software. The OS manages all the other programs in a computer. Software engineering
Software Engineering -Software engineering is defined as a process of analysing user requirements and then designing, building, and testing software application which will satisfy those requirements.IEEE, in its standard 610.12-1990, defines software engineering as the application of a systematic, disciplined, which is a computable approach for the development, operation, and maintenance of software.Fritz Bauer defined it as 'the establishment and used standard engineering principles. It helps you to obtain, economically, software which is reliable and works efficiently on the real machines'. Boehm defines software engineering, which involves, 'the practical application of scientific knowledge to the creative design and building of computer programs. It also includes associated documentation needed for developing, operating, and maintaining them.'
Refactoring - Refactoring is the process of changing a software system in such a way that it does not alter the function of the code yet improves its internal structure. When carried out manually, refactoring is applied directly to the source code and is generally a labour-intensive, ad hoc, and potentially error-prone process. In contrast to conventional manual refactoring, TSRI has achieved a highly automated refactoring process characterized by the application of pattern-based transformations to a model of the software rather than to the source code. This approach allows refactoring to be applied reliably and safely on a massive scale as a rigorous, disciplined, multi-level process.
YAGNI - Yagni originally is an acronym that stands for "You Aren't Gonna Need It". It is a mantra from Extreme Programming that's often used generally in agile software teams. It's a statement that some capability we presume our software needs in the future should not be built now because "you aren't gonna need it".Yagni is a way to refer to the XP practice of Simple Design (from the first edition of The White Book
ORM - Object relational mapping is a programming technique for conveying data between incompatible type systems using object oriented programming languages. A metadata descriptor is used to connect object code to a relational database.
Distributed computing - Distributed Computing is a field of CS that studies distributed systems. A distributed system is a system whose components are located on different networked computers and communicate and coordinate actions by passing messages. The components interact to achieve a common goal. Examples of distributed systems include massively multiplayer online games to peer-to-peer applications.
AOP - Aspect-oriented programming is a paradigm that aims to increase modularity by allowing the separation of cross cutting concerns. This is achieved by adding additional behaviour to existing code with modifying the code itself. This allows behaviours not central to the business logic (eg logging) to be added to a program without cluttering the code.
Agile - Agile is a software development approach focused around discovering requirements and developing solution through collaboration of self-organising teams where the customer works closely with the development teams. The values and principles underpin several software development frameworks, such as Scrum and Kanban.
SOA - SOA is a type of software where services are provided to other components by application components through a type of communication protocol over a network. A SOA Services all provide different sets of functionalities that can be accessed remotely and acted upon and updated independently, for an example retrieving a credit card statement online.
JVM - A JVM is a virtual machine that allows a device to run Java programs and other programs that are written in other languages that are also copied by the Java bytecode.
Byte Code - Bytecode which is also known as portable code or p-code is a set instructions which is designed for efficient execution by a software interpreter, unlike source code which can be read by a human bytecodes are compact numeric code that encode the result of compiler parsing and performing semantic analysis of things like type, scope, and nesting depths of program objects.
black-box reuse - A black box is a device, system or object which can be viewed in terms of its inputs and outputs (or transfer characteristics), without any knowledge of its internal workings.
CMM - A coordinate measuring machine (CMM) is a device that measures the geometry of physical objects by sensing discrete points on the surface of the object with a probe. Various types of probes are used in CMMs, including mechanical, optical, laser, and white light. Depending on the machine, the probe position may be manually controlled by an operator or it may be computer controlled.
Dependency analysis - In compiler theory, dependence analysis produces execution-order constraints between statements/instructions.
Effort estimation - Effort estimation in software engineering is typically concerned with the financial spend on the effort to develop and test the software, this can also include requirements review, maintenance, training, managing and buying extra equipment, servers and software. Many methods have been developed for estimating software costs for a given project.
Software metric - A software metric is a standard of measure of a degree to which a software system or process possesses some property. Even if a metric is not a measurement (metrics are functions, while measurements are the numbers obtained by the application of metrics), often the two terms are used as synonyms.
Dependency Analysis: Dependency Analysis is a technique in project management where the relationships or dependencies between activities and the influence of time on execution of activities are defined. When the outcome of an activity or the occurrence of an event influences how another activity is executed, a dependency happens.
Effort Estimation: In software development, effort estimation is the process of predicting the most realistic amount of effort (expressed in terms of person-hours or money) required to develop or maintain software based on incomplete, uncertain and noisy input.
Software Metric: A software metric is a standard of measure of a degree to which a software system or process possesses some property. Even if a metric is not a measurement, often the two terms are used as synonyms.