The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 -...
-
Upload
carmel-tyler -
Category
Documents
-
view
213 -
download
0
Transcript of The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 -...
The Professional The Professional ResponsibilitiesResponsibilities
of Software Engineersof Software Engineers
City University of New York /GCCity University of New York /GC
CSc 79000 - Software EngineeringCSc 79000 - Software EngineeringProfessor Danny KopecProfessor Danny Kopec
Prepared by Ellen PesochinPrepared by Ellen Pesochin
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
22
Happy Birthday to Happy Birthday to Albert EinsteinAlbert Einstein
Born: 14 March 1879 in Ulm, Württemberg, Germany
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
33
PRoSEPRoSE
P - Professional P - Professional
R - ResponsibilitiesR - Responsibilities
o - of o - of
S - Software S - Software E - EngineersE - Engineers
A correctly designed system is an electronic poetry in motion
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
44
AgendaAgenda About the speakerAbout the speaker How is software designed todayHow is software designed today Hall of ShameHall of Shame The PRoSE by D. L. ParnasThe PRoSE by D. L. Parnas ACM on PRoSEACM on PRoSE Practical Examples from ExperiencePractical Examples from Experience QA or Q&AQA or Q&A
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
55
About the SpeakerAbout the Speaker
Why PRoSE is a dear subject to meWhy PRoSE is a dear subject to me EducationEducation
BS in Electrical EngineeringBS in Electrical Engineering BS in Computer ScienceBS in Computer Science MBAMBA Hopefully one day PhD in Computer ScienceHopefully one day PhD in Computer Science
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
66
About the SpeakerAbout the SpeakerExperience (over 15 years in the industry)Experience (over 15 years in the industry)
Alpha technologies – programmerAlpha technologies – programmer WorldCom – Technical lead (16 reports)WorldCom – Technical lead (16 reports) Collier Encyclopedia / Collier Encyclopedia / MicrosoftMicrosoft – IS Manager (20 reports) – IS Manager (20 reports) USWeb/CKS – Director of Software Development (17 reports)USWeb/CKS – Director of Software Development (17 reports) Blackberry Technology – Managing Director of SD (32 Blackberry Technology – Managing Director of SD (32
reports)reports) Bright Sun Conlulting – CTO (46 reports)Bright Sun Conlulting – CTO (46 reports) American Engineering & Technology (CIO 65 reports)American Engineering & Technology (CIO 65 reports)
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
77
About the SpeakerAbout the Speaker
Professional Certifications and Areas of Professional Certifications and Areas of InterestInterest MCSDMCSD MCSEMCSE Oracle MasterOracle Master MCSDBAMCSDBA Computer security Computer security Software Development FrameworkSoftware Development Framework Biotech in computer securityBiotech in computer security Voice recognitionVoice recognition Error handling and recognitionError handling and recognition
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
88
AgendaAgenda About the speakerAbout the speaker How is software designed todayHow is software designed today Hall of ShameHall of Shame The PRoSE by D. L. ParnasThe PRoSE by D. L. Parnas ACM on PRoSEACM on PRoSE Practical Examples from ExperiencePractical Examples from Experience QA or Q&AQA or Q&A
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
99
How is software designed How is software designed
todaytoday Fools Rush In... (Ignorance is bliss)Fools Rush In... (Ignorance is bliss) Software Myths -Managers [1,2]Software Myths -Managers [1,2]
We have standards and procedures for building We have standards and procedures for building software, so developers have everything they software, so developers have everything they need to know. need to know.
We have state-of-the-art software development We have state-of-the-art software development tools; after all, we buy the latest computers. tools; after all, we buy the latest computers.
If we're behind schedule, we can add more If we're behind schedule, we can add more programmers to catch up. programmers to catch up.
A good manger can manage any project.A good manger can manage any project.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
1010
Software Myths – Client [1,2]Software Myths – Client [1,2] A general statement of objectives is sufficient A general statement of objectives is sufficient
to begin writing programs - we can fill in the to begin writing programs - we can fill in the details later.details later.
Requirement changes are easy to Requirement changes are easy to accommodate because software is flexible.accommodate because software is flexible.
I know what my problem is, therefore I know I know what my problem is, therefore I know how to solve it.how to solve it.
How is software How is software designed designed
todaytoday
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
1111
How is software How is software designed todaydesigned today
Software Myths - PractitionerSoftware Myths - Practitioner If I miss something now, I can fix it later.If I miss something now, I can fix it later. Once the program is written and running, my Once the program is written and running, my
job is done.job is done. Until a program is running, there's no way of Until a program is running, there's no way of
assessing its quality.assessing its quality. The only deliverable for a software project is a The only deliverable for a software project is a
working program. working program.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
1212
How is software How is software designed todaydesigned today
Steve McConnell is Steve McConnell is one of the world's one of the world's foremost experts on foremost experts on software software development and development and software software engineering. He is engineering. He is Chief Software Chief Software Engineer at Construx Engineer at Construx Software. Steve Software. Steve on on how software is how software is typically designed typically designed [3][3]
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
1313
How is software How is software designed todaydesigned today
Software RealitiesSoftware Realities
* The cost of finding an error rises * The cost of finding an error rises an order of magnitude for every an order of magnitude for every phase before the error is phase before the error is discovered. [4]discovered. [4]
* 60%-90% of the total cost is * 60%-90% of the total cost is maintenance. maintenance.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
1414
How is software How is software designed todaydesigned today
The Standish Group, an IT-The Standish Group, an IT-research firm in West Yarmouth, research firm in West Yarmouth, Mass., has been keeping track of Mass., has been keeping track of this phenomenon since 1994, this phenomenon since 1994, and the good news is that we and the good news is that we are doing much better at are doing much better at completing projects than we completing projects than we used to. The bad news is that in used to. The bad news is that in 2000 only 28% of software 2000 only 28% of software projects could be classed as projects could be classed as complete successes (meaning complete successes (meaning they were executed on time and they were executed on time and on budget) while 23% failed on budget) while 23% failed outright (meaning that they outright (meaning that they were abandoned). Those were abandoned). Those numbers are improvements over numbers are improvements over a 16% success rate and a 31% a 16% success rate and a 31% failure rate rate when the first failure rate rate when the first study was done, in 1994study was done, in 1994
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
1515
AgendaAgenda About the speakerAbout the speaker How is software designed todayHow is software designed today Hall of ShameHall of Shame The PRoSE by D. L. ParnasThe PRoSE by D. L. Parnas ACM on PRoSEACM on PRoSE Practical Examples from ExperiencePractical Examples from Experience QA or Q&AQA or Q&A
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
1616
Hall of ShameHall of Shame
Nabisco – Division by 0Nabisco – Division by 0 Blackberry – Computer doesn’t workBlackberry – Computer doesn’t work WorldCom – DelphiWorldCom – Delphi DLJ – if false thenDLJ – if false then Johnson & Johnson – start coding we’ll hire Johnson & Johnson – start coding we’ll hire
person to write specs laterperson to write specs later USWeb/CKS – cover upUSWeb/CKS – cover up MedAmerica – Spelling vs requirementsMedAmerica – Spelling vs requirements Oracle – BummerOracle – Bummer ClubMom – religious warClubMom – religious war Barnes and Nobles web site Barnes and Nobles web site
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
1717
AgendaAgenda About the speakerAbout the speaker How is software designed todayHow is software designed today Hall of ShameHall of Shame The PRoSE by D. L. ParnasThe PRoSE by D. L. Parnas ACM on PRoSEACM on PRoSE Practical Examples from ExperiencePractical Examples from Experience QA or Q&AQA or Q&A
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
1818
The PRoSE by D. L. The PRoSE by D. L. ParnasParnas
AbstractAbstract Registered Engineers are expected to be aware Registered Engineers are expected to be aware
of their responsibilities as professionals. Those of their responsibilities as professionals. Those who practice Software Engineering often enter who practice Software Engineering often enter that profession without either an engineering that profession without either an engineering education or professional registration. The education or professional registration. The primary responsibility is to make sure that their primary responsibility is to make sure that their products are “fit for use”.products are “fit for use”.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
1919
Main ResponsibilitiesMain Responsibilities
1.1. PersonalPersonal
2.2. Social Social
3.3. ProfessionalProfessional
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
2020
Main ResponsibilitiesMain Responsibilities
1.1. Personal Personal Personal Responsibilities Personal Responsibilities are general are general obligations towards other individuals; obligations towards other individuals; most are shared by all persons (e.g. most are shared by all persons (e.g. honesty, concern for others).honesty, concern for others).
2.2. Social Social
3.3. Professional Professional
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
2121
Main ResponsibilitiesMain Responsibilities
1.1. PersonalPersonal
2.2. SocialSocial Social Responsibilities Social Responsibilities are are responsibilities towards society as a responsibilities towards society as a whole. We have a debt to repay because whole. We have a debt to repay because society has supported us when we society has supported us when we needed it. (e.g. environmental activism, needed it. (e.g. environmental activism, peace activism, national defence)peace activism, national defence)
3.3. Professional Professional
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
2222
Main ResponsibilitiesMain Responsibilities
1.1. PersonalPersonal
2.2. Social Social
3.3. Professional Professional
Professional Responsibilities Professional Responsibilities are additional are additional responsibilities shared by members of a responsibilities shared by members of a particular profession (e.g medicine, particular profession (e.g medicine, journalism, or engineering) Usually a code journalism, or engineering) Usually a code of responsibilities exists.of responsibilities exists.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
2323
ConflictConflict of of ResponsibilitiesResponsibilities
Is there a difference?Is there a difference? Can they conflict?Can they conflict?
Professional responsibilities include, but are not Professional responsibilities include, but are not limited to, contractual obligations to an employer. limited to, contractual obligations to an employer. These obligations may These obligations may appear appear at times to conflict with at times to conflict with Personal and Social responsibility.Personal and Social responsibility.
The primary responsibility of an engineer The primary responsibility of an engineer is always to the safety and well-being of is always to the safety and well-being of the public.the public.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
2424
ConflictConflict of of ResponsibilitiesResponsibilities
An Illustration - SDI (Star Wars): An Illustration - SDI (Star Wars): Service on the “Committee on Computing in Support ofService on the “Committee on Computing in Support ofBattle Management”.Battle Management”.Some questions that arose:Some questions that arose:a)a) Was it honest? (Was it honest? (personal responsibilitypersonal responsibility) ) b)b) Had I made a Had I made a professionalprofessional commitment? Was our activity commitment? Was our activity
designing a system that would meet the needs of the designing a system that would meet the needs of the customer as required by professional codes? What should a customer as required by professional codes? What should a professional do if the answers were “yes” and “no”? professional do if the answers were “yes” and “no”?
c)c) Was this project good for society? Should I explain my Was this project good for society? Should I explain my views to the public? views to the public?
Some regarded a “Yes” to (c) as unprofessional. The Some regarded a “Yes” to (c) as unprofessional. The conflict in (b) was resolved by a detailed explanation.conflict in (b) was resolved by a detailed explanation.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
2525
Why would I work on Why would I work on Nuclear Plants but not Star Nuclear Plants but not Star
Wars? Wars? [5,6][5,6]
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
2626
The Social The Social Responsibility of Responsibility of Scientists And Scientists And
EngineersEngineers““In the land of the blind, In the land of the blind,
the one eyed man is king”.the one eyed man is king”.
In a world increasingly dependent on In a world increasingly dependent on science and technology, Scientists and science and technology, Scientists and Engineers are the one-eyed people.Engineers are the one-eyed people.
The majority of our decision-makers are The majority of our decision-makers are blind.blind.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
2727
The Social The Social Responsibility of Responsibility of
Scientists And EngineersScientists And EngineersConsider the following public issues: Consider the following public issues:
Can we reduce our energy expenditures without great disruption Can we reduce our energy expenditures without great disruption in people's lives?in people's lives?
How urgent is the need to reduce the level of greenhouse gasses?How urgent is the need to reduce the level of greenhouse gasses? Should we build more nuclear power generating stations?Should we build more nuclear power generating stations? Is it safe to allow nuclear power generating stations to be Is it safe to allow nuclear power generating stations to be
controlled by computers?controlled by computers? Can technology help us to reduce the amount of the paper that Can technology help us to reduce the amount of the paper that
we use? Should we do that?we use? Should we do that? Is it safe to allow computers to control cars and trucks?Is it safe to allow computers to control cars and trucks?
Decisions will be taken by non-specialists, but the input will come Decisions will be taken by non-specialists, but the input will come from people like us. We must give them complete and accurate from people like us. We must give them complete and accurate information.information.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
2828
The Social The Social Responsibility of Responsibility of Scientists And Scientists And
EngineersEngineersScience and technology are the “black magic” of our age. We use arcane rituals and Science and technology are the “black magic” of our age. We use arcane rituals and obscure terminology.obscure terminology.
The public thinks that science can solve any problem if given enough funds. Public The public thinks that science can solve any problem if given enough funds. Public officialsofficials
share this attitude. They fall for scientific fads.share this attitude. They fall for scientific fads. Buzzwords and big promises, favored over solid scientific work. Buzzwords and big promises, favored over solid scientific work.
The rewards often go to the illusionists. The successful do not speak out. The others areThe rewards often go to the illusionists. The successful do not speak out. The others areignored (“sour grapes”). ignored (“sour grapes”).
Most of us “go along” to get funds.Most of us “go along” to get funds.
Don’t we have a responsibility to see that society’s funds are well used?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 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.and, if you decide not to participate, whether you should make your decision public.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
2929
The Professional The Professional Responsibilities of Responsibilities of
EngineersEngineersUnfortunatelyUnfortunately, Software Engineers are not always Engineers., Software Engineers are not always Engineers.
“ “Software Engineering” is a shallow course on programming, taught in a science Software Engineering” is a shallow course on programming, taught in a science department, not a professional program in Engineering. Many “software department, not a professional program in Engineering. Many “software engineers” have no technical education.engineers” have no technical education.
Many Many could notcould not be Professional Engineers.be Professional Engineers. Many confuse software engineering with configuration management.Many confuse software engineering with configuration management.
An Engineer is someone who uses advanced knowledge of science, An Engineer is someone who uses advanced knowledge of science, mathematics, and technology to build objects for use by others.mathematics, and technology to build objects for use by others.
Most programmers or software engineers, are Engineers, under qualified, Most programmers or software engineers, are Engineers, under qualified, unlicensed, and often unprofessional. They are unaware of their professional unlicensed, and often unprofessional. They are unaware of their professional responsibilities. responsibilities.
Programmers need to learn about the professional responsibility of Programmers need to learn about the professional responsibility of engineers.engineers.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
3030
Why do we have Why do we have licensed Professional licensed Professional
Engineers?Engineers?An old system introduced because:An old system introduced because:
Some products potentially dangerous. Incompetent designs a Some products potentially dangerous. Incompetent designs a danger to public. danger to public.
Purchasers and some employers are often unable to judge the Purchasers and some employers are often unable to judge the competence of designers.competence of designers.
Competent, conscientious, disciplined professionals want Competent, conscientious, disciplined professionals want public to distinguish between themselves and others. Bad work public to distinguish between themselves and others. Bad work by a few damages the reputations and business prospects of by a few damages the reputations and business prospects of all.all.
Financial pressures may tempt employers to “cut corners”. We Financial pressures may tempt employers to “cut corners”. We are protected better when professional obligations go beyond are protected better when professional obligations go beyond loyalty or obedience to an employer. loyalty or obedience to an employer. Professionals do say Professionals do say “No”.“No”.
Don’t all of these reasons apply to software construction?Don’t all of these reasons apply to software construction?
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
3131
What is the What is the Professional Professional
Engineering Societies ?Engineering Societies ?1.1. Professional Engineering Societies were established by legislation Professional Engineering Societies were established by legislation
to assure competence and awareness of professional to assure competence and awareness of professional responsibilities.responsibilities.
2.2. Regulations require that certain products be produced or Regulations require that certain products be produced or approved by a recognized Professional Engineer.approved by a recognized Professional Engineer.
3.3. There is a separate committee to accredit programs. Accreditation There is a separate committee to accredit programs. Accreditation is a very serious process. Graduates of accredited programs have is a very serious process. Graduates of accredited programs have an easier path to recognition as a Professional Engineer. [5]an easier path to recognition as a Professional Engineer. [5]
An exam on responsibilities is required in any case. [6]An exam on responsibilities is required in any case. [6]
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
3232
Why are “Software Why are “Software Engineers” different?Engineers” different?
The result of a “software crisis” (optimism).The result of a “software crisis” (optimism). Originally dealt with as a scientific problem. The basis of software engineering was Originally dealt with as a scientific problem. The basis of software engineering was
not well understood.not well understood. First meetings attended by many mathematicians and scientists, few engineers.First meetings attended by many mathematicians and scientists, few engineers. Many engineers were still blissfully unaware of the importance of computers in Many engineers were still blissfully unaware of the importance of computers in
their profession.their profession. The word is “Engineering” used to indicate practical concerns, not a profession.The word is “Engineering” used to indicate practical concerns, not a profession. Professional societies did not take it seriously. Software Engineering has Professional societies did not take it seriously. Software Engineering has
developed developed outside outside of the Engineering Community. of the Engineering Community. It has been left to Computer Science departments, taught by people who are not It has been left to Computer Science departments, taught by people who are not
Engineers.Engineers. Because badly designed computer programs are hard to manage, emphasis has Because badly designed computer programs are hard to manage, emphasis has
been on project management, project scheduling, version control, etc.been on project management, project scheduling, version control, etc.
Today, the engineering societies are beginning to do what they were always required Today, the engineering societies are beginning to do what they were always required to do. to do.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
3333
What are the What are the obligations of the obligations of the
engineer?engineer?1.1. Accept individual responsibility.Accept individual responsibility.
2.2. Solve the real problemSolve the real problem
3.3. Be honest about capabilitiesBe honest about capabilities
4.4. Produce reviewable designsProduce reviewable designs
5.5. MaintainabilityMaintainability
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
3434
What are the What are the obligations of the obligations of the
engineer?engineer?1.1. Accept individual responsibility.Accept individual responsibility.
Following orders does not justify approving Following orders does not justify approving bad designs.bad designs.
One cannot always be a “team player”.One cannot always be a “team player”. Professional standards have priority over other Professional standards have priority over other
pressurespressures
2.2. Solve the real problemSolve the real problem Look beyond the customer’s opinionsLook beyond the customer’s opinions Have a precise description of a problem.Have a precise description of a problem. Get that description reviewed before building.Get that description reviewed before building.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
3535
What are the What are the obligations of the obligations of the
engineer?engineer?3. Be honest about capabilities3. Be honest about capabilities
Don’t offer technical solutions where there are none.Don’t offer technical solutions where there are none. Don’t do studies when you already know the answer.Don’t do studies when you already know the answer.
4. Produce reviewable designs4. Produce reviewable designs No individual is infallible.No individual is infallible. Document to make reviewing easy.Document to make reviewing easy.
5. Maintainability5. Maintainability Produce a product that can be maintained without you. - Produce a product that can be maintained without you. -
It’s not your personal product.It’s not your personal product.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
3636
Professional Practice Professional Practice in Software in Software
DevelopmentDevelopmentSome responses to a critical consultant:Some responses to a critical consultant: ““Of course it’s wrong, but that is what my boss told me to do.”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.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.”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 At XYZ corporation, we don’t tell our customers that they are wrong, we take their
contracts.”contracts.” ““That’s not the real problem, but they asked us to do it.”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 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 We’ve got a deadline; we’ll worry about maintainability when we get the maintenance
contract.contract. “ “We don’t like people criticizing our designs!”We don’t like people criticizing our designs!”
My personal favorites came from the IT manager of J&J and MedAmerica:My personal favorites came from the IT manager of J&J and MedAmerica: ““It is what it is. Take initiative, make it happened”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”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 These remarks showed that the speakers were unaware of the professional responsibilities of engineers.responsibilities of engineers.
Some had not heard of those responsibilities.Some had not heard of those responsibilities. Some had no such excuse!Some had no such excuse!
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
3737
A Simple Example: A Simple Example: PacemakersPacemakers
Their importance to the user is obvious! Their importance to the user is obvious! They are also important to those nearby. They are also important to those nearby. They are controlled by software.They are controlled by software.
Many modes of operationMany modes of operation Computer controlled telemetry systemComputer controlled telemetry system Data collectionData collection ““Programmable” by remove controlProgrammable” by remove control ““When needed” intervention.When needed” intervention. Rate responds to body activity.Rate responds to body activity. Packaged in a small sealed unitPackaged in a small sealed unit Must survive in a “hostile environment”Must survive in a “hostile environment”
Clearly the type of device that should be built by engineers.Clearly the type of device that should be built by engineers.The program is critical and should be well documented and The program is critical and should be well documented and
reviewable.reviewable.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
3838
What Should be Done What Should be Done for Pacemaker for Pacemaker
Software?Software?1.1. Programmer should have a precise description of the Programmer should have a precise description of the
environment and requirements [7]environment and requirements [7]2.2. Black box description should have been produced for review.Black box description should have been produced for review.3.3. Document should have been reviewable and reviewed by Document should have been reviewable and reviewed by
Cardiologists. Cardiologists. 4.4. The code should have been documented in a way that The code should have been documented in a way that
permitted systematic review and revision.[8]permitted systematic review and revision.[8]5.5. Code should have been subject to systematic inspection. Code should have been subject to systematic inspection. 6.6. Doctor should have been provide with well-organized precise Doctor should have been provide with well-organized precise
documentation that explained the behavior of the device to documentation that explained the behavior of the device to him.him.
All of these things would be expected of a professional All of these things would be expected of a professional engineer.engineer.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
3939
Pacemaker Software Pacemaker Software AnecdoteAnecdote
Pacemaker “refused” the surgeon’s command; neither surgeon nor Pacemaker “refused” the surgeon’s command; neither surgeon nor technician understood why. technician understood why.
The explanation was found in a footnote after several hours of reading. It 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 took 30 minutes to find it the second time. Engineer responsible could explain the hardware aspects in great detail. He referred to a programmer, explain the hardware aspects in great detail. He referred to a programmer, who could not be found, to explain the code. who could not be found, to explain the code.
Programming had been viewed as a trivial task; Responsible engineer did Programming had been viewed as a trivial task; Responsible engineer did not not
review it.review it.
As a result of inadequate review, there are fundamental weaknessesAs a result of inadequate review, there are fundamental weaknesses• • Motion sensor does not measure physical activityMotion sensor does not measure physical activity• • Expected rate adjustment is inflexible.Expected rate adjustment is inflexible.The problem solved was not the real problem.The problem solved was not the real problem.
This was a typical software product.This was a typical software product.The software was written as it would have been written 25 years ago.The software was written as it would have been written 25 years ago.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
4040
More examplesMore examples
Med America PDAMed America PDA Firewalls (Software vs. hardware)Firewalls (Software vs. hardware) Heart Surgeries and what doctors don’t Heart Surgeries and what doctors don’t
want to tell Software engineerswant to tell Software engineers
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
4141
Software used by Software used by Professional Engineers and Professional Engineers and
other concernsother concernsProfessional Engineers take responsibility for their Professional Engineers take responsibility for their
products, but, ...products, but, ... To design those products they use software that To design those products they use software that
comes with a disclaimer instead of a warranty,comes with a disclaimer instead of a warranty, Professional Engineers belong to a society that Professional Engineers belong to a society that
enforces codes of professional behavior, but enforces codes of professional behavior, but they must use tools produced by people who do they must use tools produced by people who do
not belong to such a society.not belong to such a society.
This cannot be a stable situation!This cannot be a stable situation!
OS’s as bridges OS’s as bridges ((Tacoma Narrows Bridge November 7, 1940Tacoma Narrows Bridge November 7, 1940 ) )
TacomaNarrowsBridge.mpeg
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
4242
The “Know How” isn’t The “Know How” isn’t There!There!
If we look at other areas of engineering, we know what softwareIf we look at other areas of engineering, we know what softwareengineers should do. If we look at current practice, those things are engineers should do. If we look at current practice, those things are
notnotdone.done.
It’s not just a matter of lack of will. It’s not just a matter of lack of 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 awareness. Most programmers do not know how to do the things
thatthatthey should do.they should do.
They do not know how to:They do not know how to: document requirements in a way that can be reviewed by subject document requirements in a way that can be reviewed by subject
matter experts,matter experts, document code precisely and completely,document code precisely and completely, inspect code systematically.inspect code systematically.SDF - Trying to give that “know how”.SDF - Trying to give that “know how”.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
4343
The “Know How” isn’t The “Know How” isn’t There!There!
Is there a Solution to thisIs there a Solution to this
problem?problem?
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
4444
Improving Improving Professionalism in Professionalism in
Software DevelopmentSoftware Development
Three steps:Three steps:
1.1. Work with Professional Engineering Work with Professional Engineering societies.societies.
2.2. Develop better educational programs.Develop better educational programs.
3.3. Develop accreditation procedures for Develop accreditation procedures for Software Engineering programs.Software Engineering programs.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
4545
Work with Professional Work with Professional Engineering societiesEngineering societies
We should stop fighting and work with the We should stop fighting and work with the Engineering groups on the establishing standards Engineering groups on the establishing standards for a new “flavor” of Engineer, either “Software for a new “flavor” of Engineer, either “Software Engineer” or “Computer Engineer”Engineer” or “Computer Engineer”
We should take the advantage of the experience We should take the advantage of the experience that this groups have in setting professional that this groups have in setting professional standardsstandards
We should use existing legislations to enforce We should use existing legislations to enforce those standards.those standards.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
4646
Develop accreditation Develop accreditation procedures for Software procedures for Software Engineering programsEngineering programs
It is time to develop standards for the educational programsIt is time to develop standards for the educational programsthat will be uniquely designed and target needs of Softwarethat will be uniquely designed and target needs of SoftwareEngineering as a discipline not as a subprogram of ElectricalEngineering as a discipline not as a subprogram of ElectricalEngineering or Computer Science. Engineering or Computer Science.
The aim [of education] must be the training of independentlyThe aim [of education] must be the training of independentlyacting and thinking individuals who, however, see in the acting and thinking individuals who, however, see in the service to the community their highest life achievement. service to the community their highest life achievement. – – Albert EinsteinAlbert Einstein
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
4747
Develop better Develop better educational programseducational programs
We are not ready to work with the We are not ready to work with the accreditation committees even if they accreditation committees even if they are:are:
Little agreement on the essential Little agreement on the essential knowledge required of those practicing knowledge required of those practicing Software EngineeringSoftware Engineering
We need to remember that Engineering We need to remember that Engineering is not Management our current programs is not Management our current programs and literature confuse them.and literature confuse them.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
4848
Recap the PRoSERecap the PRoSE
PRoSE - is a poetry in motion. PRoSE - is a poetry in motion. It’s time to quit “firefighting” ways of the softwareIt’s time to quit “firefighting” ways of the softwaredevelopment and start utilizing engineering development and start utilizing engineering
principals.principals.
Responsibility of Software Engineers:Responsibility of Software Engineers:1.1. PersonalPersonal2.2. Social Social 3.3. ProfessionalProfessional
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
4949
AgendaAgenda About the speakerAbout the speaker How is software designed todayHow is software designed today Hall of ShameHall of Shame The PRoSE by D. L. ParnasThe PRoSE by D. L. Parnas ACM on PRoSEACM on PRoSE Practical Examples from ExperiencePractical Examples from Experience QA or Q&AQA or Q&A
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
5050
Software Software Engineering Code Engineering Code
of Ethics and of Ethics and Professional Professional
PracticePractice Recommended and jointly approved Recommended and jointly approved
by the ACM and the IEEE-CS as the by the ACM and the IEEE-CS as the standard for teaching and practicing standard for teaching and practicing software engineering.software engineering.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
5151
Software Software Engineering Code Engineering Code
of Ethics and of Ethics and Professional Professional
PracticePractice The Code contains eight Principles related to the The Code contains eight Principles related to the behavior of and decisions made by professional behavior of and decisions made by professional software engineers, including practitioners, software engineers, including practitioners, educators, managers, supervisors and policy makers, educators, managers, supervisors and policy makers, as well as trainees and students of the profession. as well as trainees and students of the profession.
These obligations are founded in the software These obligations are founded in the software engineer's humanity, in special care owed to people engineer's humanity, in special care owed to people affected by the work of software engineers, and in affected by the work of software engineers, and in the unique elements of the practice of software the unique elements of the practice of software engineering. engineering.
The Code prescribes these as obligations of anyone The Code prescribes these as obligations of anyone
claiming to be or aspiring to be a software engineer.claiming to be or aspiring to be a software engineer.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
5252
Principles of Principles of Software Software
Engineering Code Engineering Code of Ethicsof Ethics
1.1. PUBLICPUBLIC
2.2. CLIENT AND EMPLOYERCLIENT AND EMPLOYER
3.3. PRODUCTPRODUCT
4.4. JUDGMENTJUDGMENT
5.5. MANAGEMENTMANAGEMENT
6.6. PROFESSIONPROFESSION
7.7. COLLEAGUESCOLLEAGUES
8.8. SELFSELF
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
5353
Principle 1 Principle 1 PUBLICPUBLIC
Software engineers shall act consistently with the public interest. Software engineers shall act consistently with the public interest. In particular, software engineers shall, as appropriate:In particular, software engineers shall, as appropriate:
1.01. Accept full responsibility for their own work.1.01. Accept full responsibility for their own work.1.02. Moderate the interests of the software engineer, the employer, the client and 1.02. Moderate the interests of the software engineer, the employer, the client and
the users with the public good.the users with the public good.1.03. Approve software only if they have a well-founded belief that it is safe, meets 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, specifications, passes appropriate tests, and does not diminish quality of life, diminish privacy or harm the environment. The ultimate effect of the work should diminish privacy or harm the environment. The ultimate effect of the work should be to the public good.be to the public good.
1.04. Disclose to appropriate persons or authorities any actual or potential danger to 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 the user, the public, or the environment, that they reasonably believe to be associated with software or related documents.associated with software or related documents.
1.05. Cooperate in efforts to address matters of grave public concern caused by 1.05. Cooperate in efforts to address matters of grave public concern caused by software, its installation, maintenance, support or documentation.software, its installation, maintenance, support or documentation.
1.06. Be fair and avoid deception in all statements, particularly public ones, 1.06. Be fair and avoid deception in all statements, particularly public ones, concerning software or related documents, methods and tools.concerning software or related documents, methods and tools.
1.07. Consider issues of physical disabilities, allocation of resources, economic 1.07. Consider issues of physical disabilities, allocation of resources, economic disadvantage and other factors that can diminish access to the benefits of disadvantage and other factors that can diminish access to the benefits of software.software.
1.08. Be encouraged to volunteer professional skills to good causes and contribute to 1.08. Be encouraged to volunteer professional skills to good causes and contribute to public education concerning the discipline.public education concerning the discipline.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
5454
Principle 2 CLIENT Principle 2 CLIENT AND EMPLOYERAND EMPLOYER
Software engineers shall act in a manner that is in the best Software engineers shall act in a manner that is in the best interests of their client and employer, consistent with the public interests of their client and employer, consistent with the public interest. In particular, software engineers shall, as appropriate:interest. In particular, software engineers shall, as appropriate:
2.01. Provide service in their areas of competence, being honest and forthright about any 2.01. Provide service in their areas of competence, being honest and forthright about any limitations of their experience and education.limitations of their experience and education.
2.02. Not knowingly use software that is obtained or retained either illegally or unethically.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 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.the client's or employer's knowledge and consent.2.04. Ensure that any document upon which they rely has been approved, when required, 2.04. Ensure that any document upon which they rely has been approved, when required,
by someone authorized to approve it.by someone authorized to approve it.2.05. Keep private any confidential information gained in their professional work, where 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.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 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 if, in their opinion, a project is likely to fail, to prove too expensive, to violate intellectual property law, or otherwise to be problematic.intellectual property law, or otherwise to be problematic.
2.07. Identify, document, and report significant issues of social concern, of which they are 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.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 2.08. Accept no outside work detrimental to the work they perform for their primary employer.employer.
2.09. Promote no interest adverse to their employer or client, unless a higher ethical 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 concern is being compromised; in that case, inform the employer or another appropriate authority of the ethical concern.authority of the ethical concern.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
5555
Principle 3 PRODUCTPrinciple 3 PRODUCT Software engineers shall ensure that their products and Software engineers shall ensure that their products and
related modifications meet the highest professional related modifications meet the highest professional standards possible. In particular, software engineers standards possible. In particular, software engineers shall, as appropriateshall, as appropriate::
3.01. Strive for high quality, acceptable cost and a reasonable schedule, ensuring significant tradeoffs are 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 clear to and accepted by the employer and the client, and are available for consideration by the user and the public.the public.
3.02. Ensure proper and achievable goals and objectives for any project on which they work or propose.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 3.03. Identify, define and address ethical, economic, cultural, legal and environmental issues related to work
projects.projects.3.04. Ensure that they are qualified for any project on which they work or propose to work by an appropriate 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.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.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, 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.departing from these only when ethically or technically justified.3.07. Strive to fully understand the specifications for software on which they work.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 3.08. Ensure that specifications for software on which they work have been well documented, satisfy the
users’ requirements and have the appropriate approvals.users’ requirements and have the appropriate approvals.3.09. Ensure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any 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 project on which they work or propose to work and provide an uncertainty assessment of these estimates.estimates.
3.10. Ensure adequate testing, debugging, and review of software and related documents on which they 3.10. Ensure adequate testing, debugging, and review of software and related documents on which they work.work.
3.11. Ensure adequate documentation, including significant problems discovered and solutions adopted, for 3.11. Ensure adequate documentation, including significant problems discovered and solutions adopted, for any project on which they work.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 3.12. Work to develop software and related documents that respect the privacy of those who will be affected by that software.by that software.
3.13. Be careful to use only accurate data derived by ethical and lawful means, and use it only in ways 3.13. Be careful to use only accurate data derived by ethical and lawful means, and use it only in ways properly authorized.properly authorized.
3.14. Maintain the integrity of data, being sensitive to outdated or flawed occurrences.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.3.15 Treat all forms of software maintenance with the same professionalism as new development.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
5656
Principle 4 Principle 4 JUDGMENTJUDGMENT
Software engineers shall maintain integrity and Software engineers shall maintain integrity and independence in their professional judgment. In particular, independence in their professional judgment. In particular, software engineers shall, as appropriate:software engineers shall, as appropriate:
4.01. Temper all technical judgments by the need to support and maintain human 4.01. Temper all technical judgments by the need to support and maintain human values.values.
4.02 Only endorse documents either prepared under their supervision or within 4.02 Only endorse documents either prepared under their supervision or within their areas of competence and with which they are in agreement.their areas of competence and with which they are in agreement.
4.03. Maintain professional objectivity with respect to any software or related 4.03. Maintain professional objectivity with respect to any software or related documents they are asked to evaluate.documents they are asked to evaluate.
4.04. Not engage in deceptive financial practices such as bribery, double billing, or 4.04. Not engage in deceptive financial practices such as bribery, double billing, or other improper financial practices.other improper financial practices.
4.05. Disclose to all concerned parties those conflicts of interest that cannot 4.05. Disclose to all concerned parties those conflicts of interest that cannot reasonably be avoided or escaped.reasonably be avoided or escaped.
4.06. Refuse to participate, as members or advisors, in a private, governmental or 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 professional body concerned with software related issues, in which they, their employers or their clients have undisclosed potential conflicts of interest.employers or their clients have undisclosed potential conflicts of interest.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
5757
Principle 5 Principle 5 MANAGEMENTMANAGEMENT
Software engineering managers and leaders shall subscribe to Software engineering managers and leaders shall subscribe to
and promote an ethical approach to the management of and promote an ethical approach to the management of software development and maintenance . In particular, those software development and maintenance . In particular, those managing or leading software engineers shall, as appropriate:managing or leading software engineers shall, as appropriate:
5.01 Ensure good management for any project on which they work, including effective procedures for 5.01 Ensure good management for any project on which they work, including effective procedures for promotion of quality and reduction of risk.promotion of quality and reduction of risk.
5.02. Ensure that software engineers are informed of standards before being held to them.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 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.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 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.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 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 any project on which they work or propose to work, and provide an uncertainty assessment of these estimates. these estimates.
5.06. Attract potential software engineers only by full and accurate description of the conditions of 5.06. Attract potential software engineers only by full and accurate description of the conditions of employment.employment.
5.07. Offer fair and just remuneration.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.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, 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.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.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.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.5.12. Not punish anyone for expressing ethical concerns about a project.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
5858
Principle 6 Principle 6 PROFESSIONPROFESSION
Software engineers shall advance the integrity and reputation Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. In of the profession consistent with the public interest. In particular, software engineers shall, as appropriate:particular, software engineers shall, as appropriate:
6.01. Help develop an organizational environment favorable to acting ethically.6.01. Help develop an organizational environment favorable to acting ethically.6.02. Promote public knowledge of software engineering.6.02. Promote public knowledge of software engineering.6.03. Extend software engineering knowledge by appropriate participation in professional 6.03. Extend software engineering knowledge by appropriate participation in professional
organizations, meetings and publications.organizations, meetings and publications.6.04. Support, as members of a profession, other software engineers striving to follow this Code.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.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 6.06. Obey all laws governing their work, unless, in exceptional circumstances, such compliance is
inconsistent with the public interest.inconsistent with the public interest.6.07. Be accurate in stating the characteristics of software on which they work, avoiding not only 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, false claims but also claims that might reasonably be supposed to be speculative, vacuous, deceptive, misleading, or doubtful.deceptive, misleading, or doubtful.
6.08. Take responsibility for detecting, correcting, and reporting errors in software and associated 6.08. Take responsibility for detecting, correcting, and reporting errors in software and associated documents on which they work.documents on which they work.
6.09. Ensure that clients, employers, and supervisors know of the software engineer's commitment 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.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.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 6.11. Recognize that violations of this Code are inconsistent with being a professional software
engineer.engineer.6.12. Express concerns to the people involved when significant violations of this Code are detected 6.12. Express concerns to the people involved when significant violations of this Code are detected
unless this is impossible, counter-productive, or dangerous.unless this is impossible, counter-productive, or dangerous.6.13. Report significant violations of this Code to appropriate authorities when it is clear that 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-consultation with people involved in these significant violations is impossible, counter-productive or dangerous.productive or dangerous.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
5959
Principle 7 Principle 7 COLLEAGUESCOLLEAGUES
Software engineers shall be fair to and supportive of their Software engineers shall be fair to and supportive of their colleagues. In particular, software engineers shall, as colleagues. In particular, software engineers shall, as appropriate:appropriate:
7.01. Encourage colleagues to adhere to this Code.7.01. Encourage colleagues to adhere to this Code.7.02. Assist colleagues in professional development.7.02. Assist colleagues in professional development.7.03. Credit fully the work of others and refrain from taking undue credit.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-7.04. Review the work of others in an objective, candid, and properly-
documented way.documented way.7.05. Give a fair hearing to the opinions, concerns, or complaints of a colleague.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 7.06. Assist colleagues in being fully aware of current standard work practices
including policies and procedures for protecting passwords, files and other including policies and procedures for protecting passwords, files and other confidential information, and security measures in general.confidential information, and security measures in general.
7.07. Not unfairly intervene in the career of any colleague; however, concern for 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 the employer, the client or public interest may compel software engineers, in good faith, to question the competence of a colleague.good faith, to question the competence of a colleague.
7.08. In situations outside of their own areas of competence, call upon the 7.08. In situations outside of their own areas of competence, call upon the opinions of other professionals who have competence in that area.opinions of other professionals who have competence in that area.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
6060
Principle 8 SELFPrinciple 8 SELF Software engineers shall participate in lifelong learning regarding Software engineers shall participate in lifelong learning regarding
the practice of their profession and shall promote an ethical the practice of their profession and shall promote an ethical approach to the practice of the profession. In particular, software approach to the practice of the profession. In particular, software engineers shall continually endeavor to:7.01. Encourage engineers shall continually endeavor to:7.01. Encourage colleagues to adhere to this Code.colleagues to adhere to this Code.
8.01. Further their knowledge of developments in the analysis, specification, design, 8.01. Further their knowledge of developments in the analysis, specification, design, development, maintenance and testing of software and related documents, together development, maintenance and testing of software and related documents, together with the management of the development process.with the management of the development process.
8.02. Improve their ability to create safe, reliable, and useful quality software at 8.02. Improve their ability to create safe, reliable, and useful quality software at reasonable cost and within a reasonable time.reasonable cost and within a reasonable time.
8.03. Improve their ability to produce accurate, informative, and well-written 8.03. Improve their ability to produce accurate, informative, and well-written documentation.documentation.
8.04. Improve their understanding of the software and related documents on which they 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.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 8.05. Improve their knowledge of relevant standards and the law governing the software and related documents on which they work.and related documents on which they work.
8.06 Improve their knowledge of this Code, its interpretation, and its application to their 8.06 Improve their knowledge of this Code, its interpretation, and its application to their work.work.
8.07 Not give unfair treatment to anyone because of any irrelevant prejudices.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.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 8.09. Recognize that personal violations of this Code are inconsistent with being a
professional software engineer.professional software engineer.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
6161
Principles of Principles of Software Software
Engineering Code of Engineering Code of EthicsEthics1.1. PUBLICPUBLIC 2.2. CLIENT AND EMPLOYERCLIENT AND EMPLOYER 3.3. PRODUCTPRODUCT4.4. JUDGMENTJUDGMENT5.5. MANAGEMENTMANAGEMENT6.6. PROFESSIONPROFESSION7.7. COLLEAGUESCOLLEAGUES 8.8. SELFSELF
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
6262
AgendaAgenda About the speakerAbout the speaker How is software designed todayHow is software designed today Hall of ShameHall of Shame The PRoSE by D. L. ParnasThe PRoSE by D. L. Parnas ACM on PRoSEACM on PRoSE Practical Examples – Success Practical Examples – Success QA or Q&AQA or Q&A
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
6363
PRoSE worksPRoSE works
NasdaqNasdaq CASCAS MicrowarehouseMicrowarehouse SDFSDF
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
6464
ReferencesReferences
1.1. Leveson, N. G. (1995). Safeware: System safety and Leveson, N. G. (1995). Safeware: System safety and computers. New York: Addison Wesley.computers. New York: Addison Wesley.
2.2. F.P. Brooks “Mythical Man Month”F.P. Brooks “Mythical Man Month”3.3. Software Development 2000 West in San Jose. Full transcript is Software Development 2000 West in San Jose. Full transcript is
available on (available on (http://www.construx.com/docs/open/sd2000.pdfhttp://www.construx.com/docs/open/sd2000.pdf or or http://http://technetcast.ddj.com/tnc_program.html?program_idtechnetcast.ddj.com/tnc_program.html?program_id=80=80))
4.4. Boehm, B. et al: Software Cost Estimation with COCOMO II, Boehm, B. et al: Software Cost Estimation with COCOMO II, Prentice Hall PTR (2000)Prentice Hall PTR (2000)
5.5. Parnas, D.L. Software Aspects of Strategic Defense SystemsParnas, D.L. Software Aspects of Strategic Defense Systems6.6. Parnas, D.L. “SDI: A violation of Professional Responsibility”Parnas, D.L. “SDI: A violation of Professional Responsibility”7.7. Parnas, D.L. , Medley, J. “Functional Documentation for Parnas, D.L. , Medley, J. “Functional Documentation for
Computer Systems engineering (Version2)”Computer Systems engineering (Version2)”8.8. Parnas, D.L. , Medley, J., Iglewski, M. “Formal documentation of Parnas, D.L. , Medley, J., Iglewski, M. “Formal documentation of
Well-Structured Programs”.Well-Structured Programs”.
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
6565
AgendaAgenda About the speakerAbout the speaker How is software designed todayHow is software designed today Hall of ShameHall of Shame The PRoSE by D. L. ParnasThe PRoSE by D. L. Parnas ACM on PRoSEACM on PRoSE Practical Examples – SuccessPractical Examples – Success QA or Q&AQA or Q&A
03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers
6666
QA or Q&AQA or Q&A