Upload
katherine-weekly
View
224
Download
0
Embed Size (px)
Citation preview
CSDP Preparation CourseModule I: Business Practices and
Engineering Economics
Module I. Business Practices and Engineering Economics
2
Specifications
The exam specific topics covered in this module are listed below, and are the basis for the outline of its content.A. Engineering EconomicsB. Ethics C. Professional Practice D. Standards
Module I. Business Practices and Engineering Economics
3
Objectives
After completing this module, you should be able to…• Explain the problems of developing large software-intensive
systems • Define the term “software crisis”• Consider how economics affects software engineering• Describe the need for software engineering standards• Describe the elements of a profession• Identify legal issues affecting software engineering• List examples of unprofessional practice in software
engineering
Module I. Business Practices and Engineering Economics
4
Organization
The organization of information for each specification topic is as follows:
• Topic Content Slides - detail the important issues concerning each topic and support the module objectives
• Topic Reference Slides - detail the sources for the topical content and provides additional references for review
• Topic Quiz Slides - allow students to prepare for the exam
Module I. Business Practices and Engineering Economics
5
Introduction
• “The best thing about software is its flexibility: It can be programmed to do almost anything. The worst thing about software is also its flexibility: The “almost anything” characteristic has made it difficult to plan, monitor, and control software development [Royce, 1998].”
• In 1970, Winston Royce presented a paper titled “Managing the Development of Large Scale Software Systems” at IEEE WESCON, and it was considered a concise summary of software management philosophy at the time [WR98].
Module I. Business Practices and Engineering Economics
6
Introduction - 2
Increased Complexity
Walker Royce (Winston’s son) indicates the primary points of this paper which describes the waterfall model of software development are:1. Analysis and coding are the common steps to all
software development2. Complex systems require “overhead” steps - system
requirements definition, software requirements definition, program design, and testing
3. The basic framework described in this waterfall model is risky and invites failure [WR98]
Module I. Business Practices and Engineering Economics
7
Introduction – 3
In Theory • Due to the development risks discussed in point 3, five
necessary improvements were originally recommended in the paper for the waterfall model approach to work. 1. Complete program design before analysis and coding
begin.2. Maintain current and complete documentation.3. Do the job twice, if possible.4. Plan, control, and monitor testing.5. Involve the customer [WR98].
Module I. Business Practices and Engineering Economics
8
Introduction – 4
In Practice• Royce summarizes the characteristics of the conventional
process as applied, are not what was intended. 1. Protracted integration and late design breakage2. Late risk resolution3. Requirements-driven functional decomposition4. Adversarial stakeholder relationships5. Focus on documents and review meetings [WR98]
Module I. Business Practices and Engineering Economics
9
Introduction – 5
The State of Software Engineering• Walker Royce summarized the conclusions made by some
prominent analyses of the state of software engineering during the mid 1990’s. They are:• Software development is still highly unpredictable. • Management discipline is more of a discriminator in
success or failure than are technology advances.• The level of software scrap and rework is indicative of an
immature process. • As the trend of ever increasing system complexity began to
overwhelm the non ideal software management practices (read the misapplied waterfall model of management), a “software crisis” has ensued.
Module I. Business Practices and Engineering Economics
10
Introduction – 6
The Software Crisis
Original Definition• A software crisis is an event that causes delay in delivering a
software-intensive system due to delay in the software project schedule, causes the project to overrun its budget, or cause the delivered system to not meet its requirements
• Or as the term is used today, a crisis may occur when it appears that a software system cannot be delivered on time, or within budget, or meet the users’ and customer’s requirements
A New Definition• A software industry’s inability to deliver products fast enough
to meet customer demand has been called “the software crisis.” This “crisis” is characterized by a multiyear backlog of unfulfilled software requests. [ST97]
Module I. Business Practices and Engineering Economics
11
Introduction – 7
Crisis Case Example:• Denver’s new (1994) international airport, at twice the size of
Manhattan and 10 times the breadth of Heathrow, has a complex subterranean baggage-handling system:• 21 miles of steel track • 4,000 independent “telecars” routing and delivering
luggage between counter, gate, and claim areas of 20 different airlines
• A system of some 100 networked computers, 5,000 electric eyes, 400 radio receivers and 56 bar code scanners
• The opening of the airport was delayed over 9 months at a rate of $1.1 million a day in interest and operating costs [WG94]
Module I. Business Practices and Engineering Economics
12
Introduction – 8
What causes the crisis? - I• Software requirements do not adequately describe the user’s
needs or customer’s expectations • Project planning is frequently unrealistic, incomplete or
ignored • Project cost and schedule estimates are woefully
underestimated or established by managerial edict • Software quality is difficult to specify, design, and build-to
and is usually ignored [RT04, p. 2-11]
Module I. Business Practices and Engineering Economics
13
Introduction – 9
What causes the crisis? - II• Since little visibility of progress in software development
exists, that progress is generally unknown • Changes in requirements are not met with appropriate
changes in software plans • Design is changed without changing the requirements• Standards are neither documented or used [RT04, p. 2-12]
Module I. Business Practices and Engineering Economics
14
Introduction – 10
• Software Engineering is the Solution
What is software?
Software -- Computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system. Contrast with hardware. [IE610]
Module I. Business Practices and Engineering Economics
15
Introduction – 11
What is Engineering?• Engineering is concerned with applying science and
technology to develop products for use by society within the constraints of:
– Time - schedule – Resources – budget, personnel, machines, facilities, etc.– Technology – platform and domain – Quality – safety, security, reliability, etc.– Business – profit, stability, and growth – Ethics – serving society
• Science is concerned with understanding phenomenon; Engineering is concerned with applying science [RT04, p. 2-15]
Module I. Business Practices and Engineering Economics
16
Introduction – 12
What is Software Engineering?• The practical application of computer science, management
techniques, and other skills to the design, construction, and maintenance of software and its associated documents
• The systematic application of methods, tools, and techniques to achieve a stated requirement or objective for a software system
• The application of system engineering to software development
• Introduces an engineering discipline to software development to solve a or reduce the problems of late delivery, cost overruns, and failure to meet the requirements
• A means of communicating between stakeholders [RT04, p. 2-16]
Module I. Business Practices and Engineering Economics
17
Introduction References
• [IE610] IEEE Std 610.12-1990, Standard Glossary of Software Engineering Terminology
• [IS01] Sommerville, Ian, Software Engineering, 6th Edition, Addison-Wesley, NY, 2001
• [RT04] Thayer, Richard, 2004 Certified Software Development Professional (CSDP) Preparation Course, Chapter 2: Software Engineering and Society
• [ST97] Tockey, Steve, “A Missing Link in Software Engineering,” IEEE Software, November/December 1997
• [WR98] Royce, Walker, Software Project Management: A Unified Framework, Addison-Wesley, 1998, pp. 5-17
• [WG94] Gibbs, W. Wyatt, “Software’s Chronic Crisis,” Scientific American, September 1994
Module I. Business Practices and Engineering Economics
18
A. Engineering Economics
Engineering Economics - I
• Economics is defined as the study of how people make decisions in resource-limited situations• There is never enough money to cover all of the good
features we would like in our software product
Module I. Business Practices and Engineering Economics
19
A. Engineering Economics – 2
Engineering Economics - II
• Some issues of software engineering economics:• The outcome of a software development is not
guaranteed (the cost can be wasted)• Economic decisions must be made in areas of
uncertainty• Risk analysis and risk avoidance costs money, and may
not be needed• The cost effectiveness of software engineering tools and
methods is largely unknown [RT02, p. 2-22]
Module I. Business Practices and Engineering Economics
20
A. Engineering Economics – 3
Economic Data – I
Macro-economics• The field of software engineering supports a commercial
software sector that earns $200 billion to $240 billion in the United States every year. Software engineering drove $1 trillion of economic growth in the U.S. over the last decade.
Module I. Business Practices and Engineering Economics
21
A. Engineering Economics – 4
Economic Data – II
Micro-economics• About half of all software projects are cancelled by users
who change their minds, whether or not the software engineers would have succeeded.
• Maintenance: Most (70% or more) software engineering effort over the total lifetime of a system goes into maintenance and upgrades.
• Delivery: In the course of taking a large software project from conception to end user acceptance (and actual use) the cost of developing the software will typically range from 20-30% of the total. Commercial developers write 12,000 lines of code per year.• Government developers write 1,500 lines of code per
year. [Wikipedia, the free encyclopedia]
Module I. Business Practices and Engineering Economics
22
A. Engineering Economics – 5
Economics Considerations for Software Engineering
• Interest – The decision to carry out a software project should be based, at least partly, on the cost of financing it
• Economic equivalence – The principle of economic equivalence allows different cash flow situations (and thus different software project proposals) to be converted into common terms so they may be reasonably compared and logical conclusions can be drawn about their real economic differences
• Inflation and deflation – The change in the purchasing power of money over time
• Deciding among alternatives – Engineering economics provides a set of analytical processes for identifying the most cost-effective proposal in a set of (presumably technically feasible) alternatives [RT04, p. 2-23]
Module I. Business Practices and Engineering Economics
23
A. Engineering Economics – 6
Additional Economic Considerations• Value of assets -- What is the economic value of a software
system?• Evaluating replacements – What is the economic cost of a
replacement for an asset?• Income taxes – These are essentially the price paid for
government services. An income tax is based on the net profit (revenue minus expenditures) for an enterprise
• Break-even and optimization – Break-even analysis can be used to choose between multiple design options when the cost of those options is a function of one or more variables
• Estimates, risk, and uncertainty – Because estimates are little more than educated guesses, there is always a non-zero probability that the estimates will be wrong [ST97]
Module I. Business Practices and Engineering Economics
24
A. Engineering Economics – 7
Other Effects on Software Engineering
• The cost of developing a software system• The cost of software maintenance• The cost of staff-months to total software costs• The cost of rework• The cost of risk mitigation• The reduction of cost caused by improved software
development processes• The return on investment (ROI) for new software
development methods [RT04, p. 2-25]
Module I. Business Practices and Engineering Economics
25
A. Engineering Economics – 8
• Royce makes three key points on improving software economics:• Modern software technology is enabling systems to be
built with fewer human-generated source lines• Modern software processes are iterative• Modern software development and maintenance
environments are the delivery mechanism for process automation [WR98, p. 31]
Module I. Business Practices and Engineering Economics
26
A. Engineering Economics – 9
The Table on the following slide lists five fundamental cost parameters that software development organizations must manage to control development costs. [WR98, p. 32]
Module I. Business Practices and Engineering Economics
27
A. Engineering Economics – 10
Cost Model Parameters TRENDS
Size – Abstraction and component based development technologies
Higher order languages, Object-orientation, Reuse, Commercial components
Process – Methods and techniques
Iterative development, Process maturity models, Architecture-first development
Personnel – People factors Training and personnel skill development, Teamwork, Win-win cultures
Environment – Automation technologies and tools
Integrated tools, Open systems, Hardware platform performance, Automation of coding, documents, testing and analysis
Quality – Performance, reliability, accuracy
Hardware platform performance, Demonstration-based assessment, Statistical quality control
Module I. Business Practices and Engineering Economics
28
A. References
• [RT04] Thayer, Richard, 2004 Certified Software Development Professional (CSDP) Preparation Course, Chapter 2: Software Engineering and Society
• [ST97] Tockey, Steve, “A missing Link in Software Engineering,” IEEE Software, Nov/Dec 1997
• [WR98] Royce, Walker, Software Project Management: A Unified Framework, Addison-Wesley, 1998, pp. 21-51
• [Wikipedia, The Free Encyclopedia] http://en.wikipedia.org/wiki/Software_engineering_economics
Module I. Business Practices and Engineering Economics
29
A. Quiz
1. What percentage of software programs in modern practices is attributed to component based builds versus custom builds?
A. 10% component-based / 90% custom
B. 30% component-based / 70% custom
C. 70% component-based / 30% custom
D. 90% component-based / 10% custom
Module I. Business Practices and Engineering Economics
30
B. Ethics
Code of Ethics \ Principles - I• Software engineers shall commit themselves to making the
analysis, specification, design, development, testing, and maintenance of software a beneficial and respected profession [RT04, p. 2-33]
• In accordance with their commitment to the health, safety, and welfare of the public, software engineers shall adhere to the following Eight Principles:
1. Public – Software engineers shall act consistently with the public interest
2. Client and employer – Software engineers shall act in a manner that is in the best interest of their client and employer, and consistent with the public interest
Module I. Business Practices and Engineering Economics
31
B. Ethics – 2
Code of Ethics \ Principles - II
3. Product – Software engineers shall ensure that their products and related modifications meet the highest professional standards possible
4. Judgment – Software engineers shall maintain integrity and independence in their professional judgment
5. Management – Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance
6. Profession – Software engineers shall advance the integrity and reputation of the profession, consistent with the public interest
Module I. Business Practices and Engineering Economics
32
B. Ethics – 3
Code of Ethics \ Principles - III
7. Colleagues – Software engineers shall be fair to and supportive of their colleagues
8. Self – Software engineers shall practice in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession [IS01]
Module I. Business Practices and Engineering Economics
33
B. Ethics – 4
Ethics Versus the Law – I
• Ethics are a personal code of behavior. They represent an ideal we strive toward because we presume that to achieve ethical behavior is appropriate, honorable, and desirable both on a personal level and within the groups we belong to.
• Ethics can also represent an interim standard of behavior that will be replaced, to some extent, by laws when new technology comes into existence.
• Ethics can contrast with law. The law is a minimum standard of conduct imposed by society.
Module I. Business Practices and Engineering Economics
34
B. Ethics – 5
Ethics Versus the Law – II
• In a democratic society, the law represents the will of the majority. Violation of the law subjects the violator to punishment by the government.
• Ethics, on the other hand, are merely suggested, not mandated. They may be considered a maximum standard of conduct desired by society. Violation can result in a malpractice suit. [KD96]
Module I. Business Practices and Engineering Economics
35
B. References
• [IS01] Sommerville, Ian, Software Engineering, 6th Edition, Addison-Wesley, 2001, pp. 14-17
• [KD96] Dakin, Karl, “Are Developers Morally Challenged?”, IEEE Software, July 1996, pp. 51-57
• [RT04] Thayer, Richard, 2004 Certified Software Development Professional (CSDP) Preparation Course, Chapter 2: Software Engineering and Society
Module I. Business Practices and Engineering Economics
36
B. Quiz
1. The IEEE-CS/ACM Software Engineering Code of Ethics and Professional Practice allows you to accept a position for which you have no pertinent training or experience if:
I. The extent of your limitations are fully disclosed.II. Appropriate training in the pertinent area is taken concurrently.III. The position is in a field where engineering decisions are well known.IV. No conflict of interest is present.
[a] I only[b] I and II only[c] I, II, and III only[d] I, II, III, and IV
Module I. Business Practices and Engineering Economics
37
B. Quiz – 2
2. The most common approach to software development today according to Steve McConnell and Leonard L. Tripp is
a) Waterfall approach
b) Spiral approach
c) Iterative approach
d) Code and Fix programming - Hacking
Module I. Business Practices and Engineering Economics
38
B. Quiz – 3
3. A professional code of ethics actually need to address how many levels of obligation
A. 4
B. 3
C. 2
D. 1
Module I. Business Practices and Engineering Economics
39
B. Quiz – 4
4. What is the order of the three levels of Obligation of Professional code of ethics?
A. Each Profession, Professionalism, Humanity
B. Professionalism, Each Profession, Humanity
C. Humanity, Professionalism, Each Profession
D. None of the above
Module I. Business Practices and Engineering Economics
40
B. Quiz – 5
5. What are the two distinct approaches to code of ethics?
A. Virtue ethics and rights/obligations ethics
B. Short Version and Long Version code of ethics
C. Minimum detail Code approach and Detailed Code approach
D. All the above
Module I. Business Practices and Engineering Economics
41
B. Quiz – 6
6. How many principles are there in the code of ethics?
A. 2
B. 4
C. 6
D. 8
Module I. Business Practices and Engineering Economics
42
B. Quiz – 7
7. What is central to the code of ethics?
A. Loyal to the employer
B. Loyal to the profession
C. Public interest
D. All the above
Module I. Business Practices and Engineering Economics
43
C. Professional Practice
Elements of a Profession
• Initial professional education – Generally a university education accredited by an overseeing body
• Skills development – Software engineers need a minimum of six years of work experience
• Certification – Passing a certifying exam• Professional development – Ongoing professional education
to maintain/improve an individual’s knowledge• Professional societies – An organization of discipline
oriented individuals• Code of ethics – A measure to see that individual
practitioners behave responsibly
[McConnell and Tripp, 1999]
Module I. Business Practices and Engineering Economics
44
C. Professional Practice – 2
Legal Issues• Copyright use and violation• Software patents• Confidentiality (Protection) of data• Protection of intellectual properties• Ownership of computer programs• Ethics in competition• Non-disclosure agreements• Personal use of company property• Vandalism, illegal hacking, and viruses [RT04, p. 2-38]
Module I. Business Practices and Engineering Economics
45
C. Professional Practice – 3
Have you ever…• Operated a computer program without first reading the terms
and conditions of the license agreements?• Downloaded a computer program from a disk or the internet
without verifying program ownership?• Written a program that contained code created by other
computer programmers without obtaining authorization?• Held up delivery of code or documentation to improve your
bargaining position in your employment or a contract?• Rewritten someone’s utility, program, or system and claimed
the end result as your own?• Taken a copy of source code when you left a job?• Copied a software package for your own use without paying
royalties?[Dakin, 1996]
Module I. Business Practices and Engineering Economics
46
C. References
• [Dakin, 1996] Dakin, Karl, “Are Developers Morally Challenged?”, IEEE Software, July 1996, pp. 20-22
• [McConnell and Tripp, 1999] McConnell, Steve and Tripp, Leonard, “Professional Soft2ware Engineering: Fact or Fiction?”, IEEE Software, November / December 1999, pp. 13-18
• [RT04] Thayer, Richard, 2004 Certified Software Development Professional (CSDP) Preparation Course, Chapter 2: Software Engineering and Society
Module I. Business Practices and Engineering Economics
47
C. Quiz
1. What are the minimum number of years a software engineer must work at skills development before being certified via a professional certification exam?
A. 0 years
B. 2 years
C. 6 years
D. 10 years
Module I. Business Practices and Engineering Economics
48
D. Standards
What Are They?
• Definition: A standard can be (1) an object or measure of comparison that defines or represents the magnitude of a unit
• (2) a characterization that establishes allowable tolerances or constraints for categories of items: and
• (3) a degree or level of required excellence or attainment. Standards are definitional in nature, established either to further understanding and interaction, or to acknowledge observed ( or desired norms) of exhibited characteristics or behavior [SESC93]
• Importance of Software Engineering Standards – Improving the product – Protecting the buyer – Protecting the business – Increasing Professional Discipline – Introducing Technology
Module I. Business Practices and Engineering Economics
49
D. Standards – 2
Roles of Software Engineering Standards• Naming: A standard can provide a succinct name for a
complicated concept. • Best Practices: Sometimes organizations want to adopt
software development practices that are agreed by the community to represent “best of breed”.
• Badging :Organizations need a way to assert that their institutional practices conform to a constellation of best principles and practices.[Moore95]
• Contractual Agreement: In a complex information technology procurement, it is helpful and efficient to decouple complex technological issues from the business aspects of the agreement.
Module I. Business Practices and Engineering Economics
50
D. Standards – 3
Organization Goals for Using Software Engineering Standards• Improve and Evaluate Software Competency• Provide Framework and Terminology for Two-Party
Agreements• Evaluate Products of Software Engineering Activities• Assure High Integrity levels of Software
Module I. Business Practices and Engineering Economics
51
D. Standards – 4
Improve and Evaluate Software Competency• Quality: Analyze trends in product and process quality for
software organizations• Customer Satisfaction: Measure the extent to which
software satisfies• Cycle Time and Productivity: Track progress toward goals
for software cycle time and productivity improvement• Process Maturity: Assess progress relative to industry
standard process benchmarks• Technology: Assess the application of technology within the
organization
Module I. Business Practices and Engineering Economics
52
D. Standards – 5
Provide Framework and Terminology for Two-Party Agreements
• Acquisition Process: Provide the essential actions and criteria to be used by an organization in planning and executing an acquisition for software or software-related services
• Supply Process: Provide the essential actions and criteria to be used by an organization in supplying software or software-related services to an acquirer.
• Life Cycle Process: Provide the process requirements to be met during the life cycle of software or systems containing software
• Life Cycle Deliverables: Provide the requirements for information to be passed between the supplier and the acquirer during the performance of software life cycle processes.
Module I. Business Practices and Engineering Economics
53
D. Standards – 6
Evaluate Products of Software Engineering Activities• External Measurements: Measurements of completed
software products to evaluate the achievement of development goals
• Internal Measurements: Measurement of incomplete software artifacts and development processes to provide early indicators of the achievement of development goals
Module I. Business Practices and Engineering Economics
54
D. Standards – 7
Assure High Integrity levels of Software• Planning: A framework to determine that appropriate
resources and appropriate controls are provided to ensure treatment of concerns of criticality
• Achievement: Provisions for ensuring that critical requirements for safety and dependability are appropriately treated throughout the providing of the software service
• Assessment: Verifiable measurement of the extent to which criticality goals have been achieved.
Module I. Business Practices and Engineering Economics
55
D. References
• Software Engineering Standards by James W. Moore• [Brobeck96] Stephen Brobeck “ Consumer Participation in
standards development,” ANSI reporter, Dec 1996, pp5-6.• [Jones95] Capers Jones “Legal Status of Software
Engineering”, Computer VOL 28 No 5 May 1995, pp98-99• [Moore95] James W Moore and Roy Rada, “Organizational
Badge Collecting,” Comm. ACM Aug 1996 pp17-21• [Peach94] Robert W. Peach, ed., The ISO 9000 handbook
2nd ed, CEEM Information Services, Fairfax, VA, 1994.• [SESC93] SESC Long Range Planning Group, Master plan
for Software Engineering Standards, Version 1.0, Dec 1, 1993
Module I. Business Practices and Engineering Economics
56
D. Quiz
Which of the following layers for a set of ISO 9000 standards is considered most fundamental: Terminology, Principles, Application Guides, or Techniques?
A. Terminology
B. Principles
C. Application Guides
D. Techniques