logo

Table of Content CS605 Software Engineering-II VU Lectures

178 Pages60168 Words399 Views
   

Added on  2022-01-23

About This Document

CS605 Software Engineering-II CS605 Software Engineering-II VU Table of Content Table of Content.2 Lecture No. 40140 Copy Right Virtual University of Pakistan 2 CS605 Software Engineering-II VU Lecture No. 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. 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

Table of Content CS605 Software Engineering-II VU Lectures

   Added on 2022-01-23

ShareRelated Documents
CS605
Software Engineering-II
Table of Content CS605 Software Engineering-II VU Lectures_1
CS605 Software Engineering-II VU
Table of Content
Table of Content...................................................................................................................2
Lecture No. 1........................................................................................................................4
Lecture No. 2......................................................................................................................12
Lecture No. 3......................................................................................................................14
Lecture No. 4......................................................................................................................18
Lecture No. 5......................................................................................................................23
Lecture No. 6......................................................................................................................27
Lecture No. 7......................................................................................................................32
Lecture No. 8......................................................................................................................35
Lecture No. 9.....................................................................................................................37
Lecture No. 10....................................................................................................................41
Lecture No. 11....................................................................................................................46
Lecture No. 12....................................................................................................................65
Measures, Metrics and Indicators......................................................................................65
Metrics for software quality...............................................................................................66
Lecture No. 13....................................................................................................................67
Lecture No. 14....................................................................................................................71
Baseline..............................................................................................................................72
Metrics for small organizations..........................................................................................72
Lecture No. 15....................................................................................................................75
Lecture No. 16....................................................................................................................78
Lecture No. 17....................................................................................................................80
Lecture No. 18....................................................................................................................84
Lecture No. 19....................................................................................................................85
Lecture No. 20....................................................................................................................88
Lecture No. 21....................................................................................................................92
Lecture No. 22....................................................................................................................95
Lecture No. 23....................................................................................................................99
Lecture No. 24..................................................................................................................100
Lecture No. 25..................................................................................................................102
Lecture No. 26..................................................................................................................104
Lecture No. 27..................................................................................................................106
Lecture No. 28..................................................................................................................109
Lecture No. 29..................................................................................................................112
Lecture No. 30..................................................................................................................114
Lecture No. 31..................................................................................................................117
Lecture No. 32..................................................................................................................118
Lecture No. 33..................................................................................................................119
Lecture No. 34..................................................................................................................122
Release Numbering..........................................................................................................122
Internal Release Numbering.............................................................................................122
Lecture No. 35..................................................................................................................124
Lecture No. 36..................................................................................................................127
Lecture No. 37..................................................................................................................132
Lecture No. 38..................................................................................................................134
Lecture No. 39..................................................................................................................137
Lecture No. 40..................................................................................................................140
© Copy Right Virtual University of Pakistan 2
Table of Content CS605 Software Engineering-II VU Lectures_2
CS605 Software Engineering-II VU
Lecture No. 41..................................................................................................................141
Lecture No. 42..................................................................................................................142
Lecture No. 43..................................................................................................................153
Lecture No. 44..................................................................................................................168
Lecture No. 45..................................................................................................................172
© Copy Right Virtual University of Pakistan 3
Table of Content CS605 Software Engineering-II VU Lectures_3
CS605 Software Engineering-II VU
Lecture No. 1
Introduction to Software Engineering
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
© Copy Right Virtual University of Pakistan 4
Table of Content CS605 Software Engineering-II VU Lectures_4
CS605 Software Engineering-II VU
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.
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 user-friendly 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.
Challenge is to balance these requirements.
Software Engineers always confront with the challenge to make a good balance of all
these tings depending on the requirements of the particular software system at hand. He
© Copy Right Virtual University of Pakistan 5
Table of Content CS605 Software Engineering-II VU Lectures_5
CS605 Software Engineering-II VU
should analyze how much weight should all these things get such that it will have
acceptable quality, acceptable performance and will have acceptable user-interface.
In some software the efficiency is more important and desirable. For example if we talk
about a cruise missile or a nuclear reactor controller that are droved by the software
systems then performance and reliability is far more important than the cost-effectiveness
and user-friendliness. In these cases if your software does not react within a certain
amount of time then it may result in the disaster like Chernobyl accident.
Therefore software development is a process of balancing among different characteristics
of software described in the previous section. And it is an art to come up with such a good
balance and that art can be learned from experience.
Law of diminishing returns
In order to understand this concept lets take a look at an example. Most of you have
noticed that if you dissolve sugar in a glass of water then the sweetness of water will
increase gradually. But at a certain level of saturation no more sugar will dissolved into
water. Therefore at that point of saturation the sweetness of water will not increase even if
you add more sugar into it.
The law of diminishing act describes the same phenomenon. Similar is the case with
software engineering. Whenever you perform any task like improving the efficiency of
the system, try to improve its quality or user friendliness then all these things involves an
element of cost. If the quality of your system is not acceptable then with the investment of
little money it could be improved to a higher degree. But after reaching at a certain level
of quality the return on investment on the system’s quality will become reduced. Meaning
that the return on investment on quality of software will be less than the effort or money
we invest. Therefore, in most of the cases, after reaching at a reasonable level of quality
we do not try to improve the quality of software any further. This phenomenon is shown
in the figure below.
benefit
cost
benefit
cost
Software Background
© Copy Right Virtual University of Pakistan 6
Table of Content CS605 Software Engineering-II VU Lectures_6
CS605 Software Engineering-II VU
Caper Jones a renounced practitioner and researcher in the filed of Software Engineering,
had made immense research in software team productivity, software quality, software
cost factors and other fields relate to software engineering. He made a company named
Software Productivity Research in which they analyzed many projects and published the
results in the form of books. Let’s look at the summary of these results.
He divided software related activities into about twenty-five different categories listed in
the table below. They have analyzed around 10000 software projects to come up with
such a categorization. But here to cut down the discussion we will only describe nine of
them that are listed below.
Project Management
Requirement Engineering
Design
Coding
Testing
Software Quality Assurance
Software Configuration Management
Software Integration and
Rest of the activities
One thing to note here is that you cannot say that anyone of these activities is dominant
among others in terms of effort putted into it. Here the point that we want to emphasize is
that, though coding is very important but it is not more than 13-14% of the whole effort of
software development.
Fred Brook is a renowned software engineer; he wrote a great book related to software
engineering named “A Mythical Man Month”. He combined all his articles in this book.
Here we will discuss one of his articles named “No Silver Bullet” which he included in
the book.
An excerpt from “No Silver Bullet” – Fred Brooks
Of all the monsters that fill the nightmares of our folklore, none terrify more than
werewolves, because they transform unexpectedly from the familiar into horrors.
For these we seek bullets of silver that can magically lay them to rest. The
familiar software project has something of this character (at least as seen by the
non-technical manager), usually innocent and straight forward, but capable of
becoming a monster of missed schedules, blown budgets, and flawed projects. So
we hear desperate cries for a silver bullet, something to make software costs drop
as rapidly as computer hardware costs do. Scepticism is not pessimism, however.
Although we see no startling breakthroughs, and indeed, such to be inconsistent
with the nature of the software, many encouraging innovations are under way. A
disciplined, consistent effort to develop, propagate and exploit them should
indeed yield an order of magnitude improvement. There is no royal road, but
there is a road. The first step towards the management of disease was
replacement of demon theories and humours theories by the germ theory. The
very first step, the beginning of hope, in itself dashed all hopes of magical
solutions. It told workers that progress would be made stepwise, at great effort,
© Copy Right Virtual University of Pakistan 7
Table of Content CS605 Software Engineering-II VU Lectures_7
CS605 Software Engineering-II VU
and that a persistent, unremitting care would have to be paid to a discipline of
cleanliness. So it is with software engineering today.
So, according to Fred Brook, in the eye of an unsophisticated manager software is like a
giant. Sometimes it reveals as an unscheduled delay and sometimes it shows up in the
form of cost overrun. To kill this giant the managers look for magical solutions. But
unfortunately magic is not a reality. We do not have any magic to defeat this giant. There
is only one solution and that is to follow a disciplined approach to build software. We can
defeat the giant named software by using disciplined and engineered approach towards
software development.
Therefore, Software Engineering is nothing but a disciplined and systematic approach to
software development.
Now we will look at some of the activities involved in the course of software
development. The activities involved in software development can broadly be divided
into two major categories first is construction and second is management.
Software Development
The construction activities are those that are directly related to the construction or
development of the software. While the management activities are those that complement
the process of construction in order to perform construction activities smoothly and
effectively. A greater detail of the activities involved in the construction and management
categories is presented below.
Construction
The construction activities are those that directly related to the development of software,
e.g. gathering the requirements of the software, develop design, implement and test the
software etc. Some of the major construction activities are listed below.
Requirement Gathering
Design Development
Coding
Testing
Management
Management activities are kind of umbrella activities that are used to smoothly and
successfully perform the construction activities e.g. project planning, software quality
assurance etc. Some of the major management activities are listed below.
Project Planning and Management
Configuration Management
Software Quality Assurance
Installation and Training
© Copy Right Virtual University of Pakistan 8
Table of Content CS605 Software Engineering-II VU Lectures_8

End of preview

Want to access all the pages? Upload your documents or become a member.