Custom Search

Pages

Friday, November 19, 2010

Standard Of Software

Since software can be designed using many different programming languages and in many different operating systems and operating environments, software standard is needed so that different software can understand and exchange information between each other. For instance, an email sent from a Microsoft Outlook should be readable from Yahoo! Mail and vice versa.

Programming Tool

List of tools

Software tools come in many forms:
Binary compatibility analysis: icheck, ABI Compliance Checker
Bug Databases: Bugzilla, Trac, JIRA, LibreSource, SharpForge
Build Tools: Make, automake, Apache Ant, SCons, Rake, Flowtracer, cmake, qmake
Code coverage: C++test,GCT, Insure++, Jtest, CCover
Code Sharing Sites: Freshmeat, Krugle, Sourceforge. See also Code search engines.
Compilation and linking tools: GNU toolchain, gcc, Microsoft Visual Studio, CodeWarrior, Xcode, ICC
Debuggers: gdb, GNU Binutils, valgrind. Debugging tools also are used in the process of debugging code, and can also be used to create code that is more compliant to standards and portable than if they were not used.
Disassemblers: Generally reverse-engineering tools.
Documentation generators: Doxygen, help2man, POD, Javadoc, Pydoc/Epydoc, asciidoc
Formal methods: Mathematically-based techniques for specification, development and verification
GUI interface generators
Library interface generators: Swig
Integration Tools
Memory Use/Leaks/Corruptions Detection: dmalloc, Electric Fence, duma, Insure++. Memory leak detection: In the C programming language for instance, memory leaks are not as easily detected - software tools called memory debuggers are often used to find memory leaks enabling the programmer to find these problems much more efficiently than inspection alone.
Parser generators: Lex, Yacc
Performance analysis or profiling
Refactoring Browser
Revision control: Bazaar, Bitkeeper, Bonsai, ClearCase, CVS, Git, GNU arch, Mercurial, Monotone, Perforce, PVCS, RCS, SCM, SCCS, SourceSafe, SVN, LibreSource Synchronizer
Scripting languages: PHP, Awk, Perl, Python, REXX, Ruby, Shell, Tcl
Search: grep, find
Source-Code Clones/Duplications Finding
Source code formatting: indent
Source code generation tools
Static code analysis: C++test, Jtest, lint, Splint, PMD, Findbugs, .TEST, Cppcheck
Text editors: emacs, vi, vim
Unit Testing: C++test, API Sanity Autotest

Application software

Application software allows end users to accomplish one or more specific (not directly computer development related) tasks. Typical applications include:
industrial automation
business software
video games
quantum chemistry and solid state physics software
telecommunications (i.e., the Internet and everything that flows on it)
databases
educational software
medical software
molecular modeling software
image editing
spreadsheet
simulation software
Word processing
Decision making 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:
compilers
debuggers
interpreters
linkers
text editors
An Integrated development environment (IDE) is a single application that attempts to manage all these functions.

System software

System software helps run the computer hardware and computer system. It includes a combination of the following:
device drivers
operating systems
servers
utilities
window systems
The purpose of systems software is to unburden the applications programmer from the often complex details of the particular computer being used, including such accessories as communications devices, printers, device readers, displays and keyboards, and also to partition the computer's resources such as memory and processor time in a safe and stable manner. Examples are - Microsoft Windows, Linux, and Mac OS X.

Types of software

Practical computer systems divide software systems into three major classes[citation needed]: system software, programming software and application software, although the distinction is arbitrary, and often blurred

The BIOS

As we mentioned earlier, the computer knows what to do by taking instructions from programs stored in RAM. The main instructions come from a program called the operating system, and those instructions direct traffic for other programs called applications.

When the computer is turned off, all the instructions copied into the RAM are gone. When the system is turned on again, it needs to go out to the disk, get the operating system and load it into RAM, but there are no instructions in the RAM to tell it how to do this. The solution to this problem is a set of instructions that stay in memory and don’t get lost when the computer is turned off.

This set of instructions is called the BIOS, for Basic Input Output System. Since the instructions don’t need to change, they can be stored in a different kind of chip than we use for RAM. It’s called ROM, for Read Only Memory. We say that the instructions in the BIOS are hard-wired, and instead of software they are called firmware.

The computer goes through a process called booting up when it is first turned on. This involves executing the BIOS instructions, loading the operating system from disk into RAM, and then turning control of the computer over to the operating system after everything checks out OK. The term refers to somebody pulling themselves up by their own bootstraps (without outside help, in other words). Any computer term that includes ‘boot’ will have something to do with this start-up process.

Processing

If we just put information into the computer and took it out again later, computers could be much simpler. Most of the time though, we want to do something with it or change it in some way. Doing something with it is called processing, or data processing. Most of this takes place in a part called the processor, or Central Processing Unit. This is usually abbreviated to CPU.

