Articles by "Information Technology"
Showing posts with label Information Technology. Show all posts

General Software Features and Trends

Introduction

Now a days software projects are becoming more and more complex — in size, sophistication, and technologies used. Most software products are used by huge number of people, not only that, these software support different national languages and come in different sizes and shapes — desktop, standard, professional, Enterprise Resource Planning (ERP) packages and so on. Almost all application software products (like word processors, ERP packages) support more than on hardware and/or software platform. For example, we have web browsers for the PC and Mac; we have database management systems that run on MVS, UNIX, Windows NT, and Linux and so on. The competition and the advancements in technology are driving software vendors to include additional functionality and new features to their products— just to stay in business. The Information Technology is revolutionizing the way we live and work. The digital technology has given mankind the ability to treat information with mathematical precision, to transmit it at very high accuracy and to manipulate it at will.



Features: 

The following are the trends that play a vital role in the development of software products:

Ease of use

The software systems are applications are becoming more and more easy to use. Software developers and system analysts are concerned for ensuring that the software they develop are user-friendly than their competitor’s products. The user interfaces are more intuitive, the error messages are more descriptive, there is context sensitive help, and there are wizards and templates to help the user when one encounters a problem.

Graphical User Interface (GUI)

Today’s software applications and products provide users with intuitive, graphical and easy- to-use interfaces. Now the users do not have to remember the cryptic system commands or shortcut keys that were a must in the character based era. Now almost any tasks can be accomplished by a mouse click. For example, in a DOS environment, to copy a file one needs to know the command for copying files, its exact syntax and so on, whereas in the Windows environment, you just have to drag the files you want to copy from the source to destination.

Requirement of more powerful hardware

Because software vendors are incorporating more and more features into their products these software need more and powerful machines to run. They need more main memory, more secondary storage, and faster and powerful processors. It is also not very difficult to go for new powerful computers as the price of computers are decreasing day by day.

Multi-platform capability

Today’s software applications are not developed for just one platform. Most of the software applications supports multiple platforms— both hardware and software platforms. There are software applications that support hardware platforms ranging from mainframes to PCs and different software platforms like MVS, Solaris, AIX, UNIX, Windows and so on. Database like IBM’s DB2 Universal is available for a variety of hardware and software platforms. Another important feature of today’s software application is that they support multiple languages and multiple currencies. Many vendors are providing their application in many languages like English, Arabic, Japanese and Chinese and so on.

Network Capabilities

Network computers are becoming popular as they can work with minimal memory, disk storage and processor power. These computers are connected to a network especially the Internet. The idea behind network computers is that many users who are connected to a network don’t need all the computer power they get from a typical personal computer. Instead, they can rely on the power of the network servers. As the popularity of network computers increase, the demand for software that can run these computers are increasing and the software applications of today and tomorrow will have that capability.

Compatibility with other software

Now a day’s most of the software products are compatible with each other. For example, we can import HTML documents and other text documents into a Microsoft Word document. Also as newer versions of software are released, most vendors maintain backward
compatibility i.e. compatibility with earlier versions. These two features— backward compatibility and compatibility with other products make it easier for the users, as they can choose the application they want and still use the old files they created using other
applications or using older versions of the same application.

Object Linking and Embedding

We have mechanism to interact with other software systems. One of the methods to integrate external tolls into an application is using the Object Linking and Embedding (OLE) architecture to link or embed a component from another application running on the computer. OLE is a compound document standard developed by Microsoft Corporation. It enables us to create objects with one application and then link or embed them into a second application. This embedding and linking of components enables applications to share components.

Group work capabilities

Technologies, which support collaboration, are in greater demand today than ever before. Therefore, vendors are integrating collaborating technologies into their products. Distributed work forces, information overload, and getting products to market as quickly as possible are just a few of the motivational aspects pushing collaboration technology development.

Mail Enabling

The mail enabling of an application is the process through which email is gradually replacing many of the single purpose applications now used on personal computers. In its simplest form, a mail-enabled application is a Windows program that has a ‘Send’ command in its ‘File’ menu. For example, the Microsoft Word 2000 has a ‘Send To’ menu item in the ‘File’ menu where we can choose to send the document to a mail recipient, fax recipient and so on.

