Software is more than program. It consists of programs, documentations of any facet of the program and the procedures used to setup and operate the software system. The components of the software system are shown in the figure (1).
Software: - programs + Documentations + Operating Procedures
Any program is the subset of software and it becomes software only if documentation and operating procedures manuals are prepared. Program is the combination of source & object code. Documentation consists of different types of manuals as shown below:-
Operating procedures consists of instruction to setup and use the software system and instruction on how to react to system failure. List of operating procedures manuals is shown in
the figure (3).
Software crisis is the state of existing software which is not able to function in current environment due to changes in environment.
Factors contributing to software crisis:-
1) Changes in data format .E.g.:- Y2Kproblem.
(2) Software project management in many organizations is still amateurish and very few tools or techniques are used even for managing very large software projects.
(3) Documentation continues to be considered a bad job as a result of which if problem leaves in the middle of a project, it is difficult for others to continue the work.
(4) One of the main reasons for software crisis is lack of thrust for software testing. It is the test engineers who can contribute significantly to the software quality.
Examples of the software crisis are:-
Y2Kproblem, patriot problem, Ariane-5
The Birth of Software Engineering
During the initial days of computing, software development organizations didn?t use the systematic methodology for the development. The software development was considered as coding, though coding forms a very small percentage of total development effort. This non systematic approach led to the ?software crisis?.
In the year 1968, a conference sponsored by the NATO (North Atlantic Treaty Organization) science committee addressed the ?software crisis? that was prevailing in those days. The outcome of the discussions in that conference was ?software development is not an art; it has to fall in the realm of engineering?. The term ?software engineering? was introduced in this conference.
Basically software engineering defines a disciplined approach to software development .IEEE standards [IEEE 1990] defines software engineering as ?the application of a systematic, disciplined, quantitative approach to the development, operation and maintenance of software i.e. the application of engineering to software?.
According to software engineering, before starting the coding, one has to systematically approach the problem, one has to understand the requirements (what the software is supposed to do), carry out the design, do the coding, carry out the rigorous testing and if the software as per the requirements, release the software to the customer, subsequently, if the customer wants some changes-requirements or enhancements-then the software has to be modified.
Software applications are grouped into eight areas for convenience as shown in the figure (4).
(i) System Software: - Infrastructure softwares come under this category like compliers, operating systems, editor drivers etc. Basically system software is collection of programs to provide service to other programs.
(ii) Real Time Software: - This software is used to monitor, control and analyze real world events as they occur. An example may be software required for weather forecasting. Such software will gather and process the status of temperature, humidity and other environmental parameters to forecast the weather.
(iii) Embedded Software: - This type of software is placed in ?READ ONLY MEMORY?
of the product and control the various functions of the product. The product could be an aircraft, automobile, secaurity system, signaling system, control unit of power plants, etc.The embedded software handles hardware components and is also termed as intelligent software.
(iv) Business Software: - This is the largest application area. The software designed to process business application is called business software. Business software could be payroll, file monitoring system, employee management and account management. It may also be a data warehousing tool which helps us to take decisions based on available data.
(v) Personal Computer Software: - The software used in personal computers is covered in this category. Examples are word processors, computer graphics, multimedia and animating tools, database management, computer games etc. This is a very upcoming area and many big organizations are concentrating their effort here due to large customer base.
(vi) Artificial Intelligence Software: - Artificial intelligence software makes use of nonnumeric algorithm to solve complex problems that are not amenable to computation or straight forward analysis [PRESOI]. Examples are expert system, artificial neural network, signal processing software etc.
(vii) Web Based Software: - The software related to web application come under this category. Examples are CGI, HTML, JAVA, PERL, DHTML etc.
(viii) Engineering and Science Software: - Scientific and engineering application softwares are grouped in this category. Huge computing is normally required to process data. Examples are CAD/CAM packages, SPSS, MATLAB, Engineering pro, circuit analyzers etc.
Process-oriented software development
To make the project successful, software development can?t be done on an ad hoc basis. Without a process orientation, development leads to fire-fighting resulting in chaos. A process under which a software development takes place is called software process which is must for a project to be successful.
As shown in figure (5) to develop a product, a process is defined. The process takes the raw as input and produces a finished product.
The process defines the various steps (or stages) to be followed to convert the raw material into the finished product. For example, to manufacture a car, the process defines the step-by-step procedure to assemble the various parts such as the chassis, engine, steering, tyres etc.
In case of software, there is no raw material (rather, the human brain is the raw material). As shown figure (6), the software process takes the problem definition as input and produces the software product.
As software development is a highly intellectual activity, it is very difficult to define precisely the software process. The process of software development is divided into various phases and in each phase; a set of activities is carried out to arrive at the end product.
download the full report