Department of Computer Week
Science 02
Software
Engineering
CHAPTER 2: SOFTWARE
ENGINEERING
D r. M u h a m m a d P e r v e z A k h t e r
Assistant Professor
IEEE Definition of SE
The application of a systematic, disciplined, and
quantifiable approach to the development,
operation, and maintenance of software
FAQs About SE
Question Answer
What is software? Computer programs and associated
documentation. Software products may be
developed for a particular customer or may be
developed for a general market.
What are the attributes of Good software should deliver the required
good software? functionality and performance to the user and
should be maintainable, dependable and
usable.
What is software Software engineering is an engineering
engineering? discipline that is concerned with all aspects of
software production.
What are the fundamental Software specification, software development,
software engineering software validation and software evolution.
FAQs About SE
Question Answer
What is the difference between Computer science focuses on theory and
software engineering and fundamentals; software engineering is concerned
computer science? with the practicalities of developing and delivering
useful software.
What is the difference between System engineering is concerned with all aspects
software engineering and system of computer-based systems development
engineering? including hardware, software and process
engineering. Software engineering is part of this
more general process.
What are the key challenges Coping with increasing diversity, demands for
facing software engineering? reduced delivery times and developing
trustworthy software.
What are the costs of software Roughly 60% of software costs are development
engineering? costs, 40% are testing costs. For custom software,
evolution costs often exceed development costs.
FAQs About SE
Question Answer
What are the best While all software projects have to be professionally
software engineering managed and developed, different techniques are
techniques and appropriate for different types of system. For
methods? example, games should always be developed using
a series of prototypes whereas safety critical control
systems require a complete and analyzable
specification to be developed. You can’t, therefore,
say that one method is better than another.
What differences has The web has led to the availability of software
the web made to services and the possibility of developing highly
software engineering? distributed service-based systems. Web-based
systems development has led to important
advances in programming languages and software
reuse.
Essential attributes of good
software
Product characteristic Description
Maintainability Software should be written in such a way so that it can evolve
to meet the changing needs of customers. This is a critical
attribute because software change is an inevitable
requirement of a changing business environment.
Dependability and Software dependability includes a range of characteristics
security including reliability, security and safety. Dependable software
should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access
or damage the system.
Efficiency Software should not make wasteful use of system resources
such as memory and processor cycles. Efficiency therefore
includes responsiveness, processing time, memory utilisation,
etc.
Acceptability Software must be acceptable to the type of users for which it
Software Engineering Ethics
Software engineering involves wider
responsibilities than simply the application of
technical skills.
Software engineers must behave in an honest
and ethically responsible way if they are to be
respected as professionals.
Ethical behaviour is more than simply upholding
the law but involves following a set of principles
Issues of Professional
Responsibility
Confidentiality
Engineers should normally respect the confidentiality
of their employers or clients irrespective of whether or
not a formal confidentiality agreement has been
signed.
Competence
Engineers should not misrepresent their level of
competence. They should not knowingly accept work
which is out with their competence.
Issues of Professional
Responsibility
Intellectual property rights
Engineers should be aware of local laws governing the use
of intellectual property such as patents, copyright, etc. They
should be careful to ensure that the intellectual property of
employers and clients is protected.
Computer misuse
Software engineers should not use their technical skills to
misuse other people’s computers. Computer misuse ranges
from relatively trivial (game playing on an employer’s
machine, say) to extremely serious (dissemination of
Rationale for the code of
ethics
Computers have a central and growing role in
commerce, industry, government, medicine,
education, entertainment and society at large.
Software engineers are those who contribute by
direct participation or by teaching, to the
analysis, specification, design, development,
certification, maintenance and testing of
software systems.
Rationale for the code of
ethics
Because of their roles in developing software
systems, software engineers have significant
opportunities to do good or cause harm, to enable
others to do good or cause harm, or to influence
others to do good or cause harm. To ensure, as much
as possible, that their efforts will be used for good,
software engineers must commit themselves to
making software engineering a beneficial and
respected profession.
IEEE/ACM Code of Ethics
The professional societies in the US have cooperated
to produce a code of ethical practice.
Members of these organisations sign up to the code of
practice when they join.
The Code contains eight Principles related to the
behaviour of and decisions made by professional
software engineers, including practitioners, educators,
managers, supervisors and policy makers, as well as
trainees and students of the profession.
IEEE/ACM Code of Ethics
1. PUBLIC - Software engineers shall act consistently with the
public interest.
2. CLIENT AND EMPLOYER - Software engineers shall act in a
manner that is in the best interests of their client and
employer consistent with the public interest.
3. PRODUCT - Software engineers shall ensure that their
products and related modifications meet the highest
professional standards possible.
4. JUDGMENT - Software engineers shall maintain integrity and
independence in their professional judgment.
IEEE/ACM Code of Ethics
5. MANAGEMENT - Software engineering managers and leaders
shall subscribe to and promote an ethical approach to the
management of software development and maintenance.
[Link] - Software engineers shall advance the integrity
and reputation of the profession consistent with the public
interest.
[Link] - Software engineers shall be fair to and
supportive of their colleagues.
[Link] - Software engineers shall participate in lifelong learning
regarding the practice of their profession and shall promote an
ethical approach to the practice of the profession.