Web Enabling

With the ever-increasing popularity of Internet and the amount of information that is available on the net, most software application is now web-enabled. Web enabling helps the user in many different ways. During installation, most of the applications will automatically connect the Internet and to the vendor’s web site and will register their products (earlier one had to fill in a paper form and mail or fax it to the vendor).


Programming Languages

Programming Language is a set of rules that provides a way of instructing the computer to perform certain operations. Programming languages are said to be lower or higher, depending on whether they are closer to the language the computer itself uses or to the language that people uses.

We can study the programming languages under five levels (or generations) of language:



  • Machine Languages / First generation Languages
  • Assembly languages / 2nd Generation Languages
  • Procedural Languages/ Third-generation Languages
  • Problem-oriented Languages / Fourth generation Languages
  • Natural Languages / Fifth Generation Languages.



The characteristics & trends of these five languages are summarized in the following table:
Characteristics of Programming Languages

Characteristics of Programming Languages


Computer programming languages are developed with the primary objectives without the need to know in detail the internal structure of the computer.


Machine Language

A program written using the binary codes specified for a processor's operations and absolute binary addresses is known as machine language of the computer. The programs written in Machine  Languages are machine dependent. Programming using Machine Language is very tedious and time consuming. The programmer must keep track of a tremendous amount of detail and one must understand the technical operations of the computer. Programming in machine code has one advantage over programming at other language levels - its execution is very fast and efficient because the computer can accept the machine code as it is.

Assembly Language

Assembly languages are also known as symbolic languages as they use abbreviations or mnemonic code which replace the Os and ls of machine language. An assembly language has a one-to-one correspondence with the machine language of a computer and is thus machine dependent. Assembly languages are more standardized and easier to use than machine languages. Though more standardized than machine languages, assembly languages are still machine dependent.


High Level Languages

High level languages are the programming languages that use predefined common English words and clauses to write a program. They assisted programmers by reducing further the number of computer operations details they has to specify, so that they could concentrate more on the logic needed to solve the problem. We can classify the high level languages into three levels:


  • Procedural-oriented or third generation
  • Problem-oriented or fourth generation
  • Natural or fifth generation



Procedural oriented Languages

General-purpose programming languages are called procedural languages or third generation languages. They are the languages such as Pascal, BASIC, COBOL, and FORTAN, C which are designed to express the logic, the procedure, of a problem. Because of their flexibility, procedural languages are able to solve a variety of problems. More focus is given to module
while programming in Procedural-oriented languages.


Problem-oriented Languages

Fourth-generation languages are also known as problem-oriented languages. These are the languages designed to solve specific problems or develop specific applications by enabling one to describe what he wants rather than step-by-step procedures for getting there. Thus the problem should be considered most rather than procedures so as to get the solution to the particular problem. Visual Basic and PERL are Problem-oriented languages. These languages may be categorized into several kinds of application development tools:


  • Personal computer application software
  • Query languages and report generators
  • Decision support system and financial planning languages
  • Application generators



Natural Languages

Natural languages are very near to the human conversational language. Natural languages are still in the development stages. These languages will be used most in the areas of artificial intelligence and expert systems. Natural languages have two characteristics:


  • They are designed to make the connections that humans have with computers more natural — more human like.
  • They are designed to allow the computer to become "smarter" — to actually simulate the learning process by remembering and improving upon earlier information.

Two popular natural languages are LISP and PROLOG.


Compilers and Interpreters

Compiler is a program that translates source code into object code. The compiler takes the entire piece of source code and collects and recognizes the instructions. In contrast, the interpreter analyzes and executes each line of source code in succession, without looking at the entire program. The advantage of interpreters is that they can execute a program immediately but
compilers require some time before an executable program emerges. However, programs produced by compilers run much faster than the same programs executed by an interpreter.


Operating System

OS is an important system software package found in every computer system. It is a set of programs that controls and supervises a computer system’s hardware and it provides services to computer users. It permits the computer to supervise its own operations by automatically calling in application programs and managing data needed to produce the output desired by users. OS is an interface between the user and the computer. OS perform basic tasks, such as recognizing input from the keyboard, sending output to the display screen, keeping track of files and directories on the disk, and controlling peripheral devices such as disk drives and printers. OS, as a resource manager keeps track of who is using which resource, to grant resource requests, to account for usage and to mediate conflicting requests from different programs and users.


