Software Business Computer Applications Software Applications 1. What is software? 2. System Software 3. Application Software 4. New Software Tools and Approaches Two Major Types of Software • System software – a set of generalized programs – manages the resources of the computer (e.g., CPU, input/output/storage devices) – mediates between application software and computer hardware • Application software – programs to perform specific functions specified by end users (e.g. Excel, Word, Access, PowerPoint, IE) – Application software must work through the system software to operate the computer Relationship between Software & Hardware Users Application software System Systemssoftware software Hardware Relationships between User, Software and Hardware Hardware System Software Application Software User 2. Types of System Software • Operating System (OS) • Language Translators (compiler or interpreter) • Utility Programs • Device drivers Three Major Functions of Operating System • allocates and assigns system resources – memory and input/output management • schedules the use of computer resources and computer jobs – prioritization of jobs • monitors computer system activities – tracking status of jobs Capabilities of Operating System • Multiprogramming – A method of executing multiple programs concurrently using the same computer – Two or more programs are active at the same time, but they do not use the same computer resources simultaneously •Ex: CPU executing one program while input/output needs of other programs are serviced – switching among programs occurs rapidly giving the impression that all programs are executing simultaneously Multiprogramming PROGRAM 1 UNUSED MEMORY MULTIPROGRAMMING ENVIRONMENT OPERATING SYSTEM OPERATING SYSTEM TRADITIONAL SINGLEPROGRAM SYSTEM PROGRAM 1 PROGRAM 2 PROGRAM 3 UNUSED MEMORY Capabilities of Operating System (cont’d) • Multitasking – multiprogramming on single-user machine (e.g. PC) – writing a letter with Word while using Excel • Multiprocessing – Two or more parallel processors in system – Program can be divided to be processed by multiple CPUs – Can process large programs more rapidly (e.g., supercomputing) Capabilities of Operating System (cont’d) • Virtual storage – primary memory appears to be larger than it really is to the user – technique for handling programs efficiently – dividing programs into small fixedportions (pages) or variable-length portions (segments) with only a small portion stored in primary memory at one time – CPU is utilized more fully – large size & number of programs can be executed Capabilities of Operating System (cont’d) • Time sharing – sharing of computer resources by many users simultaneously by spending a fixed amount of CPU time (e.g. time slice of 2 milliseconds) on each user before moving to the next user – as CPU operates in nanoseconds, much work can be accomplished within 2 milliseconds Time Sharing Types of Operating Systems • Mainframe OSs (OS/390, OS/360) – for room-sized computers • Server OSs (Windows/Mac OS/Linux Server) – For computers that serve multiple users at once over a network and allow the users to share hardware and software resources • Multiprocessor OSs (Windows Vista, Windows Server 2008) – connect multiple CPUs into a single system – often these are variations on the server operating systems, with special features for communication and connectivity. Types of Operating Systems (cont’d) • Personal Computer OSs (Windows 3.1, 95, 98, 2000, Me, XP, Vista, 7, Mac OS X, Linux) – provide a good interface to a single user – widely used for word processing, spreadsheets, and Internet access. • Real-Time OSs (VxWorks, QNX) – Used in industrial process control systems, where they collect data about the production process and use it to control machines in the factory (e.g. if a car is moving down an assembly line, certain actions must take place at certain instants of time, if a welding robot welds too early or too late, the car will be ruined.). Types of Operating Systems (cont’d) • Embedded OSs (PalmOS, Windows Mobile) – for handheld PCs, wireless devices. – run on PDAs (personal digital assistants) small computer that fits in a shirt pocket and performs a small number of functions such as an electronic address book and memo pad. – run also on the computers that control devices that are not generally thought of as computers, such as TV sets, microwave ovens, and mobile telephones. – have size, memory, and power restrictions. Types of Operating Systems (cont’d) • Smart Card OSs – smallest OSs running on smart cards, which are credit card-sized devices containing a CPU chip. – have very severe processing power and memory constraints. – some of them can handle only a single function, such as electronic payments, but others can handle multiple functions on the same smart card. – Java applets (small programs) may be downloaded to the card and interpreted by the JVM (Java Virtual Machine). This may lead to multiprogramming and the need to schedule them. PC Operating Systems • DOS (PC-DOS, MS-DOS) – for old PCs, no multitasking, command driven • Windows series for PCs (95, 98, Me) – streamlined GUI, multitasking, networking • Windows NT (Windows 2000, XP, Vista, 7) – for PCs, workstations, servers, multitasking/processing, intensive networking Windows Vista Windows Vista Desktop and Gadgets Microsoft Windows Vista Start Menu Windows 7 Windows 7 Control Panel My Computer, similarly to Windows Vista, shows capacity and free space of disk drives… Windows Media Player Windows 7 Gadgets Windows 7 Start Menu Windows Live - Photo Gallery Windows Live – Movie Maker Pictures Library Improved apps – Calculator & WordPad Improved apps – Paint & PowerShell It’s more easy now to switch on/off system icons … Windows Solution Center is now lacking firewall… Theme selection / Display settings Internet Explorer 8 with tabbed browsing, Live e-mail, blogging, and translation services… PC Operating Systems (cont’d) • IBM’s OS/2 – for PCs, multitasking, networking • Unix – for powerful PCs, workstations, minicomputers – multitasking, multi-user processing, networking • Linux (Mandriva, SUSE, Fedora, Ubuntu…) – free, reliable alternative to Unix and Windows NT – provides source code that can be modified by developers (open source software) • Macintosh OS X – for Macintosh, multitasking, networking, powerful multimedia capabilities Windows Server 2008 Utility Programs • Prewritten programs that can be shared by all users of a computer system and can be used rapidly in many different applications when requested • Used for routine, repetitive tasks – Copying, setting up new files, deleting old files, formatting diskettes 3. Application Software • Primarily concerned with accomplishing the tasks of end users • Many different languages (e.g. FORTRAN, COBOL, C, C++) can be used to develop application software. Microsoft Office 2007 Microsoft Word 2007 Microsoft PowerPoint 2007 Microsoft Excel 2007 Microsoft Access 2007 One-to-many relations between tables in relational DBMS (Microsoft Access)… Select Query involving two tables (Microsoft Access)… Microsoft Publisher 2007 Microsoft Visio 2007 Microsoft Office Accounting Pro 2008 Ready-to-use accounting software for small and medium-size enterprises (SMEs)… Includes quick navigation pane, Chart of Accounts, typical documents, reports, and more! Microsoft OneNote 2007 Microsoft Office Mac 2008 Alternative Office Suits IBM Lotus Symphony Open Office.org 3 OpenOffice.org 3 is a free, open-source alternative to commercial office suits; is available as a part of Linux distributions or separately for other OS… OpenOffice.org Base Java-powered DBMS… OpenOffice.org Calc spreadsheet is a free alternative to Microsoft Excel… Writer word processor can be used instead of Microsoft Word… …and OpenOffice.org Impress instead of Microsoft PowerPoint Other OpenOffice.org apps: Draw & Math Language Translators • Called a compiler or interpreter – Translates programs in human readable (high-level) languages (e.g. COBOL, C) into machine language that the computer can execute – In other words, Source code Object code • Source code: the program in the high-level language before translation into machine language (object code) Language Translators (Cont’d) • Different compiler is required for different type of source code • A Fortran compiler cannot compile a program written in COBOL source code Generations of Programming Languages • First generation languages (from 40s) – machine language – programming in binary digits (O and 1) • Second generation languages (from early 50s) – assembly language – using language-like acronyms and words instead of binary digits Assembly Language • Use acronyms such as add, sub, and load • Example: to add two numbers stored in memory 1 and memory 2 – load M1,reg1 – add M2, reg1 • Compiler will then convert the statements into machine language Generations of Programming Languages (cont’d) • Third generation languages (mid 50s – mid 70s): high-level languages – instructions that closely resemble human language or standard notation of mathematics – easier to learn but less efficient requiring a greater amount of translation time – Programs became easier to create and more widely used for scientific and business problems. – e.g. FORTRAN, COBOL, BASIC, PASCAL, C Generations of Programming Languages (cont’d) • Fourth generation languages (4GL, mid 70s ~) – can be employed directly by end users or less-skilled programmers – can enhance the productivity of programmers – nonprocedural or less procedural than previous languages (procedural languages requiring specification of the sequence of steps, procedures) – specify what has to be accomplished rather than how to accomplish a task Examples of 4GL • Query languages – retrieve specific information from databases or files – e.g. SQL • PC tools – General-purpose, productivitypromoting application packages developed for PCs – word processing, spreadsheet, data management, presentation graphics, email, web browser, groupware – E.g. MS Word, Excel, Access, Netscape, Lotus Notes Groupware • provides functions and services that support the collaborative activities of work groups • enhances collaboration by allowing the exchange of ideas electronically • includes software for information-sharing, electronic meetings, scheduling and e-mail distribution New Programming Approaches • Object-Oriented Programming (OOP) – software development approach that combines data and procedures into a single unit called an object – promotes reusable code through concepts such as encapsulation and inheritance – reduces Time And Cost Of Writing Software • Visual Programming – construction of programs by selecting and arranging programming objects (drag-anddrop) rather than by writing program code – e.g. Visual Basic Java • An object-oriented programming language used to create miniature programs called ‘applets’ designed to reside on network servers • A user can download only the software functions and data (applets) necessary to perform a specific task, e.g. analyzing the revenue – Companies might not need to purchase thousands of copies of commercial software on individual computers. • Can run on any computer and operating system, even on a smart cellular phone – No need to worry about IT environments (platform independent) HTML and XML • HTML – Page description language for creating Web pages – Describes only the display format of a document • XML – General-purpose language describing the structure of a document, supporting links to multiple documents, and allowing data to be manipulated – Designed to improve delivery of Web documents – Can be used for both Web and non-Web application 4. New software tools and approaches • Open source is an approach to design, development, and distribution offering practical accessibility to a product's source code. • Open source software (OSS) projects are built and maintained by a network of volunteer programmers. 4. New software tools and approaches • Examples of open source products are: – Linux operating system, a free, open-source Unix-like OS. – OpenOffice.org office suite, which includes word processor, spreadsheet, DBMS, and presentation graphics software. – Mozilla Firefox Internet browser. – Apache HTTP Server.