You are on page 1of 24

What is software (SW)?

SW is

notonly programs butalso all associated documentation, and configuration data

that make these programs operate correctly. Morespecifically, a SW system consists of


separate programs configuration files setting up these programs system documentation describing the structure of the system in good detail user documentation explaining how to use and operate the system.

3

Two Classes of SW Products


Generic products
These are stand-alone systems that are produced by a

development organization and sold on the open market to any customer who is able to buy them. Examples of this type of product include software for PCs such as databases, word processors, drawing packages, and project-management tools. It also includes so-called vertical applications designed for some specific purpose such as library information systems, accounting systems, or systems for maintaining dental records

Two Classes of SW Products


Custom or bespoke products
A software contractor develops the software especially

for that customer. Examples of this type of software include control systems for electronic devices, systems written to support a particular business process, and air traffic control systems.

An important difference between these types of

software is that, in generic products, the organization that develops the software controls the software specification. For custom products, the specification is usually developed and controlled by the organization that is buying the software.

What is Software Engineering (SE)?


SW engineering is an engineering discipline
from the early stage of system specification through to the maintenance of the system after it has started to be used. Engineering discipline
Engineers make things work. They apply theories, methods and
concerned with all aspects of SW production starting

tools where these are appropriate. However, they use them selectively and always try to discover solutions to problems even when there are no applicable theories and methods. Engineers also recognize that they must work t organizational and financial constraints so they look for solutions within these constraints.

What is Software Engineering (SE)?


All aspects of software production Software engineering is not just concerned with the technical processes of software development. It also includes activities such as software project management and the development of tools, methods and theories to support software production.

Difference between SE and Computer Science (CS)...?


Computer Science ...
... is concerned with theories and methods which establish a basis for computers and SW systems while ...

Software Engineering ...


... is concerned with the practical problems of producing SW.

CS is as essential for SW engineers as ...


... physics is for electrical or mechanical engineers.

Computer science theory, however, is often most

applicable to relatively small programs. Elegant theories of computer science cannot always be applied to large, complex problems that require a software solution.

The Pioneering Era (1955-1965)


New computers were coming out almost every year or two, rendering existing ones obsolete. Software people had to rewrite all their programs to run on these new machines. Programmers did not have computers on theirdesks and had to go to the "machine room".

The Pioneering Era - 2 were run by Jobs


signing up for machine time or by operational staff. putting punched cards for input into the machine's card readerand waiting for results to come back on the printer. The field was so new that the idea of management by schedule was non-existent. Making predictions of a project's completion date was almost impossible.

The Pioneering Era - 3


Computer hardware was application-specific. Scientific

and business tasks needed different machines. Due to the need to frequently translate old software to meet the needs of new machines, high-order languages like FORTRAN, COBOL, and ALGOL were developed.

10

The Pioneering Era - 4


Hardware vendors gave away systems software for free

as hardware could not be sold without software. A few companies sold the service of building custom software but no software companies were selling packaged software.

11

The Pioneering Era - 5


The notion of reuse flourished. As software was free, userorganizations commonly gave it away. Groups like IBM'sscientific user group SHARE offered catalogs of reusable components. Academiadid notyet teach the principles of computer science. Modular programming and data abstraction were already being used in programming.

12

The Stabilizing Era (1965-1980)


Thewhole job-queue system had been institutionalized and so programmers no longer ran their jobs except forpeculiarapplications like on-board computers. To handle the jobs, an enormous bureaucracy had grown uparound the central computercenter. The majorproblem as a result of this bureaucracy was turnaround time, the time between job submission and completion. At worst itwas measured in days.
13

The Stabilizing Era - 2


IBM 360 signaled the beginning of the stabilizing era. Largestsoftware project to date ending the era of a fasterand cheaper

computer emerging every yearor two. Software people could finally spend timewriting new software instead of rewriting the old. The 360 also combined scientific and business applications ontoone machine. It offered both binary and decimal arithmetic. With the advent of the 360, the organizational separation between scientific and businessapplication people came to diminish and this had a massive impact on the sociologyof the field. Scientific programmers who usually had bachelor degrees felt superior to business programmers who usually held only associatedegrees. One scientific programmer remarked: "I don't mind working with business programmers, but I wouldn't want my daughter to marry one!"

14

The Stabilizing Era - 3


The massive O/S, still coming largely freewith the computer, controlled most of the services that a running program needed. The job control language JCL raised a whole new class of problems. Theprogrammer had to write theprogram in a whole new language to tell the computerand OS what to do. JCLwas the least popularfeature of the 360. PL/I, introduced by IBM to mergeall programming languages into one, failed. Thedemand forprogrammers exceeded the supply.
15

The Stabilizing Era - 4


The notion of timesharing, using terminals at which jobs could bedirectly submitted to queues of various kindswas beginning to emerge, meeting withsome resistance from traditionalists. As thesoftware field stabilized, software becamea corporateasset and itsvalue became huge. Stability lead to theemergenceof academic computing disciplines in the late 60's.
16

The Stabilizing Era - 5


Many high-hype disciplines like Artificial Intelligence came intoexistence. As these new conceptscould not be converted into predicted benefits, thecredibilityof thecomputing field began to diminish. "Structured Programming" burst on the scene in the middle of this era. Standards organizations became control battle grounds. Thevendorwhodefined thestandards could gain significantcompetitiveadvantage by making thestandards match theirown technology.
17

The Stabilizing Era - 6


Although hardware vendors tried to put a brake on the software industry by keeping their prices low, software vendors emerged a few at a time. Most customized applications continued to be done inhouse. Programmers still had to go to the "machine room" and did not have computers on theirdesks.

18

The Micro Era (1980-Present)


The price of computing has dropped dramatically making ubiquitous computing (i.e., computing everywhere) possible. Now every programmer can

have a computer on his desk. The old JCL has been replaced by the user-friendly GUI.

19

The Micro Era - 2


The field still has its problems. Thesoftware part of the hardwarearchitecture that the programmer must knowabout, such as the instruction set, has notchanged much since theadventof the IBM mainframeand the first Intel chip. The most-used programming languages today are between 15 and 40 years old. The Fourth Generation Languages neverachieved the dream of "programming without programmers" and the idea is pretty much limited to report generation from databases. There isan increasing clamorthough for moreand better softwareresearch.
20

21

You might also like