Você está na página 1de 39

Computer software, or just software, is a collection of computer programs and related data that provide the instructions for

telling a computer what to do and how to do it. In other words, software is a conceptual entity which is a set of computer programs, procedures, and associated documentation concerned with the operation of a data processing system. We can also say software refers to one or more computer programs and data held in the storage of the computer for some purposes. In other words software is a set of programs, procedures, algorithms and its documentation. Program software performs the function of the program it implements, either by directly providing instructions to the computer hardware or by serving as input to another piece of software. The term was coined to contrast to the old term hardware (meaning physical devices). In contrast to hardware, software is intangible, meaning it "cannot be touched". Software is also sometimes used in a more narrow sense, meaning application software only. Sometimes the term includes data that has not traditionally been associated with computers, such as film, tapes, and records. Examples of computer software include:  Application software includes end-user applications of computers such as word processors or video games, and ERP software for groups of users.   Middleware controls and co-ordinates distributed systems. Programming languages define the syntax and semantics of computer programs. For example, many mature banking applications were written in the COBOL language, originally invented in 1959. Newer applications are often written in more modern programming languages.  System software includes operating systems, which govern computing resources. Today
[when?] [2] [1]

large

[quantify]

applications running on remote machines such as Websites are


[citation needed]

considered

[by whom?]

to be system software, because

the end-user interface is generally

through a graphical user interface, such as a web browser.   Testware is software for testing hardware or a software package. Firmware is low-level software often stored on electrically programmable memory devices. Firmware is given its name because it is treated like hardware and run ("executed") by other software programs.  Shrinkware is the older name given to consumer-purchased software, because it was often sold in retail stores in a shrink-wrapped box.  Device drivers control parts of computers such as disk drives, printers, CD drives, or computer monitors.  Programming tools help conduct computing tasks in any category listed above. For programmers, these could be tools for debugging or reverse engineering older legacy systems in order to check source code compatibility.
Contents
[hide]

1 History 2 Overview 3 Types of software

o o o

3.1 System software 3.2 Programming software 3.3 Application software

4 Software topics

o o o o o o o o

4.1 Architecture 4.2 Documentation 4.3 Library 4.4 Standard 4.5 Execution 4.6 Quality and reliability 4.7 License 4.8 Patents

5 Design and implementation 6 Industry and organizations 7 See also 8 References 9 External links

History
For the history prior to 1946, see History of computing hardware. The first theory about software was proposed by Alan Turing in his 1935 essay Computable numbers with an application to the Entscheidungsproblem (Decision problem).[3] The term "software" was first used in print by John W. Tukey in 1958. Colloquially, the term is often used to mean application software. In computer science and software engineering, software is all information processed by computer system, programs and data. science and software engineering. The history of computer software is most often traced back to the first software bug in 1946[citation
needed] [4] [4]

The academic fields studying software are computer

. As more and more programs enter the realm of firmware, and the hardware itself becomes

smaller, cheaper and faster as predicted by Moore's law, elements of computing first considered to be software, join the ranks of hardware. Most hardware companies today have more software programmers on the payroll than hardware designers[citation needed], since software tools have automated many tasks of Printed circuit board engineers. Just like the Auto industry, the Software industry has

grown from a few visionaries operating out of their garage with prototypes. Steve Jobs and Bill Gates were the Henry Ford and Louis Chevrolet of their times
[citation needed]

, who capitalized on ideas

already commonly known before they started in the business. In the case of Software development, this moment is generally agreed to be the publication in the 1980s of the specifications for the IBM Personal Computer published by IBM employee Philip Don Estridge. Today his move would be seen as a type of crowd-sourcing. Until that time, software was bundled with the hardware by Original equipment manufacturers (OEMs) such as Data General, Digital Equipment and IBM
[citation needed]

. When a customer bought

a minicomputer, at that time the smallest computer on the market, the computer did not come with Pre-installed software, but needed to be installed by engineers employed by the OEM. Computer hardware companies not only bundled their software, they also placed demands on the location of the hardware in a refrigerated space called a computer room. Most companies had their software on the books for 0 dollars, unable to claim it as an asset (this is similar to financing of popular music in those days). When Data General introduced theData General Nova, a company called Digidyne wanted to use its RDOS operating system on its own hardware clone. Data General refused to license their software (which was hard to do, since it was on the books as a free asset), and claimed their "bundling rights". The Supreme Court set a precedent called Digidyne v. Data General in 1985. The Supreme Court let a 9th circuit decision stand, and Data General was eventually forced into licensing the Operating System software because it was ruled that restricting the license to only DG hardware was an illegal tying arrangement. Soon after, IBM 'published' its DOS source for free, and Microsoft was born. Unable to sustain the loss from lawyer's fees, Data General ended up being taken over by EMC Corporation. The Supreme Court decision made it possible to value software, and also purchase Software patents. The move by IBM was almost a protest at the time. Few in the industry believed that anyone would profit from it other than IBM (through free publicity). Microsoft and Apple were able to thus cash in on 'soft' products. It is hard to imagine today that people once felt that software was worthless without a machine. There are many successful companies today that sell only software products, though there are still many common software licensing problems due to the complexity of designs and poor documentation, leading to patent trolls. With open software specifications and the possibility of software licensing, new opportunities arose for software tools that then became the de facto standard, such as DOS for operating systems, but also various proprietary word processing and spreadsheet programs. In a similar growth pattern, proprietary development methods became standard Software development methodology.
[5]