Functions of an Operating System:

Job Management: OS manages the jobs waiting to be processed. It recognizes the jobs, identifies their priorities, determines whether the appropriate main memory and secondary storage capability they require is available, and schedules and finally runs each job at the appropriate moment.

Batch Processing: Data are accumulated and processed in groups. The printing tasks in the printer are also done in groups. Most of the tasks of OS are grouped and performed one by one. On-line Processing: In on-line processing, data are processed instantaneously. Most on-line operating systems have multi-user and multitasking capabilities. Now a day we can access the data from the remote sites using on-line processing.

Data Management: OS manages the storage and retrieval of data. As the system software handles many of the details associated with this process, such details are not a primary concern for users or programmers writing application programs.

Virtual Storage: Using this method the capacity of main memory increases without actually increasing its size. This is done by breaking a job into sequences of instructions, called pages or segments, and keeping only a few of these in main memory at a time; the remaining are kept on secondary storage devices. Thus, relatively large jobs can be processed by a CPU.

Input/ Output Management: OS manages the input to and output from a computer system. This applies to the flow of data among computers, terminals, and other devices such as printers. Application programs used the operating system extensively to handle input and output devices as needed.

Function of operating system can be further listed as follows:

  • User interface implementation
  • Share hardware implementation
  • Allows users to share data.
  • Prevent users from interfering with one another.
  • Scheduling resources among users.
  • Facilitate input/output
  • Facilitate parallel operations
  • Organize data for secure and rapid access.
  • Handle network communications


Classification of Operating System:


Multi-user: These systems allow two or more users to run programs at the same time. Some OS permit hundreds or even thousands of concurrent users. The operating systems of mainframes and minicomputer are multi-user systems. Examples are MVS, UNIX, etc. Another term for multi-user is time-sharing.

Multiprocessing: It refers to a computer system’s ability to support more than one process (program) at the same time. This system allows the simultaneous execution of programs on a computer that has several CPUs. Mainframe, Supercomputers have more than one CPU.

Multitasking: This system allows a single CPU to execute what appears to be more than one program at the same time when, in fact, only one program is being executed. In multitasking, only one CPU is involved, but it switches from one program to another so quickly that it gives the appearance of executing all of the programs at the same time.

Multithreading: Multithreading allows different parts of a single program to mn concurrently. Multithreading is the ability of an OS to execute different parts of a program, called threads, simultaneously.

Real-time: These operating systems are system that responds to input immediately. It allows a computer to control or monitor tasks perfonned by other machines and people by responding to the input data in the required amount of time.

