Chapter 25: Secure Software Flashcards
machine language
consists of 1’s and 0’s; only format a computer’s processor can understand directly; considered a first-generation language
Assembly language
second-generation programming language, uses symbols (mnemonics) to represent complicated binary codes
third-generation programming languages
high-level languages (C/C++, Java, Python) have refined programming structures; programming language deals with the low-level system architecture and programmers focus on their programming objectives
fourth-generation languages
very high-level languages; use natural language processing to allow inexpert programmers to develop code in less time than it would take an experienced software engineer to do so with a third-generation language
fifth-generation languages
natural languages; define the constraints for achieving a specified result and allow development environment to solve problems by itself instead of a programmer having to develop code to deal with individual and specific problems
assemblers
tools which convert assembly language source code into machine code
compilers
transform instructions from a source language (high-level) to a target language (machine), sometimes using an external assembler
garbage collector
identifies blocks of memory which were once allocated but are no longer in use and deallocates the blocks and marks them as free
RTE
runtime environment
runtime environment
a mini operating system for the program and provides all the resources portable code needs
OOP
object-oriented programming
object-oriented programming
functions and data are encapsulated together in classes, which may then be instantiated as objects
objects in OOP communicate by …
using messages which conform to the receiving object’s application programming interface (API) definition
cohesion
how many different types of tasks a module can carry out; goal is to perform only one task (high cohesion), which makes modules easier to maintain
coupling
measure of how much a module depends on others; more dependencies are more complex and difficult to maintain, so low or loose coupling is ideal
API
the manner in which a software component interacts with other software components