The Professional Responsibilities of Software Engineers

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 37

The Professional Responsibilities

of Software Engineers
PRoSE
A correctly designed system is an
electronic poetry in motion

P - Professional
R - Responsibilities
o - of
S - Software
E - Engineers

2
How is software designed
today
• Fools Rush In... (Ignorance is bliss)
• Software Myths -Managers

• We have standards and procedures for building software,


so developers have everything they need to know.
• We have state-of-the-art software development tools; after
all, we buy the latest computers.
• If we're behind schedule, we can add more programmers to
catch up.
• A good manger can manage any project.

3
How is software designed
today?
•Software Myths – Client
• A general statement of objectives is sufficient to begin
writing programs - we can fill in the details later.

• Requirement changes are easy to accommodate because


software is flexible.

• I know what my problem is, therefore I know how to solve it.

4
How is software designed
today?
•Software Traditions - Practitioner
• If I miss something now, I can fix it later.

• Once the program is written and running, my job is done.

• Until a program is running, there's no way of assessing its


quality.

• The only deliverable for a software project is a working


program.
5
How is software designed
today?
Software Realities
• The cost of finding an error rises an order of magnitude for every
phase before the error is discovered.

• 60%-90% of the total cost is maintenance.

6
How is software designed
today?
The Standish Group, an IT-research firm
in West Yarmouth, Mass., has been
keeping track of this phenomenon since
1994, and the good news is that we are
doing much better at completing projects
than we used to. The bad news is that in
2000 only 28% of software projects could
be classed as complete successes
(meaning they were executed on time
and on budget) while 23% failed outright
(meaning that they were abandoned).
Those numbers are improvements over a
16% success rate and a 31% failure rate
rate when the first study was done, in
1994

7
The PRoSE by D. L. Parnas

Abstract

Registered Engineers are expected to be aware of their


responsibilities as professionals. Those who practice Software
Engineering often enter that profession without either an
engineering education or professional registration. The primary
responsibility is to make sure that their products are “fit for
use”.
8
Main Responsibilities

1. Personal

2. Social

3. Professional

9
Main Responsibilities

1. Personal:
Personal Responsibilities are general obligations towards
other individuals; most are shared by all persons (e.g.
honesty, concern for others).
2. Social

3. Professional

10
Main Responsibilities

1. Personal

2. Social
Social Responsibilities are responsibilities towards society
as a whole. We have a debt to repay because society has
supported us when we needed it. (e.g. environmental
activism, peace activism, national defence)
3. Professional

11
Main Responsibilities

1. Personal

2. Social

3. Professional
Professional Responsibilities are additional
responsibilities shared by members of a particular
profession (e.g medicine, journalism, or
engineering) Usually a code of responsibilities
exists.

12
Conflict of Responsibilities

• Is there a difference?
• Can they conflict?

Professional responsibilities include, but are not


limited to, contractual obligations to an employer.
These obligations may appear at times to conflict
with Personal and Social responsibility.

The primary responsibility of an engineer is always to the


safety and well-being of the public.

13
Conflict of Responsibilities
An Illustration – Strategic Defense Initiative (Star Wars):
Service on the “Committee on Computing in Support of
Battle Management”.

Some questions that arose:


a) Was it honest? (personal responsibility)
b) Had I made a professional commitment? Was our activity designing a
system that would meet the needs of the customer as required by
professional codes? What should a professional do if the answers were
“yes” and “no”?
c) Was this project good for society? Should I explain my views to the public?

Some regarded (a) “Yes” to (c) as unprofessional. The conflict in


(b) was resolved by a detailed explanation.
14
The Social Responsibility of
Scientists And Engineers
“In the land of the blind,
the one eyed man is king”.

In a world increasingly dependent on science and


technology, Scientists and Engineers are the one-
eyed people.

The majority of our decision-makers are blind.

15
The Social Responsibility of
Scientists And Engineers
Consider the following public issues:

• Can we reduce our energy expenditures without great disruption in


