Unit 1-3a.docx
Document Details
Uploaded by StimulatingSpinel
Full Transcript
OBJECTIVE 3a. Identify basic facts and terms associated with fundamentals of information technology systems. - Programming Languages - Service Oriented Architecture (SOA) - Databases - Interfaces - Cross Domain Data Solutions (CDS) - Memory Structure - Interrupt Requests (IRQ)...
OBJECTIVE 3a. Identify basic facts and terms associated with fundamentals of information technology systems. - Programming Languages - Service Oriented Architecture (SOA) - Databases - Interfaces - Cross Domain Data Solutions (CDS) - Memory Structure - Interrupt Requests (IRQ) - Drivers - Complementary Metal-Oxide-Semiconductor (CMOS) - Basic Input/Output System (BIOS) / Unified Extensible Firmware Interface (UEFI) - **[PROGRAMMING LANGUAGES]** [] Before we can discuss the software languages used to program with, we must first define what a program is. A program is a set of instructions designed and written to perform a specific task within a computer system. The instructions, specifications and performance requirements are considered the source code or micro-code of the programs. Programming languages, on the other hand, serve as tools for describing, measuring, and expressing processes or algorithms, encompassing both digital and non-digital data that computing machines handle. While programming languages serve various purposes, their fundamental objective lies in governing and regulating the behavior and performance of computing systems, as well as the outcomes they generate. **[PROGRAMMING LANGUAGE COMPONENTS]** There are two basic components of programming languages: syntax and semantics (Ref. Figure 1-4). Syntax and semantics are fundamental concepts in linguistics and programming languages. They represent two different aspects of communication and understanding languages, whether they are human languages or computer languages. **[Syntax]** The syntax is the way symbols, words and characters are formed within each programming language. It's about the arrangement of words and phrases to create well-formed sentences in a particular language. In other words, syntax is concerned with what is grammatically correct in a sentence. **[Semantics]** Semantics deal with the meaning each set of characters convey when arranged in a particular way. While two pieces of code may have the same syntax, their semantics could be different if they perform different tasks. **[PROGRAMMING LANGUAGE CATEGORIES]** [] There are two basic categories of programming languages: Low-level and High-level. **[Low-level Languages]** Are associated with the computer's hardware components and constraints. This code is easily and readily executed by the computer (binary code consisting of 0s and 1s) without any assistance from any other program. Machine code or assemble languages are consider low- level languages. **[High-level languages]** [] Are designed to be more user-friendly, easier to write, and more abstract from machine language. They are closer to human languages and further from machine language. These languages are designed to simplify complex tasks, making the process of developing a program much easier and more understandable than when using a low-level language. Examples of high-level languages are C++, Java or Visual Basic. There are two primary types of high-level languages: Interpreted and Compiled. **[Interpreted Programming Languages]** [] With an interpreted programming language, the code is saved in the same format entered and does not need to be compiled before execution. An interpreter takes the script or code and modifies it so it can be understood and executed by the computer's CPU. (Ex: JavaScript, etc.) **[Compiled Programming Languages]** [] With a compiled programming language, the compiler will translate the program directly into machine code specific to the target computer's CPU. The computer will then run the machine code on its own. This allows compiled programs to generally run faster than interpreted ones. (Examples: C, C++, Visual Basic, etc.) **[COMMON PROGRAMMING LANGUAGES]** [] There is an extensive list of computer programming languages. Each offering different features to serve as a means of communication between the user and the computer system. The following is a list of some of the more common languages: **[C++]** [] This language is built off of the C language. The syntax of C++ is nearly identical to C but it has object-oriented features allowing the programmer to create objects within the code. This makes programming easier and more efficient. This language is a combination of high-level and low- level languages supporting procedural, generic, object-oriented programming and data abstraction. [] [] [] **[JAVA]** [] Java runs in a secure virtual environment through the Java Security Manager (JSM), which provides a sandbox in which Java applications can run. Java also provides more stringent memory protections than C or C++, relying on garbage collection and references memory management in place of the more manual approach used by C and C++. Java allows the user to have almost full control of the virtual environment in which the Java bytecode is run. Java code intended for use on the client runs in a different environment, under a different trust model, than code on the server. There are common requirements, whether the Java code runs on the client or server. Input from untrusted sources should always be checked and filtered. Java code that inherits methods from parents, interfaces, or parents' interfaces also inherits vulnerabilities in those methods. For this reason, it is critical that the developer use inheritance with caution. **[Windows PowerShell]** [] This is Microsoft's command line shell and scripting language. It works in collaboration with Microsoft.NET Framework by means of executables and stand- alone applications. It provides a controlled programming model or environment for building application software. It is designed to automate system tasks and create system management tools for implementing processes. PowerShell also contains script aliases allowing older MSDOS commands to work in the newer Windows environment. Windows PowerShell is a non-GUI program allowing an operator to communicate directly with the operating system. The PowerShell scripting language uses a specialized type of command called a cmdlet. Cmdlets not only use objects for output but also use objects for input via the pipe "\|". Variables are used to store pieces of information so they can be used later.This is just a sample of the massive amount of computer programming languages utilized in technology today. Each programming language is built with different logical structures created for different platforms and for a specific purpose. Every program used by an operator on a computer system is written in source code by computer programmers. The code may be converted into a machine readable 'executable file' by a compiler or interpreter. **[SERVICE ORIENTED ARCHITECTURE (SOA)]** [] Before learning what a Service Oriented Architecture is, we first need to define a Service. Service A service is a function that is well-defined, self-contained and does not depend on the state of other services. It is the endpoint of a connection. **[Service Oriented Architecture]** Services Oriented Architecture is defined as a design blueprint or framework for applications within an enterprise. It allows a collection of services or business processes to communicate with each other in one central location. These services typically implement functionalities most humans would recognize as a service such as filling out an online application for an account, viewing an online bank statement, booking an on-line reservation, or booking an airline ticket order. Instead of services embedding calls to each other in their source code, protocols are defined describing how one or more services can talk to each other. This architecture then relies on a business process to link and sequence services (known as orchestration) to meet a new or existing business system requirement. **Benefits of Service Oriented Architecture** [] **[Reusability]** Services can be re-utilized to create new applications. **[Interoperability]** Services interact together through protocols **[Scalability and Flexibility]** When new applications are needed, resources are available to meet the new demand. **[Cost Efficiency]** As the services are readily available, there is no cost in generating new code over and over again. Instead, only orchestration must take place to allow the services to interact in new ways. **[DATABASE]** A database refers to a systematic and organized collection of data, generally stored electronically on a computer system. It\'s essentially the backbone of most applications, storing all the necessary data in a structured manner. The operations on this data, including access, management, modification, and updates, are typically handled by a database management system (DBMS). Typical types of databases include: **[Flat File Database]** Flat-file databases are databases of just one table. It can be created in database software or in a spreadsheet and is often saved as a CSV file. A flat file is useful because it is highly compatible between databases and other applications. Databases created in spreadsheet applications (like Microsoft Excel) are flat file databases. An old-fashioned example of a flat file or two- dimensional database is the old printed telephone directory. Flat-file databases could be used for several things, such as: \- \- Storing usernames and passwords for a system \- Keeping track of contact details of individuals \- Cataloging product details for a store \- Managing a personal collection of games or music \- Recording entities and attributes for a particular application A single flat-file table is useful for recording a limited amount of data. But a large flat-file database can be inefficient as it takes up more space and memory than a relational database. It also requires new data to be added every time you enter a new record. Finally, data redundancy -- where data is partially duplicated across records -- can occur in flat- file tables **[Relational Database]** Relational databases allow data to be separated and connected across several tables. Tables are connected through primary and foreign keys to increase efficiency. A large set of data about many different entities, it is more efficient to create separate tables and connect them with relationships. Relational databases allow data to be stored in a clear, organized manner across multiple tables. Links, known as relationships, are formed to allow the data to be shared across the tables. For instance, a retail company might have different tables for the following information: - Customer details - Customer orders - Product details stock levels - Stock locations - Staff details Product details could be complicated, e.g. if the company sold books there may be several categories within books, including author name, title, genre, physical size and many other details. Storing all this information in one flat-file table would create a very large table. Normalization is the process of analyzing how to make databases more efficient by using separate tables to reduce redundant data. When a database is normalized, data is broken down into smaller tables and relationships are used to link them. The main characteristics of a relational database are: - It is built from a set of unique tables (also called relations) - A table contains data about just one entity - Tables must have a primary key - Tables are linked by primary and foreign keys When working with relational databases, users need to try to keep information about different entities in separate tables. Each entity has a primary key to provide a unique reference to an entity, which means that an entity can be referenced in another table without having to call up all the details about that entity. Entities can relate to each other in three different ways: one to one, one to many and many to many. Databases store data, but you also need to be able to search and filter the data to find and present results. Some of the tools you use when working with databases include: \- Forms \- Queries \- Reports \- Modules **Forms** are used for data entry; forms help users input data into the database. For instance, when selling a product, users can enter details like product name, brand, and size. **Queries** enable users to search and filter data in a database. For example, when shopping online, users can select options, filter results, and sort items by price or auction time remaining. **Reports** present data from the database in a user-friendly format. For instance, an address book database could generate a report displaying only names and phone numbers. **Modules**: Database software and languages often include pre-written programs called modules. Users can customize these modules or create new ones to meet their specific needs. **[NoSQL Databases]** [] NoSQL, which stands for \"Not Only SQL\", is a type of database design that provides flexible schemas for the storage and retrieval of data. This contrasts with the traditional SQL databases which require a defined schema before storing data. NoSQL databases are particularly useful for dealing with large volumes of structured, semi- structured, or unstructured data. They are designed to be scalable and reliable, especially for real-time applications and for big data performance issues. There are four main types of NoSQL databases: **Document Databases**: These store data in a document-like format, often JSON (JavaScript Object Notation). They are designed to store, retrieve, and manage document-oriented information. MongoDB is a popular example of a document database. **Key-Value Stores**: These are the simplest type of NoSQL databases. Every single item in the database is stored as an attribute name, or key, together with its value. Examples of key-value stores are Redis and DynamoDB. **Wide-Column Stores**: Unlike a relational database, where columns are fixed for all records, wide column stores allow each record to have its own set of columns. These databases are excellent for querying large data sets, and they scale well. Examples include Cassandra and Googles Big Table. **Graph Databases**: These are designed for data whose relations are best represented as a graph and have elements that are interconnected, with an undetermined number of relations between them. Examples include Neo-4j and Amazon Neptune. NoSQL databases are widely used in large-scale applications due to their scalability, flexibility, and high performance. However, their usage is dependent on the specific needs of an application. It\'s worth noting that NoSQL does not imply the replacement of SQL. In fact, many organizations use both NoSQL and SQL databases to meet various data management needs. **[SCHEMA]** A database schema is a formal declaration of how data is organized in a database system. It serves as a blueprint that defines the architectural layout of database objects, such as tables, views, and indexes, and the relationships between them. It is essentially the structure that holds the descriptions of all database objects authorized by the database administrator. There are two fundamental components of any database schema: **Physical database schema** The physical database schema describes how data will be stored physically on a storage system and the form of storage used (files, key-value pairs, indices, etc.). **Logical database schema** The logical database schema describes the logical constraints applied to the data and defines fields, tables, relations, views, integrity constraints, etc. These requirements provide useful information that programmers can apply to the physical design of the database. The rules defined in this logical model help determine how the data in different tables relate to each other. The definition of physical tables in the schema comes from the logical data model. Entities become tables, the entity's attributes become table fields, etc. **[Types of Database Schemas]** [] **Flat model** A "flat model" database schema organizes data in a single, two-dimensional array---think of a Microsoft Excel spreadsheet or a CSV file. This schema is best for simple tables and databases without complex relations between different entities. **Hierarchical model** Database schemas in a hierarchical model have a "tree-like" structure, with child nodes branching out from a root data node. This schema is ideal for storing nested data---for example, family trees or biological taxonomies. **Network model** The network model, like the hierarchical model, treats data as nodes connected to each other; however, it allows for more complex connections, such as many- to-many relationships and cycles. This schema can model the movement of goods and materials between locations, or the workflow required to accomplish a particular task. **Relational model** As discussed above, this model organizes data in a series of tables, rows, and columns, with relationships between different entities. We'll mainly be working with the relational model in the remainder of this article. **Star schema** The star schema is an evolution of the relational model that organizes data into "facts" and "dimensions." Fact data is numerical (e.g. the number of sales of a product), while dimensional data is descriptive (e.g. the product's price, color, weight, etc.). **Snowflake schema** The snowflake schema is a further abstraction on top of the star schema. Fact tables point to dimensional tables, which can also have their own dimensional tables, expanding the descriptiveness possible within the database. (As you might have guessed, the "snowflake" schema is named after the intricate patterns of a snowflake, in which smaller structures radiate off of the central arms.) Database schema design refers to the practices and strategies for constructing a database schema. You can think of database schema design as a "blueprint" for how to store massive amounts of information in a database. The schema is an abstract structure or outline that represents the logical view of the database. By defining categories of data and relationships between those categories, database schema design makes data much easier to retrieve, consume, manipulate, and interpret. Database schema design organizes the data into separate entities, determines how to create relationships between organized entities, and how to apply the constraints on the data. Designers create database schemas to give other database users, such as programmers and analysts, a logical understanding of the data. **Structured Query Language (SQL) Query and Reports** Structured Query Language, commonly known as SQL, is a programming language is specifically designed for managing and manipulating data held in relational databases. Think of a relational database as a collection of tables, each with rows and columns, similar to an Excel spreadsheet. Each row represents a unique record, and each column represents a specific field of information. SQL is based on principles of set theory and relational algebra, which is a fancy way of saying it uses logical rules to handle data. In SQL, data elements, known as attributes, are arranged into columns. The rows, known as tuples, are related sets of these attributes. Together, rows with the same structure from tables. SQL\'s strength lies in its standardization. The American National Standards Institute (ANSI) recognizes SQL as a standard language for accessing and manipulating relational databases. This means if you learn SQL for one database system, you can apply that knowledge to other database systems, making it a versatile tool for handling data. Queries, the questions we ask databases to retrieve specific information, are constructed using SQL\'s command language. With SQL, you tell the database what information you want, and the database figures out the best way to get it. The commands include instructions to select, insert, update, and locate data. Because of its widespread use, most database-related applications or tools translate queries into SQL, even if their own interface looks different. In a relational database, data is divided into tables. SQL can quickly pull specific data items from these different tables and present them as a unified collection of data, known as a result. This ability to group items based on specific relationships, such as the relationship between an employee\'s name and their sales performance, offers great flexibility in managing and understanding the information in the database.