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