The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 -...

66
The Professional The Professional Responsibilities Responsibilities of Software Engineers of Software Engineers City University of New York /GC City University of New York /GC CSc 79000 - Software Engineering CSc 79000 - Software Engineering Professor Danny Kopec Professor Danny Kopec Prepared by Ellen Pesochin Prepared by Ellen Pesochin

Transcript of The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 -...

Page 1: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 2: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 3: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 4: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 5: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 6: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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)

Page 7: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 8: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 9: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 10: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 11: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 12: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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]

Page 13: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 14: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 15: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 16: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 17: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 18: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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”.

Page 19: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 20: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 21: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 22: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 23: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 24: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 25: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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]

Page 26: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 27: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 28: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 29: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 30: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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?

Page 31: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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]

Page 32: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 33: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 34: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 35: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 36: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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!

Page 37: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 38: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 39: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 40: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 41: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 42: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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”.

Page 43: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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?

Page 44: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 45: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 46: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 47: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 48: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 49: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 50: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 51: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 52: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 53: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 54: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 55: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 56: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 57: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 58: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 59: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 60: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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.

Page 61: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 62: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 63: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers

6363

PRoSE worksPRoSE works

NasdaqNasdaq CASCAS MicrowarehouseMicrowarehouse SDFSDF

Page 64: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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”.

Page 65: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

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

Page 66: The Professional Responsibilities of Software Engineers City University of New York /GC CSc 79000 - Software Engineering Professor Danny Kopec Prepared.

03/14/0303/14/03 The Professional Responsibilities The Professional Responsibilities of Software Engineersof Software Engineers

6666

QA or Q&AQA or Q&A