Software Engineering:
What is the difference between computer science, computer
engineering and software engineering?
The three programs have common elements: they all stress an
understanding of both digital hardware and software, though to varying
degrees, and they all hone students' problem-solving skills. As well,
graduates of all three programs may compete for some of the same jobs.
However, the programs have different objectives.
Computer Engineering (CE) deals with designing, developing, and
operating computer systems. At its core, Computer Engineering
concentrates on digital hardware devices and computers, and
the software that controls them. Advanced courses focus on
standard designs and techniques for specific application domains. In
contrast to CS and SE, Computer Engineering emphasizes
solving problems in digital hardware and at the hardware-
software interface.
Computer Science (CS) focuses on understanding, designing, and
developing programs and computers. At its core, Computer Science
concentrates on data, data transformation, and algorithms.
Advanced courses present specialized programming techniques and
specific application domains. The CS program is less structured
than the CE and SE programs, giving students more flexibility
to build depth or breadth in a variety of application domains or
in the fundamentals of Computer Science.
Software Engineering (SE) deals with building and maintaining
software systems. It is more software-oriented and has a
greater emphasis on large software applications than Computer
Engineering. It is more applied than Computer Science, placing
greater emphasis on the entire software development process, from
idea to final product. It is also more disciplined than Computer
Science, applying more systematic practices to help ensure that
products are reliable and safe.
Software Engineering separately consists of two words that are Software and
Engineering.
To understand Software Engineering we have to understand what is software?
And what is engineering? First
Who does it? Software engineers build it, and virtually everyone in the
industrialized world uses it either directly or indirectly.
Why is it important? Because it affects nearly every aspect of our lives
and has become pervasive in our commerce, our culture, and our everyday
activities. Example Railway Reservation System, Who uses this system? user
and developer both
What are the steps? You build computer software like you build any
successful product, by applying a process that leads to a high-quality result
that meets the needs of the people who will use the product. You apply a
software engineering approach.
What is the work product? From the point of view of a software engineer,
the work product is the programs, documents, and data that are computer
software. But from the user’s viewpoint, the work product is the resultant
information that somehow makes the user’s world better.
What is software:-
Software:
It refers to a program or set of programs and applications used to manage and
control various functions of a device such as a computer, unlike hardware, which
represents a physical part of a device, software is virtual.
or
Computer program and associated documentation. Software products may be
developed for a particular customer or maybe developed general market. By Ian
Somerville.
or
Software is-
1) Computer program that when executed provide desired features functions and
performance.
2) Data structure that enable the program to adequately manipulate information,
and
3) Detective information in both hard copy and virtual form that describes the
operation and use of program. By Rogers pressman.
Software:
It is more than just a program code. A program code which serves some
computational purpose. Software is considered to be collection of executable
programming codes, associated libraries and documentation.
Software, when made for a specific requirement is called Software Product.
What is engineering?
Engineering is all about developing products, using well defined, scientific
methods and principles.
Engineering in the application of scientific knowledge problem in Real world.
What is software engineering?
It is an Engineering branch associated with the development of software product
using well-defined scientific principles, method, and procedure. The outcome of
software engineering is an efficient and reliable software product.
So now in brief:
Engineering forces us to focus on Systematic, scientific and well defined
processes to produce "A Good Quality Product."
The application of a Systematic, Disciplined, Quantifiable approach, to the
development, operation and maintenance of software, and the study of these
approaches, that is the application of Engineering to software.
Program versus Software Product: Software as a dual Role
Today, software takes on a dual role. It is a product and, at the same time,
the vehicle for delivering a product.
As a product, it delivers the computing potential to hardware or
Enables hardware to deliver expected functionality or acts as
information transformer i.e.
Business Information e.g. query retrieval software based on market
data and personal Information e.g. Salary cheque generation.
As the vehicle used to deliver the product it helps in creation and
control of other programs. Eg. Operating System.
Program versus Software
Programs
Operating
Documentation Procedure
Software = Program + Documentation + Operating Procedures
Size:-
Programs:- they are usually small in size. They are lines of code or maybe 100 to
2000 lines codes on little more.
Software Product: Very big inside. The lines of codes are in thousands To lacs
maybe more, depends on Software Product.
Documentations:-
Programs:-There is no documentation or lack in documentation.
Software Product:- Proper documentation and well documented and user manual
prepared.
User:-
Programs:- Developer himself is sole user.
Software Product: Large or vast number of users.
Developer:-
Programs: Single developer or maybe 2 developer make a program.
Software Product: A proper and well trained team of developer indulge in
development.
User interface:-
Programs: There is no or lacks proper user interface.
Software Products: There is proper and full well designed user interface.
Development
Programs: - Unplanned, not Systematic i.e., ad hoc development.
Software Product: A well Systematic, organized, planned approach is used in
development.
Functionality:-
Programs: That provides Limited functionality and less features.
Software Products: It provides more functionality as they are big in size (lines of
codes) more options and features are provided.
Emergence of Software Engineering
History and Need of Software Engineering:
More focus on Hardware:- In early days of computing the primary concern was
that building or acquiring the hardware. If the software did not work, people
thought, it would be easy enough to change it until it did work. In that case, why
make the effort to plan?
Software cost consideration: The cost of software amounted to such a small
fraction of the cost of the hardware that no one considered it very important to
manage it development. People time was assume to save machine time. Making the
people process efficient received little priority.
Meeting people expectation:- when computing matured, programs become more
Complex and larger. A team effort is required for program to be routinely specified,
written, operated, and maintained so people's expectations would be fulfilled.
Exceeded cost: As program become large and complex and the time required to
write program and their costs began to exceed to all estimates.
Time development: Programmer started to take weeks, months or years longer
than expected to complete. The systems turned over the client frequently did not
work correctly because the money or time had run out before the program could be
made to work as originally intended.
Us military, several million dollar project was abandoned due to it could
never be made to work properly.
Quality concern: As computers and their programs were used for more vital tasks
like monitoring life support equipment, program quality also become new concern.
Change- expensive: Making a change within a complex program turned out to be
very expensive. It was quite easier to throw a program then to expect from program
to do thing different slightly.
Fast and Rapid change in hardware and software: As tubes were replaced by
transistors-> integrated circuits. The cost of hardware which had to be increased
was getting low. The time and cost to develop the software were no longer so small,
compared to hardware, that they could be ignored.
Wrong analysis of client requirements: Programmers were often thought they
had understood the client requirement. Once the program has been written, the
client begins to express distract dissatisfaction.
No satisfactory system: Unfortunately, until several years ago no good method of
representation existed to describe satisfactorily systems as complex as those that
are being developed today.
Software Crisis
There is lots of meaning of term software crisis. First of all we go in history and what
was the scenario at that time.
Hardware Oriented World: There was more focus on the hardware and
software as people were more focusing on that how instructions can be
executed fast. Not on how bugs should be removed frequently.
Cost: Hardware vs. Software
Rapid increase in software cost and Rapid fall in hardware cost need more
resources and well defined and systematic model for software development.
Inexperienced Developer
Developer were hardly one year of experienced old so quite difficult for them
to fulfill all coding based requirement.
Failures in Big project
Big failure in project cost government billions of dollars like
1) the North East blackout in 2003- has been major power system failures in the
history of north which involves 100 power plants, 50 million customer faced
problem, $ 6 million dollar financial loss.
2) Year 2000(Y2k) refers to the widespread snags in processing date after the
Year 2000. In 1960-80 when shortened the four digit date format like 1972 to a 2
digit format like 72 because of "Limited Memory. Because of that 2000 was
shortened to 00. Million dollar were spent to handle this problem.
3) Arian- 5 Space Rocket: In 1996, developed at cost of $7000 Million Dollars
over a period of 10 years was destroyed within less than 1 minute after its launch.
As there was software bugs in rocket guidance system.
4) "Dollar 924 lakhs": In 1996, US bank credit accounts of nearly 800 customer
with dollar 924 lakhs. This problem was due to main programming bug in the
banking system.
5)1991 during Gulf War, The USA use patriot missiles as a defence against Iraqi
scud missile. However, patriot failed to hit the scud many times with cost life of 28
USA soldiers .In an inquiry it is found that a small bug had resulted in
miscalculation of missile path.
User changing requirement:
As user changes its requirement slightly as world and technology
changing rapidly.
What is Software Crisis:
The difficulty of writing the code for a computer program which is correct and
understandable is referred to as software crisis or Software crisis is also referred as
inability to hire enough qualified programmers.