people's lives?
• How urgent is the need to reduce the level of greenhouse gasses?
• Should we build more nuclear power generating stations?
• Is it safe to allow nuclear power generating stations to be controlled by
computers?
• Can technology help us to reduce the amount of the paper that we use?
Should we do that?
• Is it safe to allow computers to control cars and trucks?

Decisions will be taken by non-specialists, but the input will


come from people like us. We must give them complete and
accurate information. 16
The Social Responsibility of
Scientists And Engineers
Science and technology are the “black magic” of our age. We use hidden formalities and
obscure terminology.

The public thinks that science can solve any problem if given enough funds. Public officials
share this attitude. They fall for scientific fads.

Buzzwords and big promises, favored over solid scientific work.

The rewards often go to the illusionists. The successful do not speak out. The others are
ignored (“sour grapes”).

Most of us “go along” to get funds.

Don’t we have a responsibility to see that society’s funds are well used?
In your career you will often have to decide whether or not to participate in a project and, if you
decide not to participate, whether you should make your decision public.
17
The Professional Responsibilities
of Engineers
Unfortunately, Software Engineers are not always Engineers.

“Software Engineering” is a thin course on programming, taught in a science


department, not a professional program in Engineering. Many “software engineers”
have no technical education.

Many could not be Professional Engineers.

Many confuse software engineering with configuration management.

An Engineer is someone who uses advanced knowledge of science, mathematics, and


technology to build objects for use by others.

Most programmers or software engineers, are Engineers, under qualified, unlicensed,


and often unprofessional. They are unaware of their professional responsibilities.

18
Programmers need to learn about the professional responsibility of engineers.
Why do we have licensed Professional
Engineers?

An old system introduced because:

• Some products potentially dangerous. Incompetent designs a danger to


public.
• Purchasers and some employers are often unable to judge the
competence of designers.
• Competent, careful, disciplined professionals want public to distinguish
between themselves and others. Bad work by a few damages the
reputations and business prospects of all.
• Financial pressures may tempt employers to “cut corners”. We are
protected better when professional obligations go beyond loyalty or
obedience to an employer. Professionals do say “No”.

Don’t all of these reasons apply to software construction?


19
What is the Professional Engineering
Societies ?
1. Professional Engineering Societies were established by legislation to assure
competence and awareness of professional responsibilities.

2. Regulations require that certain products be produced or approved by a


recognized Professional Engineer.

3. There is a separate committee to accredit programs. Accreditation is a very


serious process. Graduates of accredited programs have an easier path to
recognition as a Professional Engineer.

An exam on responsibilities is required in any case.

20
Why are “Software Engineers”
different?
• The result of a “software crisis” (optimism).
• Originally dealt with as a scientific problem. The basis of software engineering
was not well understood.
• First meetings attended by many mathematicians and scientists, few engineers.
• Many engineers were still blissfully unaware of the importance of computers in
their profession.
• The word is “Engineering” used to indicate practical concerns, not a profession.
• Professional societies did not take it seriously. Software Engineering has
developed outside of the Engineering Community.
• It has been left to Computer Science departments, taught by people who are not
Engineers.
• Because badly designed computer programs are hard to manage, emphasis has
been on project management, project scheduling, version control, etc.

Today, the engineering societies are beginning to do what they were always
required to do.
21
What are the obligations of the
engineer?
1. Accept individual responsibility.
2. Solve the real problem
3. Be honest about capabilities
4. Produce reviewable designs
5. Maintainability

22
What are the obligations of the
engineer?

1. Accept individual responsibility.


• Following orders does not justify approving bad designs.
• One cannot always be a “team player”.
• Professional standards have priority over other
pressures

2. Solve the real problem


• Look beyond the customer’s opinions
• Have a precise description of a problem.
• Get that description reviewed before building.

23
What are the obligations of the
engineer?

3. Be honest about capabilities


• Don’t offer technical solutions where there are none.
• Don’t do studies when you already know the answer.

4. Produce reviewable designs


• No individual is infallible.
• Document to make reviewing easy.

