Unit - 1
Introduction to System Programming
Q1) Introduce components of system software?
A1) System programming involves designing and writing computer programs that allow the computer hardware to interface with the programmer and the user, leading to the effective execution of application software on the computer system. Typical system programs include the operating system and firmware, programming tools such as compilers, assemblers, I/O routines, interpreters, scheduler, loaders and linkers as well as the runtime libraries of the computer programming languages.
System programming is a collection of programs that support a computer's activities. This program allows the user to concentrate on an application or a problem that needs to be solved. System programs (such as compilers, loaders, macro processors, and operating systems) were created to better adapt computers to their users' needs.
Component of 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.
Components are:
● Text editors
● Loaders
● Assemblers
● Macro processors
● Compilers
● Debuggers
● Machine Structure
● Machine language and Assembly Language.
Q2) Write short notes on assembler and loader?
A2) Assembler
Assembler is a computer program which is used to translate a program written in Assembly Language into machine language. The translated program is called an object program. Assembler checks each instruction for its correctness and generates diagnostic messages, if there are mistakes in the program.
Various steps of assembling are:
- Input source program in Assembly Language through an input device.
- Use Assembler to produce object programs in machine language. 3. Execute the program.
Associate in the Nursing of the meeting application which may be a remotely the worm that interprets pc of the code packages inscribed therein of the programming language into the computing device language, code and instructions that might also be lifeless by using a laptop
Loaders:
A loader is the part of an operating system that is responsible for loading programs and libraries. It is one of the essential stages in the process of starting a program, as it places programs into memory and prepares them for execution. Loading a program involves reading the contents of the executable file containing the program instructions into memory, and then carrying out other required preparatory tasks to prepare the executable for running. Once loading is complete, the operating system starts the program by passing control to the loaded program code.
Loader is associated with the nursing software program utility that will copies the programs on the fine-tuned disk to principal recollection (RAM).
In integration, the loader supplementally supersedes bodily addresses with logical addresses.
Q3) Define macro processor and compiler?
A3) Macro Processor:
A macro processor is a program that copies a stream of text from one place to another, making a systematic set of replacements as it does so. Macro processors are often embedded in other programs, such as assemblers and compilers. Sometimes they are standalone programs that can be used to process any kind of text.
A macro is that of a rule or sample that designates that alternatively an actual input sequence ought to be mapped to a supersession of the output sequence in step with that of an outlined procedure.
Compiler:
A compiler is a program that translates a program written in HLL to executable machine language. The process of transferring HLL source program in to object code is a lengthy and complex process as compared to assembling. Compilers have diagnostic capabilities and prompt the programmer with appropriate error message while compiling a HLL program. The corrections are to be incorporated in the program, whenever needed, and the program has to be recompiled. The process is repeated until the program is mistake free and translated to an object code. Thus the job of a compiler includes the following:
- To translate HLL source programs to machine codes.
- To trace variables in the program
- To include linkage for subroutines.
- To allocate memory for storage of program and variables.
- To generate error messages, if there are errors in the program.
Q4) Explain low level language?
A4) Low-level language is a computer language that is machine-dependent (0s and 1s). Without the use of a compiler or interpreter, the processor runs low-level programmes directly, allowing applications written in low-level languages to run very quickly.
Low-level language is further broken down into two categories:
● Machine Language
Low-level programming languages, such as machine language, are a sort of low-level programming language. It's also known as object code or machine code. Because machine language is generally displayed in binary or hexadecimal (base 16) form, it is easier to interpret. Because computers understand machine language programmes directly, there is no need for a translator to convert the programmes.
Machine language has the advantage of allowing the programmer to execute programmes faster than high-level programming languages.
● Assembly Language
Assembly language (ASM) is another low-level programming language created for specific processors. It is a symbolic and human-understandable representation of the collection of instructions. It converts assembly language to machine language using an assembler.
Assembly language has the advantage of requiring less memory and less time to run a programme.
Q5) Describe high level language?
A5) HLL is a high-level programming language that is used to create user-friendly software and websites. This programming language necessitates the use of a compiler or interpreter to convert the code to machine language (execute the program).
A high-level language's main advantage is that it is simple to read, write, and maintain.
Python, Java, JavaScript, PHP, C#, C++, Objective C, Cobol, Perl, Pascal, LISP, FORTRAN, and Swift are examples of high-level programming languages.
A high-level language is further broken down into three sections:
● Procedural Oriented programming language
The procedure call idea is used in the Procedural Oriented Programming (POP) language, which is derived from structured programming. It breaks down a programme into discrete steps known as routines or functions.
A software programmer uses a procedural oriented programming language to develop a programme that can be completed using a programming editor such as IDE, Adobe Dreamweaver, or Microsoft Visual Studio.
The POP language has the advantage of allowing programmers to easily track programme flow and allowing code to be reused in different areas of the programme.
Example: C, FORTRAN, Basic, Pascal, etc.
● Object-Oriented Programming language
Object-Oriented Programming (OOP) is a programming language that is built on objects. Programs are broken down into little chunks called objects in this programming language. It is used to implement real-world entities in the programme, such as inheritance, polymorphism, abstraction, and so on, in order to make it reusable, efficient, and simple to use.
The fundamental benefit of object-oriented programming is that it is quicker and easier to implement, maintain, alter, and debug.
Example: C++, Java, Python, C#, etc.
● Natural language
Human languages such as English, Russian, German, and Japanese contain natural language. Machines use it to comprehend, manipulate, and interpret human language. Developers utilize it to do tasks like translation, automatic summarization, Named Entity Recognition (NER), relationship extraction, and topic segmentation, among others.
Natural language's key benefit is that it allows users to ask questions about any subject and receive a quick response in seconds.
Q6) Write short notes on middle level language?
A6) A middle-level programming language is in between a low-level and a high-level programming language. It's also known as a pseudo-language and an intermediate programming language.
The advantages of a middle-level programming language are that it supports high-level programming features, is a user-friendly language, and is closely related to machine and human language.
Languages such as C and C++ are one example.
Q7) What do you mean by instruction format?
A7) The S/360's instructions are two, four, or six bytes long, with the opcode stored in byte 0. The following are the different types of instructions:
● R.R. (two bytes). In most circumstances, byte 1 represents two 4-bit register numbers; however, in rare cases, such as SVC, byte 1 specifies a single 8-bit immediate field.
● RS RS RS RS (four bytes). Bytes 1 and 2 define two register numbers, whereas bytes 3 and 4 define a base and displacement.
● RX (reverse) (four bytes). Bytes 0-3 specify a register number or a modifier; bits 4-7 specify the number of the general register to be used as an index; bytes 2-3 specify a base and displacement.
● SI (four bytes). Bytes 1 and 2 define an immediate field, while bytes 3 and 4 define a base and displacement.
● SS (six bytes). Bytes 1-2 and 4-5 each indicate a base and displacement, while byte 1 specifies two 4-bit length fields or one 8-bit length field. The length fields are encoded as length-1.
Because instructions must be on a two-byte boundary in memory, the instruction address's low-order bit is always 0.
Q8) What do you mean by data format?
A8) Characters, integers, decimal integers, and hexadecimal floating point numbers are all defined by the S/360 architecture. Character and integer instructions are required, however the Decimal and Floating-point arithmetic capabilities include decimal and floating-point instructions.
● 8-bit bytes are used to hold characters.
● Two's complement binary halfword or full word values are used to store integers.
● Packed decimal numbers are stored as an odd number of decimal digits followed by a 4-bit sign in 1 to 16 8-bit bytes. Hexadecimal A, C, E, and F have positive sign values, while B and D have negative sign values. The PACK and UNPK instructions do not test for correctness, hence hexadecimal A-F digit values and sign values of 0-9 are invalid.
● 1 to 16 8-bit bytes containing a zone in bits 0-3 and a digit in bits 4-7 are used to store zoned decimal values. The rightmost byte's zone is read as a sign.
● On older devices, floating point numbers are only saved as full word or doubleword values. Extended precision floating point integers are likewise stored as quadwords on the 360/85[9] and 360/195. Bit 0 is a sign in all three formats, while bits 0-7 are characteristics (exponent, biassed by 64). A hexadecimal fraction is 8-31 (8-63) bits. The low order doubleword has its own sign and characteristic, which are disregarded on input and generated on output for increased precision.
Q9) Explain system software development?
A9) Software development is a set of procedures for programmers to follow in order to construct computer applications. The phases of the software development life cycle are made up of this procedure. In the IT business, understanding the software development approach opens up a world of possibilities.
The process through which programmers create computer programmes is known as software development. The Software Development Life Cycle (SDLC) is a method for developing products that meet technical specifications and user needs. It consists of numerous phases.
The SDLC establishes an international standard that software developers can utilize to create and improve their systems. It provides a well-defined structure for development teams to follow in the creation, maintenance, and design of high-quality software. The goal of the IT software development process is to create high-quality solutions on schedule and within budget.
Key steps in the software development process
In the software development life cycle, there are six primary steps:
Needs identification
Needs identification is a stage of the process that involves market research and brainstorming. A company must conduct thorough market research before developing software to determine the product's viability. Developers must determine what functions and services the programme should offer in order for its intended users to get the most out of it and find it necessary and valuable. There are several ways to get this information, including feedback from potential and existing customers and surveys.
The product's strengths, flaws, and prospects must also be discussed by the IT teams and other divisions within the firm. Software development methods begin only when the product meets all of the criteria for success.
Requirement analysis
The second phase of the software development life cycle is requirement analysis. Stakeholders agree on the proposed product's technical and user criteria and specifications in order to fulfill its objectives. To create a quality product, this phase includes a clear definition of each component, the scope, development activities, and testing conditions.
Developers, users, testers, project managers, and quality assurance are all involved in the requirement analysis step. This is also the stage at which programmers decide whether to use a waterfall or V model for software development. The output of this step is documented in a Software Requirement Specification document, which teams can refer to at any time during project implementation.
Design
The third stage of the software development process is design. Architects and developers write advanced technical specifications in this section in order to create software that meets the criteria. Risk levels, team composition, suitable technology, time, budget, project limits, approach, and architectural design will all be discussed by stakeholders.
The product's architectural design, components, communication, front-end representation, and user flows are all specified in the Design Specification Document (DSD). This step serves as a template for developers and testers, lowering the likelihood of defects and delays in the final product.
Development and implementation
The formulation and implementation of design parameters is the next step. Developers write code based on the product specs and needs that were agreed upon earlier in the process. Front-end developers design interfaces and back-ends in accordance with company policies and rules, while database administrators enter important data into the database. The programmers also put each other's code to the test and review.
Developers deploy the product to an environment in the implementation stage once the coding is finished. This enables them to test a pilot version of the application to ensure that it meets the performance criteria.
Testing
Before releasing the software to users, the testing phase inspects it for defects and ensures its functionality. Expert testers check the product's functions at this step to ensure it meets the requirements outlined in the requirements analysis document.
Exploratory testing is used by testers to assess the performance of specific software components if they have prior knowledge with the software or if they have a test script. They send out alerts to developers when there are bugs in the code. If the faults are confirmed, the developers fix the programme, and the testers continue the procedure until the software is bug-free and behaves as expected.
Deployment and maintenance
The developers can release the programme to clients after it is defect-free. After the production version of a software is released, the IT software development company forms a maintenance team to handle any difficulties that customers may have while using the product. If the problem is minor, maintenance can be done as a hotfix, but major software problems necessitate an update.
Q10) What are the recent trends in software development?
A10) Using software development to differentiate brands and obtain a competitive advantage necessitates knowledge of the methodologies and technologies that can speed up the deployment, quality, and efficacy of software.
Low code:
"Products and/or cloud services for application development that use visual, declarative methodologies instead of programming and are available to clients at low- or no-cost in terms of money and training," according to Forrester. In a nutshell, it's a development method that eliminates the necessity for coding and allows non-coders or citizen developers to create or assist in the creation of apps easily and at lower cost.
Blockchain:
Blockchain is a secure, digitally linked ledger that reduces the cost and vulnerability that parties like as banks, regulatory organizations, and other intermediaries bring to the table. It helps organizations transform by releasing money, speeding up operations, cutting transaction costs, and more. For software developers, blockchain presents a huge potential. To transform how organizations run, developers are using distributed ledgers and open source Hyperledger (link lives outside of ibm.com) technology.
Cloud-native development:
Cloud-native development is a method of creating apps that take advantage of cloud settings. A cloud-native programme is made up of microservices, which are small, reusable components that may be used in any cloud environment. These microservices are commonly bundled in containers and serve as building blocks. Cloud-native apps can take advantage of cloud environments to boost application performance, flexibility, and extensibility thanks to this architecture.
Cloud-based development:
Software development companies, like IT companies, are looking to the cloud to better resource management and save expenses. In this approach, the cloud can be used as an integrated development environment (IDE) or development Platform as a Service that is quick, versatile, and cost-effective (PaaS). Coding, design, integration, testing, and other development operations can all be done in a cloud-based development environment. They can also offer access to APIs, microservices, DevOps and other development tools, services and expertise.
Artificial intelligence:
Artificial intelligence (AI) allows software to mimic human decision-making and learning. Developers and businesses can use neural networks, machine learning, natural language processing, and cognitive capabilities to create products and services that disrupt markets and put them ahead of the competition. IBM Watson provides application programming interfaces (APIs) that allow developers to connect to and utilize artificial intelligence capabilities as part of their applications. You can also utilize IBM Watson to check for ambiguity, unclear actors, compound or negative requirements, missing units or tolerances, incomplete requirements, and unspecific numbers in your product requirements.
Analytics:
By 2020, there will be almost 700,000 job openings for data scientists, data developers, and data engineers. The demand demonstrates how important it is for businesses to obtain insight and value from the data deluge. As a result, software makers are including advanced analytics features into their products. Cloud-based services and APIs make it easier to manage data exploration, automate predictive analytics, and generate dashboards that provide fresh insights and help you make better decisions.
Mobile
Creating mobile apps with deep linkages to data that improve and elevate user experiences is a vital competence for software developers. "Deeply integrating digital/mobile customer data has a strong effect on how customers interact with brands," according to Forrester.
Model Based Systems Engineering (MBSE):
Early prototype, simulation, and analysis of software designs are performed using software modeling languages in MBSE for early validation. MBSE's building designs assist you in analyzing and elaborating project requirements so that you can proceed quickly from design to implementation.
Q11) Describe the level of system software?
A11)
Fig 1: Software hierarchy
System software - system software controls for processing activities and make sure that resources and the power of the computer are used in the most efficient manner. The major purpose of system software is to control the execution of program and help in the development of software.
Function of system software
- Supports the development of other application software.
- Support the execution of other applications software.
- Monitors the effective use of of various hardware resources such as CPU, memory, Peripherals etc.
- Communicates with and controls the operation of peripheral devices, such as printer, disk, tape etc.
Types of system software
System software can be classified into three categories
- Operating system
- Language processor
- Utility software
● Operating system - an operating system is a series of programs which organizes and controls a computer. an operating system is a master control program that runs the computer and at as a scheduler. it controls the flow of signals from the CPU to various part of the computer.
Some tasks are as follows
- Operating system control the hardware such as keyboards, the printer and the screen.
- Operating system perform job scheduling and monitoring.
- Operating system control the processes that store data on disk and take data from disk.
- Controls the operation of application software.
- Organise the hard and floppy disk, so they can store data.
● Language processor or language translator - a translator is a program which convert statement written in one language into statement in another language.
Assembler - an assembler is a program that convert program written in assembly language in equivalent machine code so that computer can understand and execute it.
Compiler - Compiler translate whole high level language source code into to a machine code. This object code is loaded into memory after linking process and is executed.
Interpreter - interpreter translate one statement at a time of the High level language source program into a machine code. This object code is loaded into memory and it is executed later on next statement it is read and is translated and executed.
● Utility software - it is a set of program that support the operating system by providing the additional services that the operating system does not provide. There are many task which are performed by utility programs some are hard disc backup, disk Optimisation, File recovery, safe formatting and resource editing. utility software is also known as service program aur utility routine. It is specially designed to help in managing and tune the computer hardware, operating system or application software, and perform a single task or a small range of task. Some important utilities are disk defragmenter, irus scanner/ antivirus, disk compression, file management tools, file manager etc.
Application Software: Application software products are created to meet a specific need in a specific setting. Application software encompasses many of the software programs produced in the computer lab. Typical applications include word processing, medical software, database, educational software etc. Applications are almost always independent programs from the operating system.
Customized or general-purpose application software is usable.
● Customized Application software: The software which is developed to meet all the requirements of a specific user or organization. For example software prepared to automate the result process of any institute is an application software.
● General Application software: The software which is developed by keeping all the general requirements in mind for carrying out a specific task. These are software which are developed by a group of people. For eg. Word processing software, Electronic spreadsheet etc.
The most commonly used packages are -
Word processor - a word processor manager text based documents. It allows the user to enter, edit, view, to store and retrieve the next material. this text material may be letter, reports or book etc. word processor vary from simple to the complex. an advanced word processor must contain all the features needed for entering, editing and formatting the text as well as support macros to simplify complex or routine task. it also includes facility for spell checking, dictionary etc. Microsoft Word and what perfect are example of fully featured word processor.
Spreadsheet - the spreadsheet or worksheet consists of rows and columns of cells. the row is usually identified by number and columns by letters. each cell can hold a numeric value, text label for a formula that produce values contained in the other cells. chart can be created and database related operation could be performed. MS Excel is example of spreadsheet software.
Graphics software - a graphic software enables us to use a computer system for creating, editing, storing and viewing, printing, designing, drawing, pictures, graphs and anything else what can be drawn in the traditional manner.
Personal assistant software - a personal assistant software allow us to use personal computers for storing and retrieving our awesome information, planning and managing our schedules, contact financial and inventory of important items.
Q12) Define machine language?
A12) Machine language
A machine language is a set of numeric codes that describe the operations that a specific computer can perform directly. The codes are binary digits ("bits") that are commonly translated from and to hexadecimal (base 16) for human viewing and alteration. Some bits are used to indicate operations, such as addition, and others are used to represent operands, or the location of the next instruction in machine language instructions. Machine language is difficult to understand and write because its codes differ from computer to computer and do not match ordinary mathematical notation or human language.
Example of machine language for the text “Hello World”.
01001000 0110101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100.
Advantages
Machine language has the advantage of allowing the programmer to execute programmes faster than high-level programming languages.
Q13) What is assembly language?
A13) Assembly language
Assembly language is one level above machine language. It employs short mnemonic codes for instructions and allows the programmer to name data-holding memory sections. For an instruction that adds two numbers, one may write "add pay, total" instead of "0110101100101000."
Assembly is written in a way that allows it to be easily translated into machine language. Assembly language does not allow more sophisticated techniques of arranging complicated information, despite the fact that blocks of data can be referred to by name rather than by their machine addresses. Assembly language, like machine language, necessitates a thorough understanding of internal computer architecture. When such details are important, such as when programming a computer to communicate with peripheral devices, it is useful (printers, scanners, storage devices, and so forth).
Advantages
Assembly language has the advantage of requiring less memory and less time to run a programme.
Q14) Write the difference between high level and low level language?
A14) Difference between high level language
High-Level Language | Low-level language |
It can be considered as a programmer-friendly language. | It is considered as a machine-friendly language. |
It requires a compiler/interpreter to be translated into machine code. | It requires an assembler that would translate instructions. |
It can be ported from one location to another. | It is not portable. |
It is easy to understand. | It is difficult to understand. |
It is easy to debug. | It is difficult to debug. |
It is less memory efficient, i.e., it consumes more memory in comparison to low-level languages. | It consumes less memory. |
Q15) Write the difference between machine language and assembly language?
A15) Difference between machine language and assembly language
Machine Language | Assembly Language |
Machine language is only understand by the computers. | Assembly language is only understand by human beings not by the computers. |
In machine language data only represented with the help of binary format(0s and 1s), hexadecimal and octadecimal. | In assembly language data can be represented with the help of mnemonics such as Mov, Add, Sub, End etc. |
Machine language is very difficult to understand by the human beings. | Assembly language is easy to understand by the human being as compare to machine language. |
Modifications and error fixing cannot be done in machine language. | Modifications and error fixing can be done in assembly language. |
Machine language is very difficult to memorize so it is not possible to learn the machine language. | Easy to memorize the assembly language because some alphabets and mnemonics are used. |
Execution is fast in machine language because all data is already present in binary format. | Execution is slow as compared to machine language. |
There is no need of translator.The machine understandable form is the machine language. | Assembler is used as translator to convert mnemonics into machine understandable form. |
Machine language is hardware dependent. | Assembly language is the machine dependent and it is not portable. |