The CPU is such an important part of the computer that we often refer to a system by the type of CPU it contains. My office computer is a Pentium Iv but at home I have an Athlon system. Sometimes you will hear the entire computer cabinet called a CPU.

To help the CPU there is another part that takes over a lot of the arithmetic. It is called the co-processor and also the NumericalProcessing Unit or NPU.

The smallest piece of data that a computer can process is called a bit, and each bit will be either a one or a zero. For the sake of efficiency, the computer normally deals with a minimum of 8 bits at a time, and 8 bits together is called a byte. This is an important word to remember, because in working with computers you will hear about bytes frequently, and also megabytes which is one million bytes. Megabyte is usually abbreviated MB.

The Motherboard

The biggest and most important circuit board in a computer is the motherboard. It's called the motherboard because every other part of the computer is connected to it. The CPU plugs into the motherboard, and so does the memory. And all the components that plug into the back of the case, like the keyboard and monitor, are connected from there to the motherboard. It is also called the system board.

There is a set of slots near the back edge of the board for plugging in other circuit boards, calledadapter cards. These plug-in slots are for things like modems, sound cards, network cards and just about any other add-on feature you can think of. There is a set of traces connecting these slots to each other. A trace goes from Pin 1 of the first slot to Pin 1 of each of the other slots, and other traces connect each of the Pin 2s, each of the Pin 3s, etc. These traces then go on to connect to the memory, CPU, disk drives and other parts of the computer.

Software

The physical parts of as computer are called hardware. These are things you can see and touch, and yes, they are hard.

These same pieces of hardware are used whether you want to write a letter, balance your checkbook or play a game of computer solitaire, so how does this hardware know what to do, and when to do it? Actually, the hardware parts don't have a clue. They need instructions to tell them what to do, so some of that information we're storing and processing must be the instructions telling the computer what to do.

These instructions are called software, and they are organized into sets of instructions called programs. If you want to play a game on the computer, the computer must have a program with the instructions for that particular game. If you want to send e-mail, there must be an e-mail program.

One program called the operating system contains the instructions for actually running the computer. Certain things need to be done no matter what you are using the computer for. These are things like getting data on and off the disk, getting information to the monitor screen, and so forth. A program called Windows is the most common operating systems for PCs, and the one used in this office. It comes from a little company called Microsoft. Perhaps you have heard of it.

Anyway, the operating system takes care of the basic details of running the computer, and allows other programs to concentrate on their particular tasks. These other programs are called applications, because their job is to apply the computer to a specific task. When we say software, that can mean the applications, the operating system, or both.

There are other little chunks of software that attach to the operating system and tell it how to run particular hardware components or applications. These little chunks are called drivers, and anytime you add a piece of hardware to a system or upgrade to a new version of a device, you will need to have the right driver for that new piece of hardware.

More About Disk Drives

Floppies – Although floppy drives are being phased out in some new computers, there are still millions of them out there and you should know something about them. The floppy drive has a little slot on the face of the computer cabinet, and into this slot you can slide a floppy diskette like the one shown here. One of the reasons floppy drives are still around is that it is very easy to take a floppy diskette from one system to another.

Inside the floppy diskette is a round flat disk coated with iron oxide on each side so that data can be stored on it magnetically. This disk is called a platter, and it spins underneath an electro-magnet called the write head that puts data onto the platter surface. There is another head called the read head that copies data from the platter.

Once the disk has made one complete revolution, data is written all the way around. That is called a track. The head then moves a bit and writes another circle of data to create a second track. Altogether, there are 80 tracks on each side, for a total of 160. Altogether, the floppy can hold 1.44 MB (megabytes) of data.

If we are looking for just a few bytes out of 1.44 million, it’s not enough to know which track it is in. To help narrow the search, the track is divided into 18 pieces, calledsectors, which look much like a slice of pie. Each sector holds 512 bytes of data, so if we know the track and sector number of the data we want it won’t be hard to find.

Hard Drives – On a hard drive, data is also organized into tracks and sectors. While each sector still holds 512 bytes, there can be many more tracks and sectors on a platter. There are also multiple platters, one on top of the other like a stack of pancakes. Hard drives can hold much more data than floppies, sometimes into the billions of bytes, calledgigabytes (GB).

Multiple platters require multiple read and write heads, all attached to the same arm so they move together. It’s called an actuator arm. When we are reading track number 10 on the top platter, the other heads are also positioned over track 10 of the other platters, and together all of these track 10s make up a cylinder. To specify the location of data on a hard drive it is necessary to say what cylinder, then the track and sector. Moving the heads from one cylinder to another is called a seek, and the amount of time this takes is the average seek time.

Although hard drives can hold much more data than floppies, the platters are sealed into a metal case that is fastened inside the computer cabinet, so it’s not an easy matter to move from one system to another like you can with floppies. A hard drive is sometimes called a fixed disk for this reason.