Software

  • Software is a collection of set of programs, which are used to execute all kinds of specific instruction. It consists of a number of machine instructions, array in a specific order to perform a particular task. Software is used to describe all the programs and its associated documents which run on a computer. So, a computer needs both software and hardware for its proper functioning.
  • Software means computer instructions or data. Anything that can be stored electronically is software.
  • Firmware are software (programs or data) that has been permanently written onto read-only memory (ROM)
  • All software falls into two general types or categories: System Software and Application Software. System software consists of low-level programs that interact with the computer at very basic level. This includes operating systems, compilers, and utilities for managing resources. On the other hand, application software includes database programs, word processors, and spreadsheets.



    Types of Software:

    • System Software
    • Application Software
    • Utility Software

    Examples of System software are as follows:

    Operating Systems
    Operating systems are the most important programs that run on a computer. Every general-purpose computer must have an operating system to run other programs. Operating systems perform basic tasks, such as recognizing input from the keyboard, sending output to the display screen, keeping tracks of files and directories on the disk and controlling peripheral devices such as disk drives and printers. Most commonly used operating systems include Microsoft Windows, DOS, Xenix, Mac OS, OS/2, UNIX, MVS, etc.

    Compilers and Interpreters
    Compiler is a program that translates source code into object code. The compiler takes the entire piece of source code and collects and recognizes the instructions. In contrast, the interpreter analyzes and executes each line of source code in succession, without looking at the entire program. The advantage of interpreters is that they can execute a program immediately but compilers require some time before an executable program emerges. However, programs produced by compilers nin much faster than the same programs executed by an interpreter.

    Device Drivers
    Device drivers are the software to run the particular peripheral devices like printers, wireless mouse, modems, and Ethernet cards etc. Most of the peripheral devices attached with the CPU needs device drivers to carry out the functions. Mostly we get device
    drivers at the time of buying these devices. For example we get the printer driver when we buy the printer. Device driver lets the CPU know the type of hardware and the type of instruction for a particular device attached with it.

    Examples of Application Software are as follows:

    Word Processors
    A word processor is a program that makes us possible to perform Word processing functions. We can create, edit, and print documents using word processors. We have many features that help us to prepare a fine document. Some of the important features of word processors are: editing, spelling checking, page setup, paragraph alignments, merging documents, typing in columns etc.
    MS-Word is the world’s most popular word-processor. Although every word processor provides almost the same features, MS-Word is most flexible to work with. It is used to write documents or letter. A file in MS-Word is called a document. When a file is saved,
    MS-Word attaches the extension .doc to the file.

    Spreadsheets
    A spreadsheet is a table of values arranged in rows and columns. Each value can have a predefined relationship to the other values. If one value is changed, others values need to be changed as well. Spreadsheet applications are computer programs that let you create and manipulate spreadsheets electronically. In a spreadsheet application, each value sits in a cell. We can
    define what type of data is in each cell and how different cells depend on one another. The relationships between cells are called formulas, and the names of the cells are called labels. Once we have defined the cells and the formulas for linking them together, we can enter the data. We can then modify selected values to see how all the other values change accordingly. What-if analysis makes the complex decision-making a very easy process. MS-Excel is one of the most popular spreadsheet applications.

    Multimedia applications
    Multimedia applications make us possible to run audio and video files. This application recognizes the digital signals and provides necessary signal to output devices and movie signals to the monitor and audio to the audio devices. Along with the video data we also get the text information about the file we are running. In windows operating system Windows Media Player is a good option to play the multimedia files.

    Presentation Graphics
    Presentation Graphics enable users to create highly stylized images for slide shows and reports. The software includes functions for creating various types of charts and graphs and for inserting text in variety of fonts. Most systems enable us to import data from a
    spreadsheet application to create the charts and graphs. Presentation graphics is often called business graphics. Some of the popular presentation graphics software are Microsoft PowerPoint, Lotus Freelance Graphics, Harvard Presentation Graphics, etc.

    Utility Software

    Utility is a program that performs a very specific task, usually related to managing system resources. Antivirus software, Disk Partition tools are the examples of utility software.


    Why CISC?

    •          Compiler simplification?
    –         Disputed…
    –         Complex machine instructions harder to exploit
    –         Optimization more difficult
    •          Smaller programs?
    –         Program takes up less memory but…
    –         Memory is now cheap
    –         May not occupy less bits, just look shorter in symbolic form
    •          More instructions require longer op-codes
    •          Register references require fewer bits
    •          Faster programs?
    –         Bias towards use of simpler instructions
    –         More complex control unit
    –         Microprogram control store larger
    –         thus simple instructions take longer to execute
    –         It is far from clear that CISC is the appropriate solution

    CISC Characteristics

    •          A large number of instructions-typically from 100 to 250 instructions
    •          Some instructions that perform specialized tasks and are used frequently
    •          A large variety of addressing modes-typically from 5 to 20 different modes
    •          Variable-length instruction formats
    •          Instructions that manipulate operands in memory

    RISC Characteristics

    •          One instruction per cycle
    •          Register to register operations
    •          Few, simple addressing modes
    •          Few, simple instruction formats
    •          Hardwired design (no microcode)
    •          Fixed instruction format, easily decoded instruction format
    •          More compile time/effort
    •          Relatively few instruction
    •          Memory access limited to load and store instruction
    •          Relatively large number of registers in processor unit
    •          Use of overlapped register windows to speed-up procedure call and return
    •          Efficient instruction pipeline
    •          Compiler support for efficient translation of HLL programs into machine language programs.
    •          E.g.: Sun SPARC, Berkeley RISC1

    RISC vs CISC

    •          Not clear cut
    •          Many designs borrow from both philosophies
    •          e.g. PowerPC and Pentium II …….

    The Next Step - RISCReduced Instruction Set Computer

      Key features

    –         Large number of general purpose registers
    –         or use of compiler technology to optimize register use
    –         Limited and simple instruction set
    –         Emphasis on optimising the instruction pipeline
    RISC VS CISC

    RISC VS CISC


    Advantages of CISC

    •          Microprogramming is as easy as assembly language to implement and much less expensive than hardwiring a unit
    •          The ease of microcoding new instructions allowed the designers to make CISC machines upwardly compatible – a new computer could run the same programs as earlier computers because the new computer would contain a superset of instructions of the earlier computers.
    •          As each instruction became more capable, fewer instructions could be used to implement a given task. This made more efficient use of the relatively slow main memory.
    •          Because microprogram instruction sets can be written to match the constructions of high-level languages, the compiler does not have to be as complicated.

    Disadvantages of CISC

    •          Earlier generations of a processor family were generally contained as a subset in every new version- so instruction set and chip hardware become more complex with each generation of computers.
    •          So that as many instructions as possible could be stored in memory with the least possible wasted space, individual instructions could be of almost any length – this means that different  instructions will take different amount of clock time to execute, slowing down the overall performance of the machine.
    •          Many specialized instructions are not used frequently enough to justify their existence – approximately only 20% of the available instructions are used in a typical program.
    •          CISC instructions typically se the condition codes as a side effect of the instruction. Not only does setting the condition codes take time, but programmers have to remember to examine the condition code bits before a subsequent instruction changes them.

    Advantages of RISC

    •          Speedà Since a simplified instruction set allows for a pipelined, superscalar design RISC processors often achieve 2-4 times the performance of CISC processors using comparable semiconductor technology and the same clock rates.
    •          Simpler hardware à Because the instruction set of a RISC processor is so simple, it uses up much less chip space; extra functions, such as memory management units or floating point arithmetic units, can also be placed on the same chip. Smaller chips allow a semiconductor manufacture to place more parts on a single silicon wafer, which can lower the per-chip cost dramatically.
    •          Short design cycle à Since RISC processors are simpler than corresponding CISC processors, they be designed  more quickly, and can take advantage of other technological developments sooner than corresponding CISC designs, leading to greater leaps in performance between generations.

    Disadvantages of RISC

    •          Code Quality àThe performance of a RISC processor depends greatly on the code that it is executing. If the programmer (or compiler) does a poor job of instruction scheduling, the processor can spend quite a bit of time stalling-waiting for the result of one instruction before it can proceed with a subsequent instruction.
    •          Debugging à Unfortunately, instruction scheduling can make debugging difficult. If scheduling (and other optimizations) is turned off, the machine-language instructions show a clear connection with their corresponding lines of source. Many RISC programmers debug their code in an un-optimized, unscheduled form and then turn on the scheduler and hope that the program continues to work in the same way.


    Architecture & Organization

    •          Architecture is those attributes visible to the programmer
    –         Instruction set, number of bits used for data representation, I/O mechanisms, addressing techniques.
    –         e.g. Is there a multiply instruction?
    •          Organization is how features are implemented
    –         Control signals, interfaces, memory technology.
    –         e.g. Is there a hardware multiply unit or is it done by repeated addition?
    •          All Intel x86 family share the same basic architecture
    •          The IBM System/370 family share the same basic architecture
    •          This gives code compatibility
    –         At least backwards
    •          Organization differs between different versions

    Structure & Function

    •          Structure is the way in which components relate to each other
    •          Function is the operation of individual components as part of the structure

    Structure Top Level
    Structure The CPU
    Structure The Processor


    Computer Evolution and PerformanceENIAC – background

    •          Electronic Numerical Integrator And Calculator
    •          Eckert and Mauchly
    •          University of Pennsylvania
    •          Trajectory tables for weapons
    •          Started 1943
    •          Finished 1946
    –         Too late for war effort
    ·         Used until 1955

    ENIAC – details

    •          Decimal (not binary)
    •          20 accumulators of 10 digits
    •          Programmed manually by switches
    •          18,000 vacuum tubes
    •          30 tons
    •          15,000 square feet
    •          140 kW power consumption
    5,000 additions per second

    von Neumann/Turing

    •          Stored Program concept
    •          Main memory storing programs and data
    •          ALU operating on binary data
    •          Control unit interpreting instructions from memory and executing
    •          Input and output equipment operated by control unit
    •          Princeton Institute for Advanced Studies
    –         IAS
    ·         Completed 1952

     
    Structure of von Nuemann machine
    Commercial Computers

    •          1947 - Eckert-Mauchly Computer Corporation
    •          UNIVAC I (Universal Automatic Computer)
    •          US Bureau of Census 1950 calculations
    •          Became part of Sperry-Rand Corporation
    •          Late 1950s - UNIVAC II
    –         Faster
    ·         More memory

    IBM

    •          Punched-card processing equipment
    •          1953 - the 701
    –         IBM’s first stored program computer
    –         Scientific calculations
    •          1955 - the 702
    –         Business applications
    •          Lead to 700/7000 series

    Transistors

    •          Replaced vacuum tubes
    •          Smaller
    •          Cheaper
    •          Less heat dissipation
    •          Solid State device
    •          Made from Silicon (Sand)
    •          Invented 1947 at Bell Labs
    •          William Shockley et al.

    Transistor Based Computers

    •          Second generation machines
    •          NCR & RCA produced small transistor machines
    •          IBM 7000
    •          DEC - 1957
    –         Produced PDP-1

    Microelectronics

    •          Literally - “small electronics”
    •          A computer is made up of gates, memory cells and interconnections
    •          These can be manufactured on a semiconductor
    •          e.g. silicon wafer

    Generations of Computer

    •          Vacuum tube - 1946-1957
    •          Transistor - 1958-1964
    •          Small scale integration - 1965 on
    –         Up to 100 devices on a chip
    •          Medium scale integration - to 1971
    –         100-3,000 devices on a chip
    •          Large scale integration - 1971-1977
    –         3,000 - 100,000 devices on a chip
    •          Very large scale integration - 1978 to date
    –         100,000 - 100,000,000 devices on a chip
    •          Ultra large scale integration
    •          Over 100,000,000 devices on a chip

    Moore’s Law

    •          Increased density of components on chip
    •          Gordon Moore - cofounder of Intel
    •          Number of transistors on a chip will double every year
    •          Since 1970’s development has slowed a little
    –         Number of transistors doubles every 18 months
    •          Cost of a chip has remained almost unchanged
    •          Higher packing density means shorter electrical paths, giving higher performance
    •          Smaller size gives increased flexibility
    •          Reduced power and cooling requirements
    • •          Fewer interconnections increases reliability



    Growth in CPU Transistor Count

    IBM 360 series

    •          1964
    •          Replaced (& not compatible with) 7000 series
    •          First planned “family” of computers
    –         Similar or identical instruction sets
    –         Similar or identical O/S
    –         Increasing speed
    –         Increasing number of I/O ports (i.e. more terminals)
    –         Increased memory size
    –         Increased cost
    •          Multiplexed switch structure

    Semiconductor Memory

    •          1970
    •          Fairchild
    •          Size of a single core
    –         i.e. 1 bit of magnetic core storage
    •          Holds 256 bits
    •          Non-destructive read
    •          Much faster than core
    •          Capacity approximately doubles each year

    Intel

    •          1971 - 4004
    –         First microprocessor
    –         All CPU components on a single chip
    –         4 bit
    •          Followed in 1972 by 8008
    –         8 bit
    –         Both designed for specific applications
    •          1974 - 8080
    –         Intel’s first general purpose microprocessor

    Speeding it up

    •          Pipelining
    •          On board cache
    •          On board L1 & L2 cache
    •          Branch prediction
    •          Data flow analysis
    •          Speculative execution

    Performance Mismatch

    •          Processor speed increased
    •          Memory capacity increased
    •          Memory speed lags behind processor speed

    DRAM and Processor Characteristics

    Solutions

    •          Increase number of bits retrieved at one time
    –         Make DRAM “wider” rather than “deeper”
    •          Change DRAM interface
    –         Cache
    •          Reduce frequency of memory access
    –         More complex cache and cache on chip
    •          Increase interconnection bandwidth
    –         High speed buses
    –         Hierarchy of buses