Friday, May 22, 2009

Softwares


Systems software is necessary to support the running of an application program. Operating systems are needed to link the machine-dependent needs of a program with the capabilities of the machine on which it runs. Compilers translate programs from high-level languages into machine languages. Database programs keep track of where and how data are stored on the various storage facilities of a typical computer, and simplify the task of entering data into those facilities or retrieving the data. Networking software provides the support necessary for computers to interact with each other, and with data storage facilities, in a situation where multiple computers are necessary to perform a task, or when software is running on a network of computers (such as the Internet or the World Wide Web). See also Database management system; Internet; Operating system; World Wide Web.

Business applications software processes transactions, produces paychecks, and does the myriad of other tasks that are essential to running any business. Roughly two-thirds of software applications are in the business area.

Scientific and engineering software satisfies the needs of a scientific or engineering user to perform enterprise-specific tasks. Because scientific and engineering tasks tend to be very enterprise-specific, there has been no generalization of this application area analogous to the that of the ERP for backoffice business systems. The scientific-engineering application usually is considered to be in second place only to business software in terms of software products built.

Edutainment software instructs (educates) or plays games with (entertains) the user. Such software often employs elaborate graphics and complex logic. This is one of the most rapidly growing software application areas, and includes software to produce special effects for movies and television programs.

Real-time software operates in a time-compressed, real-world environment. Although most software is in some sense real-time, since the users of modern software are usually interacting with it via a GUI, real-time software typically has much shorter time constraints. For example, software that controls a nuclear reactor must make decisions and react to its environment in minuscule fractions of a second.

With the advent of multiple program portions, software development has become considerably more complicated. Whereas it was formerly considered sensible to develop all of a software system in the same programming language, now the different portions are often developed in entirely different languages. The relatively complex GUI, for example, can most conveniently be developed in one of the so-called visual languages, since those languages contain powerful facilities for creating it. The server software, on the other hand, will likely be built using a database package and the database language SQL (a Structured Query Language, for inquiring into the contents of a database). If the server software is also responsible for interacting with a network such as the Internet, it may also be coded in a network-support language such as Java. An object-oriented approach may be adopted in its development, since the software will need to manipulate objects on the Internet. See also Computer programming; Object-oriented programming; Software engineering.