The Professional Responsibilities of Software Engineers

Document Sample
The Professional Responsibilities of Software Engineers Powered By Docstoc
					       The Professional
       Responsibilities
    of Software Engineers

City University of New York /GC
CSc 79000 - Software Engineering
Professor Danny Kopec
Prepared by Ellen Pesochin
       Happy Birthday to
        Albert Einstein




           Born: 14 March 1879 in Ulm, Württemberg, Germany


                       The Professional Responsibilities
03/14/03                    of Software Engineers             2
                          PRoSE
           A correctly designed system is an
              electronic poetry in motion

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

                    The Professional Responsibilities
03/14/03                 of Software Engineers          3
                 Agenda
    About the speaker
  How is software designed today
  Hall of Shame

  The PRoSE by D. L. Parnas

  ACM on PRoSE

  Practical Examples from Experience

  QA or Q&A
             The Professional Responsibilities
03/14/03          of Software Engineers          4
                About the Speaker
    Why PRoSE is a dear subject to me
    Education
          BS in Electrical Engineering
          BS in Computer Science
          MBA
          Hopefully one day PhD in Computer Science




                       The Professional Responsibilities
03/14/03                    of Software Engineers          5
               About the Speaker
Experience (over 15 years in the industry)
       Alpha technologies – programmer
       WorldCom – Technical lead (16 reports)
       Collier Encyclopedia / Microsoft – IS Manager (20 reports)
       USWeb/CKS – Director of Software Development (17
        reports)
       Blackberry Technology – Managing Director of SD (32
        reports)
       Bright Sun Conlulting – CTO (46 reports)
       American Engineering & Technology (CIO 65 reports)

                       The Professional Responsibilities
03/14/03                    of Software Engineers             6
                About the Speaker
Professional Certifications and Areas of Interest
          MCSD
          MCSE
          Oracle Master
          MCSDBA
          Computer security
          Software Development Framework
          Biotech in computer security
          Voice recognition
          Error handling and recognition
                       The Professional Responsibilities
03/14/03                    of Software Engineers          7
                   Agenda
    About the speaker
    How is software designed today
  Hall of Shame
  The PRoSE by D. L. Parnas

  ACM on PRoSE

  Practical Examples from Experience

  QA or Q&A
               The Professional Responsibilities
03/14/03            of Software Engineers          8
    How is software designed
                        today
   Fools Rush In... (Ignorance is bliss)
   Software Myths -Managers [1,2]
          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.
                         The Professional Responsibilities
03/14/03                      of Software Engineers            9
 How is software designed
           today
   Software Myths – Client [1,2]
          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.



                         The Professional Responsibilities
03/14/03                      of Software Engineers          10
How is software designed
          today
   Software Myths - 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.


                         The Professional Responsibilities
03/14/03                      of Software Engineers             11
 How is software designed
           today
   Steve McConnell is
   one of the world's
   foremost experts on
   software development
   and software
   engineering. He is
   Chief Software
   Engineer at Construx
   Software. Steve on
   how software is
   typically designed [3]
                  The Professional Responsibilities
03/14/03               of Software Engineers          12
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. [4]
* 60%-90% of the total cost is
  maintenance.

             The Professional Responsibilities
03/14/03          of Software Engineers          13
 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
                        The Professional Responsibilities
03/14/03                     of Software Engineers          14
                  Agenda
  About the speaker
  How is software designed today

    Hall of Shame
  The PRoSE by D. L. Parnas
  ACM on PRoSE

  Practical Examples from Experience

  QA or Q&A
              The Professional Responsibilities
03/14/03           of Software Engineers          15
                Hall of Shame
   Nabisco – Division by 0
   Blackberry – Computer doesn’t work
   WorldCom – Delphi
   DLJ – if false then
   Johnson & Johnson – start coding we’ll hire person
    to write specs later
   USWeb/CKS – cover up
   MedAmerica – Spelling vs requirements
   Oracle – Bummer
   ClubMom – religious war
   Barnes and Nobles web site
                     The Professional Responsibilities
03/14/03                  of Software Engineers          16
                  Agenda
   About the speaker
   How is software designed today

   Hall of Shame

     The PRoSE by D. L. Parnas
   ACM on PRoSE
   Practical Examples from Experience

   QA or Q&A
              The Professional Responsibilities
03/14/03           of Software Engineers          17
   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”.



                    The Professional Responsibilities