Overview

 7 ( %% ! ' " " 7 ! 7( %% 7 % ( ! #    $  )#)  $ 0 7( %% 7 & !  ! !% ! ! &" ( ! ! %   " ! ( !( #  1  )#)   #   ) # ) )       1  0 ! %% ! 0 7( %% ! ! !  7 % 0 (   " " 7 ! ! &" (   )#)          )#)   $ !   !  ( "  % ! ' I& B ! ! &" ( ! & 3 !  !  1   )#)  ) )#)    )#)   #   $ $ 1   % " % %! ( &  ! "  ( !  %  &% ! ! ((   ' I& & !  2 #  #   $     )#)  )  ) 1 ) !  0 % % "! % "  !  ( " & % & ! ! & "  %! "  %! #8 #1  # #  # 1    ) )    # "! %   !  %(   % ! "  % (   ( " & % & ! &" & #8 $ #1    )  ) $ 1    )   $   %! "  %!  %% "  ! 0 ! % % ' 0 ! 7 %  % % %! " ! ! &" (  %% "  #  #  1) )   1# )   )#)    1 ' ! ! " " % %! "  %! ! ! &" ( % % %! " " 7 " ' %  #$ $  1  # )#)     $ # P  &   % & 3!   " !  %  % "' ! %! " !! " ! " %0& # 2 # P $    $ #8     1 $$   ( "! & " &     &  ( " (  &% ! % " %%   % ( #1  #) #1 4 1   $    $ $  

%" !  "  ( %! "  & ! %! % ' % 7 ( % ( %0% " & #   $     #  ) % 7  ! " &  ! % ( '! % % % 3  (    % ! H 2    1  #)   $  )  $  $ $ #  % "  ! D % &" % % ( %0% !    % ! 0  ! ! ! %!  0 %   %   C  P#  # )  1   ) # #   $ #   # ! " 6 (  ' " 7G 6 % ! !  H ' '   11    4  E 4I )#)  $ 1 $$  4 4 % "  " G! G 6 %! " 6% ! D A F  B D AB 6   C ) 1   11 1 $$  C E C %6  (  ! % ! ! ' % 7  "!   % % 0 &A   $  )#)     1 $ 1 $ )1 $#

!  ! " @ 9!  " " ( % ! ! "% % ! ! ( (   0 !    #)    $  )#)  ) 1 )#)  )  ) 1  $  % &" % % !&" !  !% ' 70 ( & %"  0   #8 #$ 1    $  #   $ ) # $ 1 $ % % % ( "! % &   ! ( ! % ! 6  & % ! %    & &     !  & #  1        $  1  1   5  % % % &  & & %%   3( %0%  ( %   ( " #1    $ #  $   2 $ ) 4  ! ' &0 (  %0 & %  ! %( %  ' & % "!   1$     )$   $   #   $#   $              
t t i ti t i l t ll ft t t Al

S ft

ll t

t i it ll

data

! 0

li

ft

i t

. S ft

, P P, P l, SP, ASP. E , X

ft

ll

t ,

i il

ft

i l

t t

fi

ll

it

il

li

,t l

l i

i ti

i ti

i i

++,

ft

it f

ti

i l

ti

iff

fi f

t i

tt

li

ti

#,

ti

. S ft

li

code f

P A

llt l . A

i .

& % %%

l i

tl

ti

li t

ll

.A

l,

t t

t ti t ti i j l l

ft

t t

i t i

. S ft

i t

ft

i t

it

f i

ll

i tt

t t .P

ti

l . i l l

ll

ffi i

ti

tf

if i

l l i il

. It i

fi

ifi t

ffi

fi

ft

i t

t. A t li l i ll .

P ,

ti

ti

. At t

i i

itt

ft

ti ll , t i t ti l

ft

Types f soft
W YW SR Q

e
`Y YW XW V TU T c

Thi secti does not cite any references or sources. Please hel i e this secti by addi citati s t reliable sources. Unsourced material may be challenged and removed. (August 2010) P ti l omputer systems i i e soft
e f g f d d

re systems i to t ree major lasses


h h f g c

[citation needed]

soft are, programmi g soft are and appli ation soft are, alt ough the distinction is arbitrary, and often blurred.

System software
System soft are provides the basic functions for computer usage and helps run the computer hardware and system. It includes a combination of the following:      evice drivers perating systems
i

Servers tilities i ndow systems


r

System software is responsible for managing a variety of independent hardware components, so that they can work together harmoniously. Its purpose is to unburden the application software programmer from the often complex details of the particular computer being u sed, 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.

Programmi g 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:      ompilers ebuggers

Interpreters i nkers
v

Text editors
x u w

An Integrated development environment I E is a single application that attempts to manage all these functions..

Appli ation software

f b c c a s q p t u

: system

Application software is developed to aid in any task that benefits from computation. It is a broad category, and encompasses software of many kinds, including the internet browser being used to display this page. This category includes:                 Business software Computer-aided design Databases Decision making software Educational software Image editing Industrial automation Mathematical software Medical software Molecular modeling software Quantum chemistry and solid state physics software Simulation software Spreadsheets Telecommunications (i.e., the Internet and everything that flows on it) Video games Word processing

Software topics
Architecture
See also: Software architecture Users often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems, analog computers and supercomputers) usually see three layers of software performing a variety of tasks: platform, application, and user software.  Platform software: Platform includes the firmware, device drivers, an operating system, and typically a graphical user interface which, in total, allow a user to interact with the computer and its peripherals (associated equipment). Platform software often comes bundled with the computer. On a PC you will usually have the ability to change the platform software.  Application software: Application software or Applications are what most people think of when they think of software. Typical examples include office suites and video games. Application software is often purchased separately from computer hardware. Sometimes applications are bundled with the computer, but that does not change the fact that they run as independent applications. Applications are usually independent programs from the operating system, though

they are often tailored for specific platforms. Most users think of compilers, databases, and other "system software" as applications.  User-written software: End-user development tailors systems to meet users' specific needs. User software include spreadsheet templates and word processor templates. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. Depending on how competently the user-written software has been integrated into default application packages, many users may not be aware of the distinction between the original packages, and what has been added by co-workers.

Documentation
Main article: Software documentation Most software has software documentation so that the end user can understand the program, what it does, and how to use it. Without clear documentation, software can be hard to useespecially if it is very specialized and relatively complex like Photoshop or AutoCAD. Developer documentation may also exist, either with the code as comments and/or as separate files, detailing how the programs works and can be modified.

Library
Main article: Software library An executable is almost always not sufficiently complete for direct execution. Software libraries include collections of functions and functionality that may be embedded in other applications. Operating systems include many standard Software libraries, and applications are often distributed with their own libraries.

Standard
Main article: Software standard 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.

Execution
Main article: Execution (computing) Computer software has to be "loaded" into the computer's storage (such as the hard drive or memory). Once the software has loaded, the computer is able to execute the software. This involves passing instructions from the application software, through the system software, to the hardware which ultimately receives the instruction as machine code. Each instruction causes the computer to carry out an operation moving data, carrying out a computation, or altering the control flow of instructions.

Data movement is typically from one place in memory to another. Sometimes it involves moving data between memory and registers which enable high-speed data access in the CPU. Moving data, especially large amounts of it, can be costly. So, this is sometimes avoided by using "pointers" to data instead. Computations include simple operations such as incrementing the value of a variable data element. More complex computations may involve many operations and data elements together.

Quality and reliability


Main articles: Software quality, Software testing, and Software reliability Software quality is very important, especially for commercial and system software like Microsoft Office, Microsoft Windows and Linux. If software is faulty (buggy), it can delete a person's work, crash the computer and do other unexpected things. Faults and errors are called "bugs." Many bugs are discovered and eliminated (debugged) through software testing. However, software testing rarely if ever eliminates every bug; some programmers say that "every program has at least one more bug" (Lubarsky's Law). All major software companies, such as Microsoft, Novell and Sun Microsystems, have their own software testing departments with the specific goal of just testing. Software can be tested through unit testing, regression testingand other methods, which are done manually, or most commonly, automatically, since the amount of code to be tested can be quite large. For instance, NASA has extremely rigorous software testing procedures for many operating systems and communication functions. Many NASA based operations interact and identify each other through command programs called software. This enables many people who work at NASA to check and evaluate functional systems overall. Programs containing command software enable hardware engineering and system operations to function much easier together.

License
Main article: Software license The software's license gives the user the right to use the software in the licensed environment. Some software comes with the license when purchased off the shelf, or an OEM license when bundled with hardware. Other software comes with a free software license, granting the recipient the rights to modify and redistribute the software. Software can also be in the form of freeware or shareware.

Patents
Main articles: Software patent and Software patent debate Software can be patented in some but not all countries; however, software patents can be controversial in the software industry with many people holding different views about it. The controversy over software patents is about specific algorithms or techniques that the software contains, which may not be duplicated by others and considered intellectual property andcopyright infringement depending on the severity.

Design and implementation


Main articles: Software development, Computer programming, and Software engineering

Design and implementation of software varies depending on the complexity of the software. For instance, design and creation of Microsoft Word software will take much more time than designing and developing Microsoft Notepad because of the difference in functionalities in each one. Software is usually designed and created (coded/written/programmed) in integrated development environments (IDE) like Eclipse, Emacs and Microsoft Visual Studio that can simplify the process and compile the program. As noted in different section, software is usually created on top of existing software and the application programming interface (API) that the underlying software provides like GTK , JavaBeans or Swing. Libraries (APIs) are categorized for different purposes. For instance, JavaBeans library is used for designing enterprise applications,Windows Forms library is used for designing graphical user interface (GUI) applications like Microsoft Word, and Windows Communication Foundation is used for designing web services. Underlying computer programming concepts like quicksort, hashtable, array, and binary tree can be useful to creating software. When a program is designed, it relies on the API. For instance, if a user is designing a Microsoft Windows desktop application, he/she might use the .NET Windows Forms library to design the desktop application and call its APIs likeForm1.Close() and Form1.Show()
[6]

application and write the additional operations him/herself that it need to have. Without these APIs, the programmer needs to write these APIs him/herself. Companies like Sun Microsystems, Novell, and Microsoft provide their own APIs so that many applications are written using their software libraries that usually have numerous APIs in them. Computer software has special economic characteristics that make its design, creation, and distribution different from most other economic goods.
[7][8]

a programmer, software engineer, software developer, or code monkey, terms that all have a similar meaning.

Industry and organizations


Main article: Software industry A great variety of software companies and programmers in the world comprise a software industry. Software can be quite a profitable industry: Bill Gates, the founder of Microsoft was the richest person in the world in 2009 largely by selling the Microsoft Windows and Microsoft Office software products. The same goes for Larry Ellison, largely through his Oracle databasesoftware. Through time the software industry has become increasingly specialized. Non-profit software organizations include the Free Software Foundation, GNU Project and Mozilla Foundation. Software standard organizations like the W3C, IETF develop software standards so that most software can interoperate through standards such as XML, HTML, HTTP or FTP. Other well-known large software companies include Novell, SAP, Symantec, Adobe Systems, and Corel, while small companies often provide innovation.

to close or open the

A person who creates software is called

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

Application software, also known as an application or an "app", is computer software designed to help the user to perform singular or multiple related specific tasks. Examples include enterprise software, accounting software, office suites, graphics softwareand media players. Many application programs deal principally with documents. Apps may be bundled with the computer and its system software, or may be pu blished separately. Some users are satisfied with the bundled apps and need never install one.

Application software is contrasted with system software and middleware, which manage and integrate a computer's capabilities, but typically do not directly apply them in the performance of tasks that benefit the user. The system software serves the application, which in turn serves the user. Similar relationships apply in other fields. For example, a shopping mall does not provide the merchandise a shopper is seeking, but provides space and services for retailers that serve the shopper. Rail tracks similarly support trains, allowing the trains to transport passengers. Application software applies the power of a particular computing platform or system software to a particular purpose. Some apps such as Microsoft Office are available in versions for several different platforms; others have narrower requirements and are thus called, for example, a Geography application for Windows or an Android application for education or Linux gaming. Sometimes a new and popular application arises which only runs on one platform, increasing the desirablity of that platform. This is called a killer application.
Contents
[hide]

1 Terminology 2 Application software classification 3 Information worker software

o o o o o

3.1 Content access software 3.2 Entertainment software 3.3 Educational software 3.4 Enterprise infrastructure software 3.5 Simulation software

o o

3.6 Media development software 3.7 Product engineering software

4 See also 5 References 6 External links

[edit]Terminology

In information technology, an application is a computer program designed to help people perform an activity. An application thus differs from an operating system (which runs a computer), a utility (which performs maintenance or general-purpose chores), and a programming language (with which computer programs are created). Depending on the activity for which it was designed, an application can manipulat e text, numbers, graphics, or a combination of these elements. Some application packages offer considerable computing power by focusing on a single task, such as word processing; others, called integrated software, offer somewhat less power but include several applications. [1] User-written software tailors systems to meet the user's specific needs. User-written software include spreadsheet templates, word processor macros, scientific simulations, graphics and animation scripts. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. The delineation between system software such as operating systems and application software is not exact, however, and is occasionally the object of controversy. For example, one of the key questions in the United States v. Microsoft antitrust trial was whether Microsoft's Internet Explorer web browser was part of its Windows operating system or a separable piece of application software. As another example, the GNU/Linux naming controversy is, in part, due to disagreement about the relationship between the Linux kernel and the operating systems built over this kernel. In some types of embedded systems, the application software and the operating system software may be indistinguishable to the user, as in the case of software used to control a VCR, DVD player or microwave oven. The above definitions may exclude some applications that may exist on some computers in large organizations. For an alternative definition of an app: see Application Portfolio Management.
[edit]Application

software classification

Application software falls into two general categories; horizontal applications and vertical applications. Horizontal Application are the most popular and its widely spread in departments or companies. Vertical Applications are designed for a particular type of business or for specific division in a company. There are many types of application software:


An application suite consists of multiple applications bundled together. They usually have related functions, features and user interfaces, and may be able to interact with each other, e.g. open each other's files. Business applications often come in suites, e.g. Microsoft Office, OpenOffice.org and iWork, which bundle together a word processor, a spreadsheet, etc.; but suites exist for other purposes, e.g. graphics or music. Enterprise software addresses the needs of organization processes and data flow, often in a large distributed environment. (Examples include financial systems, customer r elationship management (CRM) systems and supply-chain management software). Note that Departmental Software is a sub-type of Enterprise Software with a focus on smaller organizations or groups within a large organization. (Examples include Travel Expense Management and IT Helpdesk) Enterprise infrastructure software provides common capabilities needed to support enterprise software systems. (Examples include databases, email servers, and systems for managing networks and security.) Information worker software addresses the needs of individuals to create and manage information, often for individual projects within a department, in contrast to enterprise management. Examples include time management, resource management, documentation tools, analytical, and collaborative. Word processors, spreadsheets, email and blog clients, personal information system, and individual media editors may aid in multiple information worker tasks. Content access software is software used primarily to access content without editing, but may include software that allows for conten t editing. Such software addresses the needs of individuals and groups to consume digital entertainment and published digital content. (Examples include Media Players, Web Browsers, Help browsers and Games) Educational software is related to content access software, but has the content and/or features adapted for use in by educators or students. For

example, it may deliver evaluations (tests), track progress through ma terial, or include collaborative capabilities. Simulation software are computer software for simulation of physical or abstract systems for either research, training or entertainment purposes. Media development software addresses the needs of individuals who generate print and electronic media for others to consume, most often in a commercial or educational setting. This includes Graphic Art software, Desktop Publishing software, Multimedia Development software, HTML editors, Digital Animation editors, Digital Audio and Video composition, and many others. [2] Mobile applications ("Mobile apps") run on hand-held devices such as smart phones, tablet computers, portable media players, personal digital assistants and enterprise digital assistants : see mobile application development. Product engineering software is used in developing hardware and software products. This includes computer aided design (CAD), computer aided engineering (CAE), computer language editing and compiling tools, Integrated Development Environments, and Application Programmer Interfaces. A command-line interface is one in which you type in commands to make the computer do something. You have to know the commands and what they do, and type them correctly. DOS and Unix are examples of commanddriven interfaces. A graphical user interface (GUI) is one in which you select command choices from various menus, buttons and icons using a mouse. It is a userfriendly interface. Microsoft Windowsand Mac OS are both graphical user interfaces. A third party server side application that the user may choose to install in his or her account on a social media site or other Web 2.0 web site, for example a facebook app. worker software

Applications can also be classified by computing platform.


[edit]Information

   

Enterprise Resource Planning Accounting software Task and Scheduling Field service management

 

Data Management  Contact Management  Spreadsheet  Personal Database Documentation  Document Automation/Assembly  Word Processing  Desktop publishing software  Diagramming Software  Presentation software  E-mail  Blog Reservation systems Financial Software  Day trading software  Banking systems  Clearing systems  arithmetic software
access software

[edit]Content

Electronic media software  Web browser  Media Players  Hybrid editor players
software

[edit]Entertainment

  

Digital pets Screen savers Video Games  Arcade games  Video game console emulator  Personal computer games  Console games  Mobile games
software

[edit]Educational

 

Classroom Management Learning/Training Management Software

  

Reference software Sales Readiness Software Survey Management


infrastructure software

[edit]Enterprise

    

Business workflow software Database management system (DBMS) software Digital asset management (DAM) software Document Management software Geographic Information System (GIS) software
software

[edit]Simulation

Computer simulators  Scientific simulators  Social simulators  Battlefield simulators  Emergency simulators  Vehicle simulators  Flight simulators  Driving simulators  Simulation games  Vehicle simulation games
development software

[edit]Media

 

Image organizer Media content creating/editing  3D computer graphics software  Animation software  Graphic art software  Image editing software  Raster graphics editor  Vector graphics editor  Video editing software  Sound editing software  Digital audio editor  Music sequencer  Scorewriter  Hypermedia editing software

Web Development Software Game development tool




[edit]Product

engineering software

Hardware Engineering  Computer-aided engineering  Computer-aided design (CAD)  Finite Element Analysis Software Engineering  Computer Language Editor  Compiler Software  Integrated Development Environments  Game creation software  Debuggers  Program testing tools  License manager

[edit]

Middleware is computer software that connects software components or people and their applications. The software consists of a set of services that allows multiple processes running on one or more machines to interact. This technology evolved to provide for interoperability in support of the move to coherent distributed architectures, which are most often used to support and simplify complex distributed applications. It includes web servers, application servers, and similar tools that support application development and delivery. Middleware is especially integral to modern information technology based on XML, SOAP, Web services, and service-oriented architecture.

Middleware sits "in the middle" between application software that may be working on different operating systems. It is similar to the middle layer of a three-tier single system architecture, except that it is stretched across multiple systems or applications. Examples include EAI software, telecommunications software, transaction monitors, and messaging-andqueueing software. The distinction between operating system and middleware functionality is, to some extent, arbitrary. While core kernel functionality can only be provided by the operating system itself, some functionality previously provided by separately sold middleware is now integrated in operating systems. A typical

example is the TCP/IP stack for telecommun ications, nowadays included in virtually every operating system. In simulation technology, middleware is generally used in the context of the high level architecture (HLA) that applies to many distributed simulations. It is a layer of software that lies between the application code and the run-time infrastructure. Middleware generally consists of a library of functions, and enables a number of applications simulations or federates in HLA terminologyto page these functions from the common library rather than re create them for each application.
Contents [hide]

1 Definitions 2 Origins 3 Organizations 4 Use of middleware 5 Types of middleware

5.1 Message Oriented Middleware

5.1.1 Enterprise messaging system

  o o

5.1.1.1 Message broker

5.1.2 Enterprise Service Bus

5.2 Content-Centric Middleware 5.3 Hurwitz classification system

    o

5.3.1 Remote Procedure Call 5.3.2 Object Request Broker 5.3.3 SQL-oriented Data Access 5.3.4 Embedded middleware

5.4 Other

6 See also 7 References 8 External links

[edit]Definitions

Software that provides a link between separate software applications. Middleware is sometimes called plumbing because it connects two applications and passes data between them. Middleware allows data

contained in one database to be accessed through another. This definition would fit enterprise application integration and data integration software. ObjectWeb defines middleware as: "The software layer that lies between the operating system and applications on each side of a distributed computing system in a network." [1]
[edit]Origins

Middleware is a relatively new addition to the computing landscape. It gained popularity in the 1980s as a solution to the problem of how to link newer applications to older legacy systems, although the term had been in use since 1968. [2] It also facilitated distributed processing, the connection of multiple applications to create a larger application, usually over a network.
[edit]Organizations

IBM, Red Hat, and Oracle Corporation are major vendors providing middleware software. Vendors such as Axway, SAP, TIBCO, Informatica, Pervasive and webMethods were specifically founded to provide Web-oriented middleware tools. Groups such as the Apache Software Foundation, OpenSAF and the ObjectWeb Consortium (now OW2) encourage the development of open source middleware. Microsoft .NET Framework architecture is essentially Middleware with typical middleware functions distributed between the various products, with most inter -computer interaction by industry standards, open APIs or RAND software licence. Solace Systems provides middleware in purpose-built hardware for implementations that may experience scale or speed limitations when using software.
[edit]Use

of middleware

Middleware services provide a more functional set of application programming interfaces to allow an application to:


  

Locate transparently across the network, thus providing interaction with another service or application Filter data to make them friendly usable or public via anonymization process for privacy protection (for example) Be independent from network services Be reliable and always available Add complementary attributes like semantics

when compared to the operating system and network services. Middleware offers some unique technological advantages for business and industry. For example, traditional database systems are usually deployed in closed environments where users access the system only via a restricted network or intranet (e.g., an enterprises internal network). With the phenomenal growth of the World Wide Web, users can access virtually any database for which they have proper access rights from anywhere in the world. Middleware addresses the problem of varying levels of interoperability among different database structures. Middleware facilitates transparent access to legacy database management systems (DBMSs) or applications via a web server without regard to database-specific characteristics. [3] Businesses frequently use middleware applications to link information from departmental databases, such as payroll, sales, and accounting, or databases housed in multiple geographic locations. [4] In the highly competitive healthcare community, laboratories make extensive use of middleware applications for data mining, laboratory information system (LIS) backup, and to combine systems during hospital mergers. Middleware helps bridge the gap between separate LISs in a newly formed healthcare network following a hospital buyout. [5] Wireless networking developers can use middleware to meet the challenges associated with wireless sensor network (WSN), or WSN technologies. Implementing a middleware application allows WSN developers to integrate operating systems and hardware with the wide variety of various applications that are currently available. [6] Middleware can help software developers avoid having to write application programming interfaces (API) for every control program, by serving as an independent programming interface for their applications. For Future Internet network operation through traffic monitoring in multi-domain scenarios, using mediator tools (middleware) is a powerful help since they allowoperators, searchers and service providers to supervise Quality of service and analyse eventual failures in telecommunication services .[7] Finally, e-commerce uses middleware to assist in handling rapid and secure transactions over many different types of computer environments. [8] In short, middleware has become a critical element across a broad range of industries, thanks to its ability to bring together resources across dissimilar networks or computing platforms.

In 2004 members of the European Broadcasting Union (EBU) carried out a study of Middleware with respect to system integration in broadcast environments. This involved system design engineering experts from 10 major European broadcasters working over a 12 month period to understand the effect of predominantly software based products to media production and broadcasting system design techniques. The re sulting reports Tech 3300 and Tech 3300s were published and are freely available from the EBU web site.[9][10]
[edit]Types

of middleware
Oriented Middleware

[edit]Message

Message Oriented Middleware (MOM) is middleware where transactions or event notifications are delivered between disparate systems or components by way of messages, often via an enterprise messaging system. With MOM, messages sent to the client are collected and stored until they are acted upon, while the client continues with other processing.
[edit]Enterprise messaging system

An enterprise messaging system is a type of middleware that facilitates message passing between disparate systems or components in standard formats, often using XML, SOAP orweb services.
[edit]Message broker

Part of an enterprise messaging system, message broker software may queue, duplicate, translate and deliver messages to disparate systems or components in a messaging system.
[edit]Enterprise Service Bus

Enterprise Service Bus (ESB) is defined by the Burton Group [11] as "some type of integration middleware product that supports both MOM and Web services".
[edit]Content-Centric

Middleware

Content-centric middleware provides a simple provide/consume abstraction through which applications can issue requests for uniquely identified content, without worrying about where or how it is obtained. Juno[12] is one example, which allows applications to generate content requests associated with high level delivery requirements. The middleware then adapts the underlying delivery to access the content from the source(s) that are best suited to matching the requirements. This is therefore similar

to Publish/subscribe middleware, as well as theContent-centric networking paradigm.


[edit]Hurwitz

classification system

Judith Hurwitz created a classifi cation system for middleware in her article Sorting Out Middleware.[13]
[edit]Remote Procedure Call

With Remote Procedure Call middleware, a client makes calls to procedures running on remote systems. Can be asynchronous or synchronous.
[edit]Object Request Broker

With Object Request Broker middleware, it is possible for applications to send objects and request services in an object -oriented system.
[edit]SQL-oriented Data Access

SQL-oriented Data Access is middleware between applications and database servers.


[edit]Embedded middleware

Embedded middleware provides communication services and integration interface software/firmware that operates between embedded applications and the real time op.
[edit]Other

Other sources[citation needed] include these additional classifications:




Transaction processing monitors Provides tools and an environment to develop and deploy distributed applications.[citation needed] Application servers software installed on a computer to facilitate the serving (running) of other applications. [citation needed]

System Software
System software is a program that manages and supports the computer resources and operations of a computer system while it executes various tasks such as processing data and information, controlling hardware components, and allowing users to use application software. That is, systems software functions as a brid e between computer system hardware and the application software. System software is made up of many control programs, including the operating system, communications software and database manager. There are many kinds of computers these days. Some of them are easier to learn than others. Some of them

perform better than others. These differences may come from different systems software.

Three Kinds of Programs


Systems software consists of three kinds of programs. The system management programs, system support programs, and system development programs are they. These are explained briefly. System Management Programs These are programs that manage the application software, computer hardware, and data resources of the computer system. These programs include oper ating systems, operating environment programs, database management programs, and telecommunications monitor programs. Among these, the most important system management programs are operating systems. The operating systems are needed to study more details. There are two reasons. First, users need to know their functions first. For the second, there are many kinds of operating systems available today. Telecommunications monitor programs are additions of the operating systems of microcomputers. These programs provide the extra logic for the computer system to control a class of communications devices. System Support Programs These are the programs that help the operations and management of a computer system. They provide a variety of support services to let the computer hardware and other system programs run efficiently. The major system support programs are system utility programs, system performance monitor programs, and system security monitor programs (virus checking programs). System Development Programs These are programs that help users develop information system programs and prepare user programs for computer processing. These programs may analyze and design systems and program itself. The main system development programs are programming language translators, programming environment programs, computer-aided software engineering packages.

Operating Systems
An operating system is a collection of integrated computer programs that provide recurring services to other programs or to the user of a computer. Thes e services

consist of disk and file management, memory management, and device management. In other words, it manages CPU operations, input/output activities, storage resources, diverse support services, and controls various devices. Operating system is the most important program for computer system. Without an operating system, every computer program would have to contain instructions telling the hardware each step the hardware should take to do its job, such as storing a file on a disk. Because the operating system contains these instructions, any program can call on the operating system when a service is needed. Need to Study Operating System? There are many different computer systems and several available operating systems. Thus, users must know what each operating system can do and cannot do to meet their necessity. Today, many operating systems are used for general use or sometimes for specific use. Then, which one is best for a specific purpose? The reason that users need to study operating system is he re. The predominant microcomputer operating system for IBM and IBM -compatibles so far was DOS (Disk Operating System). It has different versions including MS DOS, PC-DOS and others. DOS is very popular and wide spread, but it has some limitations. Users need to learn DOS although it may fade out in a few years and has some weakness, because it will be used for the next several years. The other popular operating system was the Apple Macintosh operating system. As more powerful microcomputers become commonpla ce, more advanced operating systems are needed. Microcomputer users are beginning to demand more powerful operating system that can run powerful microcomputers more efficiently. Today's very powerful microcomputers are demanding more complex and refined operating system that can do multifunctions. They also ask an easier user interface than old operating systems did. Now, there are more than six popular operating systems, leading to the lack of a standard. The other reason that operating system should be learned is here. How the Operating System Uses Memory Here explains in case of DOS. When a personal computer is turned on, it searches specific locations on the disk drives for operating system files. If the PC finds the files, it loads the first of them into memory. A set of operating system files then takes over, loading the rest of the main files into memory in a specific order. Because the operating system is in a sense, loading itself or lifting itself by its own bootstraps, this operation is called the boot-up. At the lowest part of memory, the operating system loads a table of interrupt vectors. When the operating system receives special codes called interrupts, it uses the table to detect where in memory it can find matching instructions. DOS also uses a small area just above the interruption table to hold the BIOS data called 'flags' that record the state of various system conditions. The same area also acts as a buffer to store keystrokes that come in faster than the system can process them.

A large expanse of memory just above the BIOS flags and keyboard buffer is used for device drivers, utility programs, and application programs. When DOS reads the CONFIG.SYS and AUTOEXEC.BAT files, it looks for command lines to load drivers or memory-resident programs. Memory- resident programs are those that continue to be active even when application programs are running. When it finds such a command line, DOS normally puts the driver or program at the start of this large memory area. Device drivers usually remain loaded until the PC is turned off. Memory- resident programs can be unloaded if no other programs are loaded after them. Operating System Functions An operating system executes many functions to operate computer system efficiently. Among them, four essential functions are the followings.


Resource Management: An operating system manages a collection of computer hardware resources by using a variety of programs. It manages computer system resources, including its CPU, primary memory, virt al memory, secondary storage devices, input/output peripherals, and other devices. Task Management: The function of the operating system that controls the running of many tasks. It manages one program or many programs within a computer system simultaneously. That is, this function of operating system manages the completion of users' tasks. A task management program in an operating system provides each task and interrupts the CPU operations to manage tasks efficiently. Task management may involve a m ltitaskin capability. File management: This is a function that manages data files. An operating system contains file management programs that provide the ability to create, delete, enter, change, ask, and access of files of data. They also produce reports on a file. User Interface: It is a function of an operating system that allows users to interact with a computer. A user interface program may include a combination of menus, screen design, keyboard commands. A well-designed user interface is essential for an operating sys tem to be popular. Because of the function, users can load programs, access files, and accomplish other tasks.

Virtual Memory This is a technique for an operating system to manage memory. An operating system simulates significantly larger memory capability than the real memory capacity of its actual primary storage unit. It

allows computers to process larger programs than the physical memory circuit would allow. Multitasking This refers the capability of operating systems that runs several computing tasks in one computer at the same time. This is controlled by the task management program in an operating system. It s also called multiprogramming and multithreading.

Software documentation
rom

This artic e needs additional citations for verification. Please help improve this article by adding reliable re erences. Unsourced material may be challenged and removed. (August 2010)

Software ocumentation or source code documentation is written text that accompanies computer software. It either explains how it operates or how to use it, and may mean different things to people in different roles.
Contents
[hide]

1 Involvement of people in software life

o o o

1.3 Technical documentation 1.4 User documentation 1.5 Marketing documentation

2 Notes 3 See also 4 External links

[edit] Involvement

ocumentation is an important part of software engineering. Types of documentation include:

This is the foundation for what shall be or has been implemented. . Architecture/ esign

principles to be used in design of software components. . Technical

ocumentation of code, algorithms, interfaces, and APIs. anuals for the end-user, system administrators and support staff.

. End

s er

equirements Statements that identify attributes, capabilities, characteristics, or qualities of a system.

1.2 Architecture/ esign documentation

1.1 Re uirements documentation

ikipedia, the free encyclopedia

of people in software life

verview of software. Includes relations to an environment and construction

5. Marketing - How to market the product and analysis of the market demand. [edit]Requirements

documentation

Requirements documentation is the description of what a particular software does or shall do. It is used throughout development to communicate what the software does or shall do. It is also used as an agreement or as the foundation for agreement on what the software shall do. Requirements are produced and consumed by everyone involved in the production of software: end users, customers, product managers, project managers, sales, marketing, software architects, usability engineers, interaction designers, developers, and testers, to name a few. Thus, requirements documentation has many different purposes. Requirements come in a variety of styles, notations and formality. Requirements can be goal-like (e.g., distributed work environment), close to design (e.g., builds can be started by right-clicking a configuration file and select the 'build' function), and anything in between. They can be specified as statements in natural language, as drawn figures, as detailedmathematical formulas, and as a combination of them all. The variation and complexity of requirements documentation makes it a proven challenge. Requirements may be implicit and hard to uncover. It is difficult to know exactly how much and what kind of documentation is needed and how much can be left to the architecture and design documentation, and it is difficult to know how to document requirements considering the variety of people that shall read and use the documentation. Thus, requirements documentation is often incomplete (or non-existent). Without proper requirements documentation, software changes become more difficultand therefore more error prone (decreased software quality) and timeconsuming (expensive). The need for requirements documentation is typically related to the complexity of the product, the impact of the product, and the life expectancy of the software. If the software is very complex or developed by many people (e.g., mobile phone software), requirements can help to better communicate what to achieve. If the software is safety-critical and can have negative impact on human life (e.g., nuclear power systems, medical equipment), more formal requirements documentation is often required. If the software is expected to live for only a month or two (e.g., very small mobile phone applications developed specifically for a certain campaign) very little requirements documentation may be needed. If the software is a first release that is later built upon, requirements documentation is very helpful when managing the change of the software and verifying that nothing has been broken in the software when it is modified. Traditionally, requirements are specified in requirements documents (e.g. using word processing applications and spreadsheet applications). To manage the increased complexity and changing nature of requirements documentation (and software documentation in general), database-centric systems and specialpurpose requirements management tools are advocated. [edit] Architecture/Design

documentation

Architecture documentation is a special breed of design document. In a way, architecture documents are third derivative from the code (design document being second derivative, and code documents being first). Very little in the architecture documents is specific to the code itself. These documents do not describe how to program a

particular routine, or even why that particular routine exists in the form that it does, but instead merely lays out the general requirements that would motivate the existence of such a routine. A good architecture document is short on details but thick on explanation. It may suggest approaches for lower level design, but leave the actual exploration trade studies to other documents. Another breed of design docs is the comparison document, or trade study. This would often take the form of a whitepaper. It focuses on one specific aspect of the system and suggests alternate approaches. It could be at the user interface, code, design, or even architectural level. It will outline what the situation is, describe one or more alternatives, and enumerate the pros and cons of each. A good trade study document is heavy on research, expresses its idea clearly (without relying heavily on obtuse jargon to dazzle the reader), and most importantly is impartial. It should honestly and clearly explain the costs of whatever solution it offers as best. The objective of a trade study is to devise the best solution, rather than to push a particular point of view. It is perfectly acceptable to state no conclusion, or to conclude that none of the alternatives are sufficiently better than the baseline to warrant a change. It should be approached as a scientific endeavor, not as a marketing technique.

    

Database Designer Database Developer Database Administrator Application Designer Application Developer

When talking about Relational Database Systems, the document should include following parts:

Entity - Relationship Schema, including following information and their clear definitions:

    

Entity Sets and their attributes Relationships and their attributes Candidate keys for each entity set Attribute and Tuple based constraints

Relational Schema, including following information:

     

Tables, Attributes, and their properties Views Constraints such as primary keys, foreign keys, Cardinality of referential constraints Cascading Policy for referential constraints Primary keys

It is very important to include all information that is to be used by all actors in the scene. It is also very important to update the documents as any change occurs in the database as well.

[edit]Technical

documentation

This is what most programmers mean when using the term software documentation. When creating software, code alone is insufficient. There must be some text along with it to describe various aspects of its intended operation. It is important for the code documents to be thorough, but not so verbose that it becomes difficult to maintain them. Several How-to and overview documentation are found specific to the software application or software product being documented by API Writers. This documentation may be used by developers, testers and also the end customers or clients using this software application. Today, we see lot of high end applications in the field of power, energy, transportation, networks, aerospace, safety, security, industry automation and a variety of other domains. Technical documentation has become important within such organizations as the basic and advanced level of information may change over a period of time with architecture changes. Hence, technical documentation has gained lot of importance in recent times, especially in the software field. Often, tools such as Doxygen, NDoc, javadoc, EiffelStudio, Sandcastle, ROBODoc, POD, TwinText, or Universal Report can be used to auto-generate the code documentsthat is, they extract the comments and software contracts, where available, from the source code and create reference manuals in such forms as text or HTML files. Code documents are often organized into a reference guide style, allowing a programmer to quickly look up an arbitrary function or class. The idea of auto-generating documentation is attractive to programmers for various reasons. For example, because it is extracted from the source code itself (for example, throughcomments), the programmer can write it while referring to the code, and use the same tools used to create the source code to make the documentation. This makes it much easier to keep the documentation up-to-date. Of course, a downside is that only programmers can edit this kind of documentation, and it depends on them to refresh the output (for example, by running a cron job to update the documents nightly). Some would characterize this as a pro rather than a con. Donald Knuth has insisted on the fact that documentation can be a very difficult afterthought process and has advocated literate programming, writing at the same time and location as the source code and extracted by automatic means. Elucidative Programming is the result of practical applications of Literate Programming in real p rogramming contexts. The Elucidative paradigm proposes that source code and documentation be stored separately. This paradigm was inspired by the same experimental findings that produced Kelp. Often, software developers need to be able to create and access information that is not going to be part of the source file itself. Such annotations are usually part of several software development activities, such as code walks and porting, where third party source code is analysed in a functional way. Annotations can therefore help the developer during any stage of software development where a formal documentation system would hinder progress. Kelp stores annotations in separate files, linking the information to the source code dynamically. [edit]User

documentation

Unlike code documents, user documents are usually far more diverse with respect to the source code of the program, and instead simply describe how it is used. In the case of a software library, the code documents and user documents could be effectively equivalent and are worth conjoining, but for a general application this is not often true. Typically, the user documentation describes each feature of the program, and assists the user in realizing these features. A good user document can also go so far as to provide thorough troubleshooting assistance. It is very important for user documents to not be confusing, and for them to be up to date. User documents need not be organized in any particular way, but it is very important for them to have a thorough index. Consistency and simplicity are also very valuable. User documentation is considered to constitute a contract specifying what the software will do. API Writers are very well accomplished towards writing good user documents as they would be well aware of the software architecture and programming techniques used. See also Technical Writing. There are three broad ways in which user documentation can be organized.

1. Tutorial: A tutorial approach is considered the most useful for a new user, in which they are guided through each step of accomplishing particular tasks.[1] 2. Thematic: A thematic approach, where chapters or sections concentrate on one particular area of interest, is of more general use to an intermediate user. Some authors prefer to convey their ideas through a knowledge based article to facilitating the user needs. This approach is usually practiced by a dynamic industry, such as Information technology, where the user population is largely correlated with the troubleshooting demands [2],.[3] 3. List or Reference: The final type of organizing principle is one in which commands or tasks are simply listed alphabetically or logically grouped, often via cross-referenced indexes. This latter approach is of greater use to advanced users who know exactly what sort of information they are looking for. A common complaint among users regarding software documentation is that only one of these three approaches was taken to the near-exclusion of the other two. It is common to limit provided software documentation for personal computers to online help that give only reference information on commands or menu items. The job of tutoring new users or helping more experienced users get the most out of a program is left to private publishers, who are often given significant assistance by the software developer. [edit]Marketing

documentation

For many applications it is necessary to have some promotional materials to encourage casual observers to spend more time learning about the product. This form of documentation has three purposes:-

1. To excite the potential user about the product and instill in them a desire for becoming more involved with it. 2. To inform them about what exactly the product does, so that their expectations are in line with what they will be receiving. 3. To explain the position of this product with respect to other alternatives.

One good marketing technique is to provide clear and memorable catch hrases that exemplify the point we wish to convey, and also emphasi e the interoperability of the program with anything else provided by the manufacturer.

Programming tool
rom
edirected from Programming software)

ikipedia, the free encyclopedia

This article includes a list of references related reading or external links but its sources remain unclear because it lacks inline citations. Please improve this article by introducing more precise citations where appropriate. (August 2010)

A programming tool or software development tool is a program or application that software developers use to create, debug, maintain, or otherwise support other programs and applications. The term usually refers to relatively simple programs that c be combined together an to accomplish a task, much as one might use multiple handtools to fix a physical object.
Contents
[hide]

1 History 2 Categories 3 List of tools 4 IDEs 5 See also 6 References

[edit]

istory
l onm

The history of software tools began with the first computers in the early used linkers, loaders, and control programs. early
s q t r
[citation needed]

s with tools like grep, awk and make that were meant to be combined flexibly
u v

with pipes. The term software tools" came from the book of the same name by Brian Kernighan and P. . Plauger. Tools were originally simple and light weight. As some tools have been maintained, they have been integrated into more powerful integrated development environments I Es). These environments consolidate functionality into one place, sometimes increasing simplicity and productivity, other times sacrificing flexibility and extensibility. The workflow of I Es is routinely
x xw

Tools became famous with

ji

s that nix in the

contrasted with alternative approaches, such as the use of Unix shell tools with text editors like Vim and Emacs. The distinction between tools and applications is murky. For example, developers use simple databases (such as a file containing a list of important values) all the time as tools.[dubious
discuss]

However a full-blown database is usually thought of as an application in its own right.

For many years, computer-assisted software engineering (CASE) tools were sought after. Successful tools have proven elusive.[citation needed] In one sense, CASE tools emphasized design and architecture support, such as for UML. But the most successful of these tools are IDEs. The ability to use a variety of tools productively is one hallmark of a skilled software engineer.
[edit]Categories

Software development tools can be roughly divided into the following categories:
      

Performance analysis tools Debugging tools Static analysis and formal verification tools Correctness checking tools Memory usage tools Application build tools Integrated development environments

[edit]List

of tools

Software tools come in many forms:


    

Binary compatibility analysis: icheck, ABI Compliance Checker Bug Databases: Comparison of issue tracking systems - Including bug tracking systems Build Tools: Build automation, List of build automation software Code coverage: Code coverage Software code coverage tools. Software Diagnostics Code Sharing Sites: Freshmeat, Krugle, Sourceforge, GitHub. See also Code search engines.
y

Compilation and linking tools: GNU toolchain, gcc, Microsoft Visual Studio, CodeWarrior, Xcode, ICC
y

 

Debuggers: Debugger List of debuggers. See also Debugging. Development Productivity Tools: JRebel eliminates the build and redeploy phases of Java EE Development by mapping the project workspace directly to any type application server in real-time

Disassemblers: Generally reverse-engineering tools.

Documentation generators: Comparison of documentation generators, help2man, Plain Old Documentation, 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,
zz

duma, Insure

, Developer Edition. 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: Parsing Parser development software Performance analysis or profiling: List of performance analysis tool Refactoring Browser Revision control: List of revision control software, Comparison of revision control software Scripting languages: PHP, Awk, Perl, Python, REXX, Ruby, Shell, Tcl Search: grep, find Source code Clones/Duplications Finding: Duplicate code Tools Source code formatting: indent Source code generation tools: Automatic programming Implementations Static code analysis: List of tools for static code analysis Text editors: List of text editors, Comparison of text editors Unit testing: List of unit testing frameworks
{ {

[edit]IDEs

Integrated development environments (IDEs) combine the features of many tools into one package. They for example make it easier to do specific tasks, such as searching for content only in files in a particular project. IDEs may for example be used for development of enterpriselevel applications. Different aspects of IDEs for specific programming languages can be found in this comparison of integrated development environments.
[edit]See

also

  

Computer-aided software engineering tools Software development kit Configuration System

   

Software engineering and list of software engineering topics Software systems omputer science
}

Scripting language

[edit]

Application software
rom

ikipedia, the free encyclopedia

This article needs additional citations for verification. Please help improve this article by adding reliable references. Unsourced material may be challenged and removed. (February 2010)

Application software, also known as an application or an "app", is computer software designed to help the user to perform singular or multiple related specific tasks. Examples include enterprise software, accounting software, office suites, graphics

softwareand media players.

may be bundled with the computer and its system software, or may be published separately. Some users are satisfied with the bundled apps and need never install one. Application software is contrasted with system software and middleware, which manage and integrate a computer's capabilities, but typically do not directly apply them in the performance of tasks that benefit the user. The system software serves the application, which in turn serves the user.

OpenOffice.org

riter word processor.OpenOffice.org is a popular example of open sourceapplication software

Toolkits for

ser Innovation

any application programs deal principally withdocuments. Apps

Similar relationships apply in other fields. For example, a shopping mall does not provide the merchandise a shopper is seeking, but provides space and services for retailers that serve the shopper. Rail tracks similarly support trains, allowing the trains to transport passengers. Application software applies the power of a particular computing platform or system software to a particular purpose. Some apps such as Microsoft Office are available in versions for several different platforms; others have narrower requirements and are thus called, for example, a Geography application for Windows or an Android application for education or Linux gaming. Sometimes a new and popular application arises which only runs on one platform, increasing the desirablity of that platform. This is called a killer application.
Contents [hide]

1 Terminology 2 Application software classification 3 Information worker software

o o o o o o o

3.1 Content access software 3.2 Entertainment software 3.3 Educational software 3.4 Enterprise infrastructure software 3.5 Simulation software 3.6 Media development software 3.7 Product engineering software

4 See also 5 References 6 External links

[edit]Terminology

In information technology, an application is a computer program designed to help people perform an activity. An application thus differs from an operating system (which runs a computer), a utility (which performs maintenance or general-purpose chores), and a programming language (with which computer programs are created). Depending on the activity for which it was designed, an application can manipulate text, numbers, graphics, or a combination of these elements. Some application packages offer considerable computing power by focusing on a single task, such as word processing; others, called integrated software, offer somewhat less power but include several applications.[1] User-written software tailors systems to meet the user's specific needs. User-written software include spreadsheet templates, word processor macros,

scientific simulations, graphics and animation scripts. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. The delineation between system software such as operating systems and application software is not exact, however, and is occasionally the object of controversy. For example, one of the key questions in the United States v. Microsoft antitrust trial was whether Microsoft's Internet Explorer web browser was part of its Windows operating system or a separable piece of application software. As another example, the GNU/Linux naming controversy is, in part, due to disagreement about the relationship between the Linux kernel and the operating systems built over this kernel. In some types of embedded systems, the application software and the operating system software may be indistinguishable to the user, as in the case of software used to control a VCR, DVD player or microwave oven. The above definitions may exclude some applications that may exist on some computers in large organizations. For an alternative definition of an app: see Application Portfolio Management.
[edit]Application

software classification

Application software falls into two general categories; horizontal applications and vertical applications. Horizontal Application are the most popular and its widely spread in departments or companies. Vertical Applications are designed for a particular type of business or for specific division in a company. There are many types of application software:


An application suite consists of multiple applications bundled together. They usually have related functions, features and user interfaces, and may be able to interact with each other, e.g. open each other's files. Business applications often come in suites, e.g. Microsoft Office, OpenOffice.org and iWork, which bundle together a word processor, a spreadsheet, etc.; but suites exist for other purposes, e.g. graphics or music.

Enterprise software addresses the needs of organization processes and data flow, often in a large distributed environment. (Examples include financial systems, customer relationship management (CRM) systems and supply-chain management software). Note that Departmental Software is a sub-type of Enterprise Software with a focus on smaller organizations or groups within a large organization. (Examples include Travel Expense Management and IT Helpdesk)

Enterprise infrastructure software provides common capabilities needed to support enterprise software systems. (Examples include databases, email servers, and systems for managing networks and security.)

Information worker software addresses the needs of individuals to create and manage information, often for individual projects within a department, in contrast to enterprise management. Examples include time management, resource management, documentation tools, analytical, and collaborative. Word processors, spreadsheets, email and blog clients,

personal information system, and individual media editors may aid in multiple information worker tasks.


Content access software is software used primarily to access content without editing, but may include software that allows for content editing. Such software addresses the needs of individuals and groups to consume digital entertainment and published digital content. (Examples include Media Players, Web Browsers, Help browsers and Games)

Educational software is related to content access software, but has the content and/or features adapted for use in by educators or students. For example, it may deliver evaluations (tests), track progress through material, or include collaborative capabilities.

Simulation software are computer software for simulation of physical or abstract systems for either research, training or entertainment purposes.

Media development software addresses the needs of individuals who generate print and electronic media for others to consume, most often in a commercial or educational setting. This includes Graphic Art software, Desktop Publishing software, Multimedia Development software, HTML editors, Digital Animation editors, Digital Audio and Video composition, and many others.[2]

Mobile applications ("Mobile apps") run on hand-held devices such as smart phones, tablet computers, portable media players, personal digital assistants and enterprise digital assistants : see mobile application development.

Product engineering software is used in developing hardware and software products. This includes computer aided design (CAD), computer aided engineering (CAE), computer language editing and compiling tools, Integrated Development Environments, and Application Programmer Interfaces.

A command-line interface is one in which you type in commands to make the computer do something. You have to know the commands and what they do, and type them correctly.DOS and Unix are examples of command-driven interfaces.

A graphical user interface (GUI) is one in which you select command choices from various menus, buttons and icons using a mouse. It is a user-friendly interface. Microsoft Windowsand Mac OS are both graphical user interfaces.

A third party server side application that the user may choose to install in his or her account on a social media site or other Web 2.0 web site, for example a facebook app.

Applications can also be classified by computing platform.


[edit]Information

worker software

  

Enterprise Resource Planning Accounting software Task and Scheduling

 

Field service management Data Management


  

Contact Management Spreadsheet Personal Database

Documentation
      

Document Automation/Assembly Word Processing Desktop publishing software Diagramming Software Presentation software E-mail Blog

 

Reservation systems Financial Software


   

Day trading software Banking systems Clearing systems arithmetic software

[edit]Content

access software

Electronic media software


  

Web browser Media Players Hybrid editor players

[edit]Entertainment

software

  

Digital pets Screen savers Video Games


    

Arcade games Video game console emulator Personal computer games Console games Mobile games

[edit]Educational

software

    

Classroom Management Learning/Training Management Software Reference software Sales Readiness Software Survey Management

[edit]Enterprise

infrastructure software

    

Business workflow software Database management system (DBMS) software Digital asset management (DAM) software Document Management software Geographic Information System (GIS) software

[edit]Simulation

software

Computer simulators
    

Scientific simulators Social simulators Battlefield simulators Emergency simulators Vehicle simulators
 

Flight simulators Driving simulators

Simulation games


Vehicle simulation games

[edit]Media

development software

 

Image organizer Media content creating/editing


   

3D computer graphics software Animation software Graphic art software Image editing software
 

Raster graphics editor Vector graphics editor

 

Video editing software Sound editing software




Digital audio editor

Music sequencer


Scorewriter

Hypermedia editing software




Web Development Software

Game development tool

[edit]Product

engineering software

Hardware Engineering
  

Computer-aided engineering Computer-aided design (CAD) Finite Element Analysis

Software Engineering
      

Computer Language Editor Compiler Software Integrated Development Environments Game creation software Debuggers Program testing tools License manager

[edit]

Você também pode gostar