Difference between Computer
Science and Software Engineering
The
science concerned with putting scientific knowledge to practical use. Webster’s
Dictionary
There
are many engineering fields like electrical, mechanical and civil engineering.
All these branches of engineering are based on physics. Physics itself is not
engineering but the use of physics in making buildings, electronic devices and
machines is engineering. When we use physics in constructing buildings then it
is called civil engineering. When we use physics in making machines like
engines or cars then it is called mechanical engineering. And when we apply the
knowledge of physics in developing electronic devices then the process is called
electrical engineering. The relation of computer science with software
engineering is similar as the relation of physics with the electrical,
mechanical or civil engineering or for that matter the relation of any basic
science with any engineering field. So in this context we can define software
engineering as: ”This is the process of utilizing our knowledge of computer
science in effective production of software systems.”
Software Crisis
What is Software Crisis?
Computer systems were very new and primitive in early
fifties and the use of software was also very limited at that time. It was
limited to some scientific applications or used to process the data of census.
In 1960s a great amount of rapid improvement was made in hardware. New hardware
and new computer systems were made available. These computer systems were far
more powerful than the computers of early fifties. It is all relative, the
computers of 1960s are primitive as compare to the computers we have these days
but were far more powerful than the computers of early fifties. More powerful
hardware resulted into the development of more powerful and complex software.
Those very complex software was very difficult to write. So the tools and
techniques that were used for less complex software became inapplicable for the
more complex software. Lets try to understand this with the help of an example.
Let’s imagine a person who use to live in a village and who
have constructed a hut for him to live. Definitely he should have face some
problems in the beginning but was managed to build a hurt for him. Now if you
ask him to construct another hut, he may be able to construct one more easily
and in a better way. This new hut may be better than the first one and he may
construct it in a relatively less time. But if you ask him to construct
concrete and iron houses then he may not be able to handle it. Since he made a
hut and he know how to make a place to live so you may expect from him to build
concrete and iron buildings. If this is the case then you should all agree that
the building constructed by that person will not have a stable structure or he
may not even be able to build one.
In early 60s software had suffered from the similar kind of
problem to which we call Software Crisis. Techniques that were used to develop
small software were not applicable for large software systems.
Evaluating the
Quality of an Object-Oriented Design
Judging the quality of a design is difficult. We can however
look at certain objectoriented design attributes to estimate its quality. The
idea is to analyze the basic principle of encapsulation and delegation to judge
whether the control is centralized or distributed, hence judging the coupling
and cohesion in a design. This will tell us how maintainable a design is.
You may also recall our earlier discussion of coupling and
cohesion. It can be easy to see that OO design yield more cohesive and loosely
coupled systems.
0 Comments
Please do not enter any spam link in the comment box.