Topic: Software Quality: Submitted To: - Submitted By
Topic: Software Quality: Submitted To: - Submitted By
Topic: Software Quality: Submitted To: - Submitted By
Term Paper
of Principles of Software Engineering (CSE-318)
1
Acknowledgment:-
I would also like to thank my Parents, without whom I would have been
nothing.
Biprajit Bhattacharjee
2
Contents:
1) Introduction.
2) Software Quality.
a) Portability.
b) Usability.
c) Reusability.
d) Correctness.
e) Maintainability.
7) Software Metrics.
a) ISO 9000.
8) Conclusion.
INTRODUCTION:
3
Software engineering (SE) is a profession dedicated to designing, implementing,
and modifying software so that it is of higher quality, more affordable,
maintainable, and faster to build. The term software engineering first appeared in
the 1968 NATO Software Engineering Conference, and was meant to provoke
thought regarding the perceived "software crisis" at the time. Since the field is still
relatively young compared to its sister fields of engineering, there is still much
debate around what software engineering actually is, and if it conforms to the
classical definition of engineering.
Software engineering is ever more important as larger, more complex, and life-
critical software systems proliferate. The rapid decline in the costs of computer
hardware means that the software in a typical system often costs more than the
hardware it runs on. Large software systems may be the most complex things ever
built. This places great demands on the software engineering process, which must
be disciplined and controlled.
To meet this challenge, software engineers have adapted many techniques from
older engineering fields, as well as developing new ones. For example, divide and
conquer, a well-known technique for handling complex problems, is used in many
ways in software engineering. The software engineering process itself, for example,
is usually divided into phases. The definition of these phases, their ordering, and
the interactions between the phases specify a software life-cycle model. The best-
known life-cycle model is the waterfall model consisting of a requirements
definition phase, a design phase, a coding phase, a testing phase, and a maintenance
phase. The output of each phase serves as the input to the next.
Software Quality:
One of the challenges of software quality is that "everyone feels they understand
it".
3. A set of implicit requirements often goes unmentioned, like for example ease
of use, maintainability etc.
Software Quality activities are conducted throughout the project life cycle to
provide objective insight into the maturity and quality of the software processes
and associated work products. At GSFC, the Office of Systems Safety and Mission
Assurance (OSSMA) is responsible for planning and implementing a Software
Quality Program for all Class A, B, and C mission software (as defined in NPR
7150.2). This entails providing sufficient resources, training staff, managing work
products, and monitoring and controlling our program for continuous process
improvement.
Quality and dependability of large software systems are among the most common
topics in discussions about computers. Organizations, both public and private, have
invested huge sums in research to develop methodologies for producing software of
quality and dependability. Schools have devoted large efforts to curricula in the
5
engineering of software. Yet, many people remain dissatisfied with the progress of
the field over the past decade. The methodologies currently employed to produce
“software of quality” are based on the notion that quality is strongly related to rigor
in the specifications and texts that appear throughout the software design process.
According to this view, quality will be achieved when software is produced by a
process consisting of four stages: obtain a clear and comprehensive requirements
statement, construct a formal specification from the requirements, derive the
programs from the specification, and demonstrate convincingly that the
implemented program meets the specification. Program construction techniques
that maintain tight relationships between program structure and dynamic behavior
are considered to be essential. Readability, modularity, modifiability, style,
adequacy of comments, and good tests are considered to be important guidelines.
Failure to achieve software of quality is attributed not to possible limitations in the
process itself, but to inadequate knowledge. Once the process is completed, the
designer delivers the software to the customer and declares the job done.
A good software system designer will bring long experience with many different
customers to a new customer. That designer may propose to include functions that
the customer did not ask for but which will spare the customer unwanted future
problems. The designer will continue to work with the customer after the system is
installed in order to modify the system in case negative consequences are
discovered. These actions -- anticipation and continued availability after delivery --
are essential for a software producer to earn the customer’s satisfaction at the
second level. Very few software systems have produced genuine delight. Some
examples include the second-generation UNIX system, the Apple MacIntosh, Lotus
1-2-3, the Quicken accounting system, Microsoft Excel and Windows, and
PageMaker document system. In each case customers found they could complete
much more work with the system than without, much more than they expected.
1) Portability
6
The cost of product modification.
Over the years as the maintenance function has taken on new meaning the
flexibility quality factor has been fused into maintenance. Recent interpretation of
flexibility would be more associated with adaptability, ie. being able to change or
reconfigure the user interface to suit users' preferences. This is a usability quality
issue and is better considered in the usability section.
2) Usability:
Usability is by its very name a quality factor in the HCI domain - usable by
humans. Usability in the late 1990s is concerned with a vast number of end-user
issues and learning to use systems now embraces so many topics that some authors
consider learnability to be a quality factor in its own right. Usability topics include
suitability, learnability and adaptability. Usability is an extremely difficult quality
factor to define. The main reason for this is the vast variety of users with their
different needs. Some will be novices while others will be experts and a quality
product will support them all.
3) Reusability:
Re-usability addresses the concept of writing code so that it can be used more than
once. A typical example is writing procedures or routines to receive variable
parameters. The calling code passes the parameters and the called procedure
processes them as appropriate. Any result from the process is returned to the calling
code. The main advantage of using this approach is that once a procedure has been
written and fully tested it can be used with full confidence in its
accuracy thereafter. It should never need to be tested again.
4) Correctness:
A software Product will be correct only if it satisfies every details specified in the
SRS documents.
7
5) Maintainability:
Finding and correcting errors is just one aspect of maintenance. Ghezzi et al.
(1991) divide maintenance into three categories: corrective, adaptive and perfective
and only corrective is concerned with correcting errors as suggested by McCall.
Software Metrics:
ISO 9000 is a family of standards for quality management systems. ISO 9000 is
maintained by ISO, the International Organization for Standardization and is
administered by accreditation and certification bodies. The rules are updated, as the
8
requirements motivate changes over time. Some of the requirements in ISO
9001:2008 (which is one of the standards in the ISO 9000 family) include
9
Capability Maturity Model:
Conclusion:
Reference Cited:
10
3) R. S. Pressman, Title: Software Engineering - A practitioner's approach.
4) Google Search.
11