Softwareany program that tells the computer system what to do CEN153 Introduction To Computer Engineering, Öğr. Gör. Esra Dinçer
What is Software? • A collection of computer programs, procedures and documentation that perform some tasks on a computer system • Software includes websites, programs, video games etc. that are coded by programming languages like C, C++, etc. • Understanding software is a lot like being in a big house. Once you know its layout, you are able to move about the house much more easy
Computer software • Software encompasses an extremely wide array of products and technologies developed using different techniques like programming languages, scripting languages etc. The types of software include web pages developed by technologies like HTML, PHP, Perl, JSP, ASP.NET, XML, and desktop applications like Microsoft Word, OpenOffice developed by technologies like C, C++, Java, C#, etc. Software also includes video games. • Software usually runs on an underlying operating system (which is a software also) like Microsoft Windows, Linux (running GNOME and KDE), Sun Solaris etc.
Computer software • Also a software usually runs on a software platform which can either be provided by the Operating System independent platforms like Java and .NET. • Software written for one platform is usually unable to run on other platforms so that for instance, Microsoft Windows software will not be able to run on Mac OS because of the differences relating to the platforms and their own standards. These applications can work using software porting, interpreters or re-writing the source code for that platform.
Relationship to computer hardware Computer hardware encompasses the physical interconnections and devices required to store and execute (or run) the software. Software is an ordered sequence of instructions for changing the state of the computer hardware in a particular sequence.
Relationship to computer hardware At the lowest level, software consists of a machine language specific to an individual processor. A machine language consists of groups of binary values signifying processor instructions which change the state of the computer from its preceding state. Software may also be written in an assembly language, essentially, a mnemonic representation of a machine language using a natural language alphabet. Software is usually written in high-level programming languages.
Application software • Application software allows end users to accomplish one or more specific (non-computer related) tasks. Typical applications include: • industrial automation, • business software, • educational software, • medical software, • databases, and • computer games. • Businesses are probably the biggest users of application software, but almost every field of human activity now uses some form of application software.
Application software • Application software is any tool that functions and is operated by means of a computer, with the purpose of supporting or improving the software user's work. The software that allows you to do things like create text documents, control stocks, produce music DVD's • In other words, is the subclass of computer software that employs the capabilities of a computer directly and thoroughly to a task that the user wishes to perform. • This should be contrasted with system software.
Application software • Typical examples of software applications are word processors, spreadsheets, and media players, database applications. • User-written software tailors systems to meet the user's specific needs. User-written software include spreadsheet templates, word processor macros, scientific simulations, graphics and animation scripts. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. • In some types of embedded systems, the application software and the operating system software may be indistinguishable to the user, as in the case of software used to control a VCR, DVD player or microwave oven.
System software • System software, more commonly known as Operating system, is any computer software that provides the infrastructure over which programs can operate, ie it manages and controls computer hardware so that application software can perform. Operating systems, such as Microsoft Windows, Mac OS X or Linux, are prominent examples of system software. • System software is software that basically makes the computer work. Examples beside operation systems are anti-virus software, communication software and printer drivers. Without the system software the computer doesn't work. • In general application software are programs that enable the end-user to perform specific, productive tasks, such as word processing or image manipulation. System software performs tasks like transferring data from memory to disk, or rendering text onto a display device.
System software • System Software can be classified as operating system,device drivers and utility softwares. • Operating system creates an interface between user and the system hardware. • System software helps run the computer hardware and computer system. It includes operating systems, device drivers, diagnostic tools, servers, windowing systems, utilities and more. The purpose of systems software is to insulate the applications programmer as much as possible from the details of the particular computer complex being used, especially memory and other hardware features, and such accessory devices as communications, printers, readers, displays, keyboards, etc. • Specific kinds of system software include: • loading programs, • Operating systems, • device drivers, • linkers, • utility software.
Programming software • Programming software usually provides tools to assist a programmer in writing computer programs, and software using different programming languages in a more convenient way. The tools include: • text editors, • compilers, • interpreters, • linkers, • debuggers, and so on. • An Integrated development environment (IDE) merges those tools into a software bundle, and a programmer may not need to type multiple commands for compiling, interpreting, debugging, tracing, and etc., because the IDE usually has an advanced graphical user interface, or GUI.
License and patent • The software's license gives the user the right to use the software in the licensed environment. Some software comes with the license when purchased off the shelf, or an OEM license when bundled with hardware. • Software can be patented; software patents is that a specific algorithm or technique that the software has cannot be duplicated by others and is considered an intellectual property.
Freeware and Shareware • Freeware is computer software that is available for use at no cost. Proprietary freeware allows authors to contribute something for the benefit of the community, while at the same time allowing them to retain control of the source code, future direction of development. • Shareware refers to copyrighted commercial software that is distributed without payment on a trial basis and is limited by any combination of functionality, availability, or convenience. Shareware is often offered as a download from an Internet website or as a compact disc included with a periodical such as a newspaper or magazine. The aim of shareware is to give buyers the opportunity to use the program and judge its usefulness before purchasing a licence for the full version of the software.
Open source software • Open source software (OSS) began as a marketing campaign for free software.OSS can be defined as computer software for which the human-readable source code is made available under a copyright license that meets the Open Source Definition. This permits users to use, change, and improve the software, and to redistribute it in modified or unmodified form. It is very often developed in a public, collaborative manner.
Custom software • Custom software is developed either for a specific organization or function. It is generally not targeted to the mass market, but usually created for companies, business entities, and organizations. Custom software is also when companies or governments pay for customized software for budget or project managing.
Steps of Programmming 7. Documentation, which might include a program description, a structure chart, a flowchart, a program listing, and an interactive session (I/O when the program is run), is critical if the program is ever modified. 6. The program is tested and debugged. Debugging rids the program of bugs, eliminating syntax errors (violations of one of the rules for writing instructions) and logic errors. 5. Steps 1 through 4 are translated into machine-readable instructions called programs. 4. The detailed design results in a graphic representation of the program logic that includes all processing activities and their relationships, calculations, data manipulations, logic operations, and all input/output. 3. The general design of the program is oriented primarily to the major processing activities and the relationships between these activities. By first completing a general program design, you make it easier to investigate alternative design approaches. 2. Break the problem into its basic components for analysis. A good starting place for most programs is to analyze the output, input, processing, and file-interaction components. 1. Identify exactly what needs to be done. It often helps to describe the problem in words.
Steps of a Program Source Code Compiler Object code Link/Load Executable code
Source Code • Source code is any collection of statements or declarations written in some human-readable computer programming language. Source code allows the programmer to communicate with the computer using a reserved number of instructions.
Compiler • A compiler is a computer program (or set of programs) that translates text written in a computer language (the source language) into another computer language (the target language). The original sequence is usually called the source code and the output called object code. Commonly the output has a form suitable for processing by other programs (e.g., a linker), but it may be a human-readable text file. • The most common reason for wanting to translate source code is to create an executable program. The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a lower level language (e.g., assembly language or machine language).
Object code • Object codeis the representation of code that a compiler generates by processing a source code file. Object files contain compact code, often called "binaries". • A linker is typically used to generate an executable or library by linking object files together. The only essential element in an object file is machine code (code directly executed by a computer's CPU). • Object files often also contain data for use by the code at runtime, relocation information, stack unwinding information, comments, program symbols (names of variables and functions) for linking and/or debugging purposes, and other debugging information.
Online and Offline • Online : human interaction and conversation with the program, being processed on the computer system. • Offline : no human interaction and conversation with the program during the processing time on the computer system. Batch processing is execution of a series of programs on a computer without human interaction.Batch jobs are set up so they can be run to completion without human interaction, so all input data is preselected through scripts or command-line parameters. This is in contrast to "online" or interactive programs which prompt the user for such input.
Computer programming • Computer programming (programming or coding) is the process of writing, testing,debugging (troubleshooting), and maintaining the source code of computer programs. • This source code is written in a programming language. The code may be a modification of an existing source or something completely new. • The purpose of programming is to create a program that exhibits a certain desired behavior. The process of writing source code requires expertise in many different subjects, including knowledge of the application domain, specialized algorithms and formal logic.
High-level programming language The high-level programming languages that are easier and more efficient for humans to use (closer to natural language) than machine language. High-level languages are compiled or interpreted into machine language object code. • it may use natural language elements, be easier to use, or more portable across platforms. Such languages hide the details of CPU operations such as memory access models and management of scope. • A high level language isolates the execution semantics of a computer architecture from the specification of the program, making the process of developing a program simpler and more understandable with respect to a low-level language. The amount of abstraction provided defines how 'high level' a programming language is.
low-level programming language • The word "low" refers to the small or nonexistent amount of abstraction between the language and machine language. The low-level languages are closed to the hardware and provided little or no abstraction from a computer's microprocessor • A low-level language does not need a compiler or interpreter to run; the processor for which the language was written is able to run the code without using either of these.
Programming Language The details look different in different languages, but a few basic instructions appear in just about every language: • input: Get data from the keyboard, a file, or some other device. • output: Display data on the screen or send data to a file or other device. • math: Perform basic mathematical operations like addition and multiplication. • conditional execution: Check for certain conditions and execute the appropriate sequence of statements. repetition: Perform some action repeatedly, usually with some variation.