Operating systems use a couple of different methods to keep track of what data is stored where on a drive. One common method uses a table called a File Allocation Tableor FAT, which is a section of the disk with pointers to data locations. There are two versions, called FAT16 and FAT32. Windows NT, XP and 2000 use a similar method called NTFS.

There are two different interfaces commonly by hard drives to talk to the rest of the system. These are called IDE for Integrated Drive Electronics, and SCSI for SmallComputer System Interconnect. The technical differences are not important at this point, but you should know about the two types because they are not interchangeable.

Figuring out where the heads should go next and then moving them there is the job of some electronic circuitry called the disk controller. Every disk drive has its own controller, which may be on the motherboard or inside the drive itself, depending on the type of drive.

There are a few more things you should know about disk drives before we leave the subject. The first sector of Cylinder 0, Track 0 is called the boot sector, and it contains aMaster Boot Record (MBR) that shows whether the disk contains an operating system and the location of the code. If there is more than one operating system, the drive must be divided into multiple partitions. If not, then the whole drive will be a single partition. All of the disk space assigned to a partition is called a volume.

Another term you will encounter is a disk format. There is a high-level format, which creates a new file allocation table and is done with a FORMAT command. There is also alow-level format that creates a new pattern of sectors. A low-level format must be followed by an FDISK command to create a new Master Boot Record and partitions.

Last, we have the word media. This refers to the actual surface holding the data, which is the platter in the case of a disk drive. Because the floppy platter can be taken out of the drive, it is called removable media, while a hard drive is called fixed media.

Other Drives – Most systems today, especially home systems, have additional storage drives that use CD or DVD discs. The technology for both is similar but DVDs hold much more data. These drives do not store data magnetically but use optical markings that are read with a laser. They are mostly used just to read data and not to write it. The full name for CD in fact is CD-ROM, which stands for Compact Disc - Read Only Memory. However, there are versions that can be used to write also, and these are called CD-RW and DVD-RW. Even so they are mostly used to write just once for permanent storage, and are not practical for constantly changing data.

Like hard drives, CD-ROM drives can use either an IDE or SCSI interface. The version of IDE for CD-ROM drives is called ATAPI, and for SCSI the CD-ROM version is ASPI.

Because the discs can be removed, CD-ROM and DVD are considered removable media. There are other types of removable media also that are not as common, such as tape drives and Zip disks, which are similar to floppies but with a storage capacity of 100 or 250 MB. Zip disks and tape drives also use the ATAPI interface

More About Memory

lled modules that plug into the motherboard. This makes it very convenient to add more memory by plugging in another module. Older computers used a SIMM, which stands for Single Inline MemoryModule, and later ones use a DIMM or Dual Inline Memory Module. The difference is that DIMMs have different signals on each side of the module connector, and the additional signals allow more memory addresses and more data lines going in and out.

The amount of memory is always is some multiple of two bytes. The most common values are 32, 64, 128, 256 or 512 megabytes.

As it is used by the system, RAM is divided into base memory and extended memory. Base memory is the first megabyte, and extended memory is everything over that. The very first PCs had only base memory, and then a scheme was developed called expanded memory that tricked the computer into allowing more than 1 MB of memory. Once extended memory was developed though, expanded memory quickly became obsolete and will only be found in older computers.

Another memory term you will encounter is cachememory. This refers to memory that is not on DIMMs but is either built into the CPU or connected directly to the motherboard near the CPU. It provides even faster access than RAM for the data that the CPU expects to need next. The contents of the cache will change constantly depending on what the CPU is doing.

Computer program

A computer program (also a software program, or just a program) is a sequence of instructions written to perform a specified task for a computer.[1] A computer requires programs to function, typically executing the program's instructions in a central processor.[2] The program has an executable form that the computer can use directly to execute the instructions. The same program in its human-readable source code form, from which executable programs are derived (e.g., compiled), enables a programmer to study and develop its algorithms.
Computer source code is often written by professional computer programmers. Source code is written in a programming language that usually follows one of two main paradigms: imperative or declarative programming. Source code may be converted into an executable file (sometimes called an executable program or a binary) by a compiler and later executed by a central processing unit. Alternatively, computer programs may be executed with the aid of an interpreter, or may be embedded directly into hardware.
Computer programs may be categorized along functional lines: system software and application software. Many computer programs may run simultaneously on a single computer, a process known as multitasking

Programming

Computer programming is the iterative process of writing or editing source code. Editing source code involves testing, analyzing, and refining, and sometimes coordinating with other programmers on a jointly developed program. A person who practices this skill is referred to as a computer programmer, software developer or coder. The sometimes lengthy process of computer programming is usually referred to as software development. The term software engineering is becoming popular as the process is seen as an engineering discipline

History after 1950

A number of efforts have been directed toward further refinement of the definition of "algorithm", and activity is on-going because of issues surrounding, in particular, foundations of mathematics (especially the Church–Turing Thesis) and philosophy of mind (especially arguments around artificial intelligence). For more, see Algorithm characterizations.