5. Maintainability
• Produce a product that can be maintained without you. -
It’s not your personal product.
24
Professional Practice in Software
Development
Some responses to a critical consultant:
• “Of course it’s wrong, but that is what my boss told me to do.”
• “We already know the answer, but they will pay us $1,000,000 for the study.
• “It’s not the right way, but it’s the customer’s suggestion.”
• “At XYZ corporation, we don’t tell our customers that they are wrong, we take their contracts.”
• “That’s not the real problem, but they asked us to do it.”
• “We can’t give them what they need, but we’ll do the best we can.”
• “We’ve got a deadline; we’ll worry about maintainability when we get the maintenance contract.
• “We don’t like people criticizing our designs!”

My personal favorites came from the IT manager in a multinational company:


• “It is what it is. Take initiative, make it happened”
• “We pay you big box because you are good, so We don’t need to allocate resources for QA”

These remarks showed that the speakers were unaware of the professional responsibilities of
engineers.

Some had not heard of those responsibilities.

Some had no such excuse! 25


Software used by Professional Engineers
and other concerns
Professional Engineers take responsibility for their products,
but, ...
• To design those products they use software that comes with a
disclaimer instead of a warranty,
• Professional Engineers belong to a society that enforces
codes of professional behavior, but
• they must use tools produced by people who do not belong
to such a society.

This cannot be a stable situation!


OS’s as bridges
26
The “Know How” isn’t There!

If we look at other areas of engineering, we know what software


engineers should do. If we look at current practice, those things are not
done.

It’s not just a matter of lack of will. It’s not just a matter of lack of
awareness. Most programmers do not know how to do the things that
they should do.

They do not know how to:


• document requirements in a way that can be reviewed by subject matter experts,
• document code precisely and completely,
• inspect code systematically.

Trying to give that “know how”.


27
The “Know How” isn’t There!

Is there a Solution to this


problem?

28
Improving Professionalism in
Software Development

Three steps:
1. Work with Professional Engineering societies.
2. Develop better educational programs.
3. Develop accreditation procedures for Software
Engineering programs.

29
Work with Professional
Engineering societies
• We should stop fighting and work with the Engineering groups
on the establishing standards for a new “flavor” of Engineer,
either “Software Engineer” or “Computer Engineer”

• We should take the advantage of the experience that this


groups have in setting professional standards

• We should use existing legislations to enforce those standards.

30
Develop accreditation
procedures for Software
Engineering programs
It is time to develop standards for the educational programs
that will be uniquely designed and target needs of Software
Engineering as a discipline not as a subprogram of Electrical
Engineering or Computer Science.

The aim [of education] must be the training of independently


acting and thinking individuals who, however, see in the
service to the community their highest life achievement.
– Albert Einstein

31
Develop better educational
programs
We are not ready to work with the accreditation
committees even if they are:
• Little agreement on the essential knowledge
required of those practicing Software Engineering
• We need to remember that Engineering is not
Management our current programs and literature
confuse them.

32
Recap the PRoSE

PRoSE - is a poetry in motion.


It’s time to quit “firefighting” ways of the software
development and start utilizing engineering principals.

Responsibility of Software Engineers:


1. Personal
2. Social
3. Professional

33
Software Engineering Code of
Ethics and Professional Practice

Recommended and jointly approved by the ACM


and the IEEE-CS as the standard for teaching and
practicing software engineering.

34
Software Engineering Code of
Ethics and Professional Practice
The Code contains eight Principles related to the behavior 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.

These obligations are founded in the software engineer's humanity, in


special care owed to people affected by the work of software engineers,
and in the unique elements of the practice of software engineering.

The Code prescribes these as obligations of anyone claiming to be or


aspiring to be a software engineer.

35
Principles of Software
Engineering Code of Ethics
1. PUBLIC
2. CLIENT AND EMPLOYER
3. PRODUCT
4. JUDGMENT
5. MANAGEMENT
6. PROFESSION
7. COLLEAGUES
8. SELF

36
37

You might also like