03/14/03                 of Software Engineers           18
       Main Responsibilities

           1.   Personal

           2.   Social

           3.   Professional


                    The Professional Responsibilities
03/14/03                 of Software Engineers          19
      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


                    The Professional Responsibilities
03/14/03                 of Software Engineers          20
      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

                        The Professional Responsibilities
03/14/03                     of Software Engineers          21
      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.
                       The Professional Responsibilities
03/14/03                    of Software Engineers           22
  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.
                           The Professional Responsibilities
03/14/03                        of Software Engineers                   23
  Conflict of Responsibilities
An Illustration - SDI (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.

                        The Professional Responsibilities
03/14/03                     of Software Engineers                    24
  Why would I work on Nuclear
  Plants but not Star Wars? [5,6]




            The Professional Responsibilities
03/14/03         of Software Engineers          25
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.
                    The Professional Responsibilities
 03/14/03                of Software Engineers          26
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.


                            The Professional Responsibilities
 03/14/03                        of Software Engineers                           27
  The Social Responsibility
      of Scientists And
          Engineers
Science and technology are the “black magic” of our age. We use arcane rituals 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.
                               The Professional Responsibilities
03/14/03                            of Software Engineers                                28
            The Professional
           Responsibilities of
               Engineers
Unfortunately, Software Engineers are not always Engineers.

   “Software Engineering” is a shallow 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.

Programmers need to learn about the professional responsibility of engineers.
                             The Professional Responsibilities
03/14/03                          of Software Engineers                             29
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, conscientious, 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?

                         The Professional Responsibilities
03/14/03                      of Software Engineers                      30
     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. [5]

An exam on responsibilities is required in any case. [6]



                         The Professional Responsibilities
03/14/03                      of Software Engineers                     31
                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.
                              The Professional Responsibilities
    03/14/03                       of Software Engineers                         32
     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



                   The Professional Responsibilities
03/14/03                of Software Engineers          33
   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.
                       The Professional Responsibilities
03/14/03                    of Software Engineers            34
    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.

                          The Professional Responsibilities
 03/14/03                      of Software Engineers                       35
   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 of J&J and MedAmerica:
  “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!
                                 The Professional Responsibilities
03/14/03                              of Software Engineers                                      36
             A Simple Example:
                Pacemakers
Their importance to the user is obvious!
They are also important to those nearby.
They are controlled by software.

          Many modes of operation
          Computer controlled telemetry system
          Data collection
          “Programmable” by remove control
          “When needed” intervention.
          Rate responds to body activity.
          Packaged in a small sealed unit
          Must survive in a “hostile environment”

Clearly the type of device that should be built by engineers.
The program is critical and should be well documented and reviewable.

                                The Professional Responsibilities
03/14/03                             of Software Engineers              37
 What Should be Done for
  Pacemaker Software?
 1.   Programmer should have a precise description of the environment
      and requirements [7]
 2.   Black box description should have been produced for review.
 3.   Document should have been reviewable and reviewed by
      Cardiologists.
 4.   The code should have been documented in a way that permitted
      systematic review and revision.[8]
 5.   Code should have been subject to systematic inspection.
 6.   Doctor should have been provide with well-organized precise
      documentation that explained the behavior of the device to him.

 All of these things would be expected of a professional engineer.


                        The Professional Responsibilities
03/14/03                     of Software Engineers                   38
       Pacemaker Software
            Anecdote
      Pacemaker “refused” the surgeon’s command; neither surgeon nor technician
      understood why.

      The explanation was found in a footnote after several hours of reading. It took 30
      minutes to find it the second time. Engineer responsible could explain the
      hardware aspects in great detail. He referred to a programmer, who could not be
      found, to explain the code.

       Programming had been viewed as a trivial task; Responsible engineer did not
       review it.

  As a result of inadequate review, there are fundamental weaknesses
  • Motion sensor does not measure physical activity
  • Expected rate adjustment is inflexible.
  The problem solved was not the real problem.

  This was a typical software product.
  The software was written as it would have been written 25 years ago.

                              The Professional Responsibilities
03/14/03                           of Software Engineers                               39
               More examples
   Med America PDA
   Firewalls (Software vs. hardware)
   Heart Surgeries and what doctors don’t want to
    tell Software engineers




                  The Professional Responsibilities
03/14/03               of Software Engineers          40
 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!
                                                           TacomaNarrowsBridge.mpeg




 OS’s as bridges (Tacoma Narrows Bridge November 7, 1940 )
                       The Professional Responsibilities
03/14/03                    of Software Engineers                                     41
     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.
 SDF - Trying to give that “know how”.

                           The Professional Responsibilities
03/14/03                        of Software Engineers                        42
     The “Know How” isn’t
            There!



 Is there a Solution to this
            problem?


            The Professional Responsibilities
03/14/03         of Software Engineers          43
          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.


                The Professional Responsibilities
03/14/03             of Software Engineers          44
           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.
                     The Professional Responsibilities
03/14/03                  of Software Engineers               45
       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

                    The Professional Responsibilities
03/14/03                 of Software Engineers             46
    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.

                  The Professional Responsibilities
03/14/03               of Software Engineers          47
            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


                   The Professional Responsibilities
 03/14/03               of Software Engineers          48
                 Agenda
  About the speaker
  How is software designed today

  Hall of Shame

  The PRoSE by D. L. Parnas

    ACM on PRoSE
  Practical Examples from Experience
  QA or Q&A
             The Professional Responsibilities
03/14/03          of Software Engineers          49
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.




                The Professional Responsibilities
03/14/03             of Software Engineers          50
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.

                      The Professional Responsibilities
03/14/03                   of Software Engineers               51
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
                     The Professional Responsibilities
03/14/03                  of Software Engineers          52
    Principle 1 PUBLIC
Software engineers shall act consistently with the public interest. In
   particular, software engineers shall, as appropriate:

1.01. Accept full responsibility for their own work.
1.02. Moderate the interests of the software engineer, the employer, the client and the users
    with the public good.
1.03. Approve software only if they have a well-founded belief that it is safe, meets
    specifications, passes appropriate tests, and does not diminish quality of life, diminish
    privacy or harm the environment. The ultimate effect of the work should be to the public
    good.
1.04. Disclose to appropriate persons or authorities any actual or potential danger to the
    user, the public, or the environment, that they reasonably believe to be associated with
    software or related documents.
1.05. Cooperate in efforts to address matters of grave public concern caused by software, its
    installation, maintenance, support or documentation.
1.06. Be fair and avoid deception in all statements, particularly public ones, concerning
    software or related documents, methods and tools.
1.07. Consider issues of physical disabilities, allocation of resources, economic disadvantage
    and other factors that can diminish access to the benefits of software.
1.08. Be encouraged to volunteer professional skills to good causes and contribute to public
    education concerning the discipline.

                                 The Professional Responsibilities
  03/14/03                            of Software Engineers                                53
        Principle 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. In
    particular, software engineers shall, as appropriate:
2.01. Provide service in their areas of competence, being honest and forthright about any
    limitations of their experience and education.
2.02. Not knowingly use software that is obtained or retained either illegally or unethically.
2.03. Use the property of a client or employer only in ways properly authorized, and with the
    client's or employer's knowledge and consent.
2.04. Ensure that any document upon which they rely has been approved, when required, by
    someone authorized to approve it.
2.05. Keep private any confidential information gained in their professional work, where
    such confidentiality is consistent with the public interest and consistent with the law.
2.06. Identify, document, collect evidence and report to the client or the employer promptly
    if, in their opinion, a project is likely to fail, to prove too expensive, to violate intellectual
    property law, or otherwise to be problematic.
2.07. Identify, document, and report significant issues of social concern, of which they are
    aware, in software or related documents, to the employer or the client.
2.08. Accept no outside work detrimental to the work they perform for their primary
    employer.
2.09. Promote no interest adverse to their employer or client, unless a higher ethical concern
    is being compromised; in that case, inform the employer or another appropriate
    authority of the ethical concern.
                                  The Professional Responsibilities
 03/14/03                                of Software Engineers                                    54
     Principle 3 PRODUCT
     Software engineers shall ensure that their products and related
     modifications meet the highest professional standards possible.
     In particular, software engineers shall, as appropriate:
3.01. Strive for high quality, acceptable cost and a reasonable schedule, ensuring significant tradeoffs are clear to and
      accepted by the employer and the client, and are available for consideration by the user and the public.
3.02. Ensure proper and achievable goals and objectives for any project on which they work or propose.
3.03. Identify, define and address ethical, economic, cultural, legal and environmental issues related to work projects.
3.04. Ensure that they are qualified for any project on which they work or propose to work by an appropriate combination
      of education and training, and experience.
3.05. Ensure an appropriate method is used for any project on which they work or propose to work.
3.06. Work to follow professional standards, when available, that are most appropriate for the task at hand, departing from
      these only when ethically or technically justified.
3.07. Strive to fully understand the specifications for software on which they work.
3.08. Ensure that specifications for software on which they work have been well documented, satisfy the users’
      requirements and have the appropriate approvals.
3.09. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project on which
      they work or propose to work and provide an uncertainty assessment of these estimates.
3.10. Ensure adequate testing, debugging, and review of software and related documents on which they work.
3.11. Ensure adequate documentation, including significant problems discovered and solutions adopted, for any project on
      which they work.
3.12. Work to develop software and related documents that respect the privacy of those who will be affected by that
      software.
3.13. Be careful to use only accurate data derived by ethical and lawful means, and use it only in ways properly authorized.
3.14. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.
3.15 Treat all forms of software maintenance with the same professionalism as new development.




                                          The Professional Responsibilities
03/14/03                                       of Software Engineers                                                       55
 Principle 4 JUDGMENT
    Software engineers shall maintain integrity and independence in
   their professional judgment. In particular, software engineers shall,
   as appropriate:

4.01. Temper all technical judgments by the need to support and maintain human values.
4.02 Only endorse documents either prepared under their supervision or within their areas
    of competence and with which they are in agreement.
4.03. Maintain professional objectivity with respect to any software or related documents
    they are asked to evaluate.
4.04. Not engage in deceptive financial practices such as bribery, double billing, or other
    improper financial practices.
4.05. Disclose to all concerned parties those conflicts of interest that cannot reasonably be
    avoided or escaped.
4.06. Refuse to participate, as members or advisors, in a private, governmental or
    professional body concerned with software related issues, in which they, their
    employers or their clients have undisclosed potential conflicts of interest.




                               The Professional Responsibilities
03/14/03                            of Software Engineers                                56
               Principle 5
              MANAGEMENT
    Software engineering managers and leaders shall subscribe to and
    promote an ethical approach to the management of software
    development and maintenance . In particular, those managing or
    leading software engineers shall, as appropriate:

5.01 Ensure good management for any project on which they work, including effective procedures for
    promotion of quality and reduction of risk.
5.02. Ensure that software engineers are informed of standards before being held to them.
5.03. Ensure that software engineers know the employer's policies and procedures for protecting passwords,
    files and information that is confidential to the employer or confidential to others.
5.04. Assign work only after taking into account appropriate contributions of education and experience
    tempered with a desire to further that education and experience.
5.05. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any
    project on which they work or propose to work, and provide an uncertainty assessment of these
    estimates.
5.06. Attract potential software engineers only by full and accurate description of the conditions of
    employment.
5.07. Offer fair and just remuneration.
5.08. Not unjustly prevent someone from taking a position for which that person is suitably qualified.
5.09. Ensure that there is a fair agreement concerning ownership of any software, processes, research,
    writing, or other intellectual property to which a software engineer has contributed.
5.10. Provide for due process in hearing charges of violation of an employer's policy or of this Code.
5.11. Not ask a software engineer to do anything inconsistent with this Code.
5.12. Not punish anyone for expressing ethical concerns about a project.


                                     The Professional Responsibilities
  03/14/03                                of Software Engineers                                        57
Principle 6 PROFESSION
    Software engineers shall advance the integrity and reputation of the
    profession consistent with the public interest. In particular, software
    engineers shall, as appropriate:

6.01. Help develop an organizational environment favorable to acting ethically.
6.02. Promote public knowledge of software engineering.
6.03. Extend software engineering knowledge by appropriate participation in professional organizations,
    meetings and publications.
6.04. Support, as members of a profession, other software engineers striving to follow this Code.
6.05. Not promote their own interest at the expense of the profession, client or employer.
6.06. Obey all laws governing their work, unless, in exceptional circumstances, such compliance is inconsistent
    with the public interest.
6.07. Be accurate in stating the characteristics of software on which they work, avoiding not only false claims
    but also claims that might reasonably be supposed to be speculative, vacuous, deceptive, misleading, or
    doubtful.
6.08. Take responsibility for detecting, correcting, and reporting errors in software and associated documents
    on which they work.
6.09. Ensure that clients, employers, and supervisors know of the software engineer's commitment to this
    Code of ethics, and the subsequent ramifications of such commitment.
6.10. Avoid associations with businesses and organizations which are in conflict with this code.
6.11. Recognize that violations of this Code are inconsistent with being a professional software engineer.
6.12. Express concerns to the people involved when significant violations of this Code are detected unless this
    is impossible, counter-productive, or dangerous.
6.13. Report significant violations of this Code to appropriate authorities when it is clear that consultation with
    people involved in these significant violations is impossible, counter-productive or dangerous.

                                        The Professional Responsibilities
    03/14/03                                 of Software Engineers                                            58
               Principle 7
              COLLEAGUES
    Software engineers shall be fair to and supportive of their
    colleagues. In particular, software engineers shall, as
    appropriate:

7.01. Encourage colleagues to adhere to this Code.
7.02. Assist colleagues in professional development.
7.03. Credit fully the work of others and refrain from taking undue credit.
7.04. Review the work of others in an objective, candid, and properly-documented
    way.
7.05. Give a fair hearing to the opinions, concerns, or complaints of a colleague.
7.06. Assist colleagues in being fully aware of current standard work practices
    including policies and procedures for protecting passwords, files and other
    confidential information, and security measures in general.
7.07. Not unfairly intervene in the career of any colleague; however, concern for the
    employer, the client or public interest may compel software engineers, in good
    faith, to question the competence of a colleague.
7.08. In situations outside of their own areas of competence, call upon the opinions
    of other professionals who have competence in that area.




                             The Professional Responsibilities
03/14/03                          of Software Engineers                                 59
             Principle 8 SELF
   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. In particular, software engineers shall
   continually endeavor to:7.01. Encourage colleagues to adhere to this
   Code.


8.01. Further their knowledge of developments in the analysis, specification, design,
    development, maintenance and testing of software and related documents, together with
    the management of the development process.
8.02. Improve their ability to create safe, reliable, and useful quality software at reasonable
    cost and within a reasonable time.
8.03. Improve their ability to produce accurate, informative, and well-written documentation.
8.04. Improve their understanding of the software and related documents on which they work
    and of the environment in which they will be used.
8.05. Improve their knowledge of relevant standards and the law governing the software and
    related documents on which they work.
8.06 Improve their knowledge of this Code, its interpretation, and its application to their work.
8.07 Not give unfair treatment to anyone because of any irrelevant prejudices.
8.08. Not influence others to undertake any action that involves a breach of this Code.
8.09. Recognize that personal violations of this Code are inconsistent with being a
    professional software engineer.

                                 The Professional Responsibilities
  03/14/03                            of Software Engineers                                 60
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
                 The Professional Responsibilities
03/14/03              of Software Engineers          61
                     Agenda
  About the speaker
  How is software designed today

  Hall of Shame

  The PRoSE by D. L. Parnas

  ACM on PRoSE

    Practical Examples – Success
    QA or Q&A
                 The Professional Responsibilities
03/14/03              of Software Engineers          62
               PRoSE works
              Nasdaq
              CAS
              Microwarehouse
              SDF




                The Professional Responsibilities
03/14/03             of Software Engineers          63
                           References
1.    Leveson, N. G. (1995). Safeware: System safety and computers. New
      York: Addison Wesley.
2.    F.P. Brooks “Mythical Man Month”
3.    Software Development 2000 West in San Jose. Full transcript is
      available on (http://www.construx.com/docs/open/sd2000.pdf or
      http://technetcast.ddj.com/tnc_program.html?program_id=80)
4.     Boehm, B. et al: Software Cost Estimation with COCOMO II, Prentice
      Hall PTR (2000)
5.    Parnas, D.L. Software Aspects of Strategic Defense Systems
6.    Parnas, D.L. “SDI: A violation of Professional Responsibility”
7.    Parnas, D.L. , Medley, J. “Functional Documentation for Computer
      Systems engineering (Version2)”
8.    Parnas, D.L. , Medley, J., Iglewski, M. “Formal documentation of Well-
      Structured Programs”.



                           The Professional Responsibilities
03/14/03                        of Software Engineers                          64
                   Agenda
    About the speaker
    How is software designed today

    Hall of Shame

    The PRoSE by D. L. Parnas

    ACM on PRoSE

    Practical Examples – Success

      QA or Q&A
              The Professional Responsibilities
03/14/03           of Software Engineers          65
           QA or Q&A




           The Professional Responsibilities
03/14/03        of Software Engineers          66