Software Engineering
Introduction
This course is a continuation of the first course on Software Engineering. In order to
set the context of our discussion, let us first look at some of the definitions of software
engineering.
Software Engineering is the set of processes and tools to develop software. Software
Engineering is the combination of all the tools, techniques, and processes that used in
software production. Therefore Software Engineering encompasses all those things
that are used in software production like:
• Programming Language
• Programming Language Design
• Software Design Techniques
• Tools
• Testing
• Maintenance
• Development etc.
So all those thing that are related to software are also related to software engineering.
Some of you might have thought that how programming language design could be
related to software engineering. If you look more closely at the software engineering
definitions described above then you will definitely see that software engineering is
related to all those things that are helpful in software development. So is the case with
programming language design. Programming language design is one of the major
successes in last fifty years. The design of Ada language was considered as the
considerable effort in software engineering.
These days object-oriented programming is widely being used. If programming
languages will not support object-orientation then it will be very difficult to
implement object-oriented design using object-oriented principles. All these efforts
made the basis of software engineering.
Well-Engineered Software
Let’s talk something about what is well-engineered software. Well-engineered
software is one that has the following characteristics.
• It is reliable
• It has good user-interface
• It has acceptable performance
• It is of good quality
• It is cost-effective
Every company can build software with unlimited resources but well-engineered
software is one that conforms to all characteristics listed above
set the context of our discussion, let us first look at some of the definitions of software
engineering.
Software Engineering is the set of processes and tools to develop software. Software
Engineering is the combination of all the tools, techniques, and processes that used in
software production. Therefore Software Engineering encompasses all those things
that are used in software production like:
• Programming Language
• Programming Language Design
• Software Design Techniques
• Tools
• Testing
• Maintenance
• Development etc.
So all those thing that are related to software are also related to software engineering.
Some of you might have thought that how programming language design could be
related to software engineering. If you look more closely at the software engineering
definitions described above then you will definitely see that software engineering is
related to all those things that are helpful in software development. So is the case with
programming language design. Programming language design is one of the major
successes in last fifty years. The design of Ada language was considered as the
considerable effort in software engineering.
These days object-oriented programming is widely being used. If programming
languages will not support object-orientation then it will be very difficult to
implement object-oriented design using object-oriented principles. All these efforts
made the basis of software engineering.
Well-Engineered Software
Let’s talk something about what is well-engineered software. Well-engineered
software is one that has the following characteristics.
• It is reliable
• It has good user-interface
• It has acceptable performance
• It is of good quality
• It is cost-effective
Every company can build software with unlimited resources but well-engineered
software is one that conforms to all characteristics listed above
Software has very close relationship with economics. When ever we talk about
engineering systems we always first analyze whether this is economically feasible or
not. Therefore you have to engineer all the activities of software development while
keeping its economical feasibility intact.
The major challenges for a software engineer is that he has to build software within
limited time and budget in a cost-effective way and with good quality
Therefore well-engineered software has the following characteristics.
• Provides the required functionality
• Maintainable
• Reliable
• Efficient
• User-friendly
• Cost-effective
But most of the times software engineers ends up in conflict among all these goals. It
is also a big challenge for a software engineer to resolve all these conflicts.
engineering systems we always first analyze whether this is economically feasible or
not. Therefore you have to engineer all the activities of software development while
keeping its economical feasibility intact.
The major challenges for a software engineer is that he has to build software within
limited time and budget in a cost-effective way and with good quality
Therefore well-engineered software has the following characteristics.
• Provides the required functionality
• Maintainable
• Reliable
• Efficient
• User-friendly
• Cost-effective
But most of the times software engineers ends up in conflict among all these goals. It
is also a big challenge for a software engineer to resolve all these conflicts.
The Balancing Act!
Software Engineering is actually the balancing act. You have to balance many things
like cost, user friendliness, Efficiency, Reliability etc. You have to analyze which one
is the more important feature for your software is it reliability, efficiency, user
friendliness or something else. There is always a trade-off among all these
requirements of software. It may be the case that if you try to make it more userfriendly
then the efficiency may suffer. And if you try to make it more cost-effective
then reliability may suffer. Therefore there is always a trade-off between these
characteristics of software.
These requirements may be conflicting. For example, there may be tension among the
following:
• Cost vs. Efficiency
• Cost vs. Reliability
• Efficiency vs. User-interface
A Software Engineer is required to analyze these conflicting entities and tries to strike
a balance
to download this course click here
like cost, user friendliness, Efficiency, Reliability etc. You have to analyze which one
is the more important feature for your software is it reliability, efficiency, user
friendliness or something else. There is always a trade-off among all these
requirements of software. It may be the case that if you try to make it more userfriendly
then the efficiency may suffer. And if you try to make it more cost-effective
then reliability may suffer. Therefore there is always a trade-off between these
characteristics of software.
These requirements may be conflicting. For example, there may be tension among the
following:
• Cost vs. Efficiency
• Cost vs. Reliability
• Efficiency vs. User-interface
A Software Engineer is required to analyze these conflicting entities and tries to strike
a balance
to download this course click here
No comments:
Post a Comment