Introduction - EECS People Web Server

Professional Software Development:
Shorter Schedules, Higher Quality Products,
More Successful Projects, Enhanced Careers
Gregory (Greg) Maltby, PMP, BSCS
April 30, 2012
EECS 810
1
Introduction (1)
• Author : Steve McConnell
– CEO and Chief Software Engineer at Construx
Software
– Other books by Steve McConnell
• Code Complete (1993)
• Rapid Development (1996)
• Software Project Survival Guide (1998)
– On the panel of experts that advises the Software
Engineering Body of Knowledge (SWEBOK) project
2
Introduction (2)
• Book consists of four parts
– The Software Tar Pit
– Individual Professionalism
– Organizational Professionalism
– Industry Professionalism
3
Introduction (3)
• Presentation - 10 topics / thoughts
– “Code and Fix” programming
– Software Programming
• Art
• Science
– Software Development as a Profession
– Software Development Certification
– Software Development Licensing
4
Introduction (4)
• Presentation - 10 topics / thoughts (continued)
– Code of Ethics
– Software Development Productivity
– Software Development Job Specialization
– Teamwork
– Process Improvement
5
Introduction (5)
• Topics are significant as standalone topics, but
some can be viewed as interrelated.
• I see those with a relationship as:
– Software Development as a Profession
• Code of Ethics
• Software Development Certification
• Software Development Licensing
6
Introduction (6)
• Topics are significant as standalone topics, but
some can be viewed as interrelated.
• I see those with a relationship as:
– Software Development Productivity
• Software Development Job Specialization
• Teamwork
• Process Improvement
7
Presentation Overview
• Presentation - 10 topics / thoughts
–
–
–
–
–
–
–
–
–
–
“Code-and-Fix” programming
Software Programming : Art or Science
Software Development as a Profession
Software Development Certification
Software Development Licensing
Code of Ethics
Software Development Productivity
Software Development Job Specialization
Teamwork
Process Improvement
8
Code & Fix Programming
• Definition – Jumping straight into coding
without planning or designing the software
first.
• Sometimes done because:
– Developers are anxious to begin coding
– Manager or Customers are eager to see tangible
signs of progress
• Over all “Code & Fix” programming is
ineffective on all but the tiniest projects
9
Code & Fix Programming (2)
• Building a Pyramid Analogy
10
Code & Fix Programming (3)
• Building a Pyramid – Block Moving
11
Code & Fix Programming (4)
• Building a Pyramid – Block Moving
12
Code & Fix Programming (5)
• Building a Pyramid – Block Moving
13
Code & Fix Programming (6)
• Problems with Code & Fix Programming
– Quick movement off starting line doesn’t
necessarily translate into quick progress
towards the finish line
– Leads to large # of defects early in the project
• Several studies have found that 40% to 80% of a typical
software project’s budget goes into fixing defects that
were created earlier on, in the project development
efforts.
14
Code & Fix Programming (7)
• Why Code & Fix Programming Continues to be
Used
– Appears to be appealing in 2 ways
• Allows the project team to show signs of
progress immediately
• Requires no or minimal additional training
15
Presentation Overview
• Presentation - 10 topics / thoughts
–
–
–
–
–
–
–
–
–
–
“Code and Fix” programming
Software Programming : Art or Science
Software Development as a Profession
Software Development Certification
Software Development Licensing
Code of Ethics
Software Development Productivity
Software Development Job Specialization
Teamwork
Process Improvement
16
Software Programming: Is it Art or Science?
• There is a long tradition in the software field
debating whether software programming is Art or
Science.
– Art point-of-view :
• Refer to the aesthetic aspects of Software
Development
• Science does not allow for inspiration and creative
freedom
– Science point-of-view : more rigor and formal
processes are needed to reduce the error rate in (current)
Software Development practices.
17
Software Programming: Is it Art or Science?
(2)
• Scientists learn :
– What is “true”
– How to test hypotheses
– How to extend knowledge in their field
• Scientists must keep up to date with the latest
research.
• Scientist don’t have to be regulated because they are
chiefly accountable to other Scientists
18
Software Programming: Is it Art or Science?
(3)
• Wrong Question:
“What is Software Development?”
• Right Question:
“What should Software Development be?
The Answer : Engineering
19
Software Programming: Is it Art or Science?
(4)
• Definition: Engineering:
The application of scientific and mathematical
principles towards practical ends.
20
Software Programming: Is it Art or Science?
(5)
• Engineers learn :
– What is “true”
– What is useful
– How to apply well-understood knowledge to solve
problems
• Engineers must be familiar with knowledge that has
already proven to be reliable and effective.
• Engineers have to be regulated because they are
chiefly accountable to the public
21
Software Programming: Is it Art or Science?
(6)
Should professional Software Development be
Engineering?
• Questions that should be answered:
– What is the Software Engineer’s core body of
knowledge?
– What needs to be done before professional
software developers can use that knowledge?
22
Software Programming: Is it Art or Science?
(7)
Should professional Software Development be
Engineering?
• Questions that should be answered (cont):
– How big is the payback for practicing software
development as an engineering discipline?
– What are appropriate standards of professional
conduct for Software Developers?
– Should Software Developers be regulated?
23
Software Programming: Is it Art or Science?
(8)
Big question:
• What will the software industry look like after
all these questions have been answered?
24
Software Programming: Is it Art or Science?
(9)
In mature engineering fields, routine design involves
solving familiar problems and reusing large portions of prior
solutions.
• Many software project artifacts are potentially reusable and
promote the potential to improve quality and productivity.
– Architectures themselves and software design procedures
– Design patterns
– Requirements themselves and requirements development
procedures
25
Software Programming: Is it Art or Science?
(10)
• Many software project artifacts are potentially
reusable and promote the potential to improve
quality and productivity. (continued)
– User interface elements and user interface design
procedures
– Estimates themselves and estimation procedures
– Planning data, project plans, and planning procedures
– Test Plans, test cases, test data, and test procedures
26
Software Programming: Is it Art or Science?
(11)
• Many software project artifacts are potentially reusable and
promote the potential to improve quality and productivity.
(continued)
– Technical review procedures
– Source code, construction procedures, and integration
procedures
– Software configuration management procedures
– Post-project reports and project-review procedures
– Organizational structures, team structures, and
management procedures
27
Software Programming: Is it Art or Science?
(12)
• The Call for Engineering
– Whether the goal is safety, aesthetics, or
economics, treating software as an engineering
discipline is an effective way to raise Software
Development to the level of a true profession.
28
Presentation Overview
• Presentation - 10 topics / thoughts
–
–
–
–
–
–
–
–
–
–
“Code and Fix” programming
Software Programming : Art or Science
Software Development as a Profession
Software Development Certification
Software Development Licensing
Code of Ethics
Software Development Productivity
Software Development Job Specialization
Teamwork
Process Improvement
29
Software Development as a Profession
• A Profession as defined by the Code of
Federal Regulation (CFR) :
– Professional Work – Requires advanced knowledge in
science or a field of learning acquired through a
prolonged course of specialized study.
– Can be creative or artistic in nature
– Requires the consistent exercise of discretion and
judgment in its performance
– Predominately intellectual and varied in character
30
Software Development as a Profession (2)
• Definition from the body of knowledge of
legal precedents (court cases) –
A profession has:
– A requirement for extensive learning and training
– A code of ethics imposing standards higher than
those normally tolerated in the marketplace
– A disciplinary system for professionals who breach
the code
31
Software Development as a Profession (3)
• Definition from the body of knowledge of
legal precedents (court cases) –
A profession has (continued):
– A primary emphasis on social responsibility over
strictly individual gain, and a corresponding duty
of its members to behave as members of a
disciplined and honorable profession
– A perquisite of a license prior to admission to
practice
32
Software Development as a Profession (4)
33
Presentation Overview
• Presentation - 10 topics / thoughts
–
–
–
–
–
–
–
–
–
–
“Code and Fix” programming
Software Programming : Art or Science
Software Development as a Profession
Software Development Certification
Software Development Licensing
Code of Ethics
Software Development Productivity
Software Development Job Specialization
Teamwork
Process Improvement
34
Software Development Certification
• Professional Certification
– Certification is a voluntary process administered
by a professional society.
– The intent of certification is to give the public a
way of knowing who is qualified to perform
specific kinds of work.
35
Software Development Certification (2)
Professional Certification
• After completion of education and skills development, a
professional is required to pass one or more exams that
ensure the person has attained a minimum level of
knowledge.
– Examples :
• Doctors take Board Exams
• Accountants take CPA Exams
• Lawyers take Bar Exams
36
Software Development Certification (3)
• The American Society for Quality Control
offers a Software Quality Engineer
designation.
• Many Computer Hardware and Software
Companies, such as Microsoft and Oracle,
offer certification programs related to specific
technologies.
37
Software Development Certification (4)
The Institute of Certification of Computing
Professionals (ICCP) offers various types of
Certifications
Examples:
– Associate Computing Professional (ACP)
– Certified Computing Professional (CCP)
38
Software Development Certification (5)
• Next few slides are from the ICCP web-site –
www.iccp.org/certification.html

Copyright 2007
by the
Institute for Certification of Computing Professionals
Incorporated not-for-profit, in the State of Delaware
All rights reserved, including the right of reproduction, in whole or in part, in any form, without the
expressed permission of the ICCP.
39
Software Development Certification (6)
Forces Driving Growth in IT
Professional Certification
Adapted from “The Complete Guide to Certification for Computing Professionals”
Sylvan (formerly Sylvan Prometric)
New York: The McGraw-Hill Companies, Inc.
40
Software Development Certification (7)
Why People Certify
Other
11.4%
Credential
38.3%
Financial Reward
0.4%
Self-Evaluation
5.1%
Company
Requirement
0.4%
Professional Growth
46.3%
41
Software Development Certification (8)
Primary Achievement
Resulting from Certification
"Solve Problems
Quicker"
19%
"Increase in
Salary"
11%
"More Credibility
within
Organization"
24%
"Greater SelfEsteem"
22%
"More Credibility
with Customers"
24%
42
Software Development Certification (9)
IEEE Certification CSDP - Certified Software
Development Professional:
• Possesses fundamental knowledge and understanding
of computing principles and concepts and their
application to the definition, design, construction and
testing of software development.
• Has met the IEEE CS CSDP education, experience, and
examination requirements.
43
Software Development Certification (10)
IEEE Certification CSDP - Certified Software
Development Professional:
• Is able to provide appropriate design with technical
and economic tradeoffs of modules, subsystems,
and systems in accordance with standards of practice,
specifications, and principles of behavior of software as
required to perform the functions as stated in the
software requirements.
44
Software Development Certification (11)
IEEE CSDP (Certified Software Development
Professional) distribution of Questions per knowledge
area
1.
2.
3.
4.
5.
Business Practices & Engineering Economics (3-4%)
Software Requirements (13-15%)
Software Design (22-24%)
Software Construction (10-12%)
Software Testing (15-17%)
45
Software Development Certification (12)
IEEE CSDP (Certified Software Development
Professional) distribution of Questions per knowledge
area (continued)
6.
7.
8.
9.
10.
11.
Software Maintenance (3-5%)
Software Configuration Management (3-4%)
Software Engineering Management (10-12%)
Software Engineering Process (2-4%)
Software Tools and Methods (2-4%)
Software Quality (6-8%)
46
Software Development Certification (13)
• Certification offers employers and customers
a way to recognize software professionals
who have achieved at least some minimum
level of qualifications.
47
Presentation Overview
• Presentation - 10 topics / thoughts
–
–
–
–
–
–
–
–
–
–
“Code and Fix” programming
Software Programming : Art or Science
Software Development as a Profession
Software Development Certification
Software Development Licensing
Code of Ethics
Software Development Productivity
Software Development Job Specialization
Teamwork
Process Improvement
48
Software Development Licensing
• Professional Licensing
– Licensing is a mandatory process that is
intended to protect the public, and is typically
administered by jurisdictions (States,
Provinces, and Territories).
– In many cases, National organizations advise
the jurisdictions on appropriate licensing
requirements and exam content.
49
Software Development Licensing (2)
• Arguments Against Licensing
– There is no generally agreed upon body of knowledge
for software engineering
– Knowledge in software engineering changes so quickly
that the exams will be out of date by the time they’re
offered.
– No reasonable test for software engineering skill
could be put into a multiple-choice format. Indeed,
no exam-based practices could adequately ensure
competency of software engineers.
50
Software Development Licensing (3)
• Arguments Against Licensing (continued)
– The breadth of sub-disciplines involved in developing
software would make licensing all of the subdisciplines impractical.
– The Fundamentals of Engineering Exams required for
licensing existing professional engineers is
inappropriate for those receiving a computer science
degree.
51
Software Development Licensing (4)
• Some additional arguments against Licensing…
– Licenses would unduly restrict the number of people who
could practice software engineering at a time when
demand for software engineers is increasing.
– When an engineer receives a license, it will be good for
life, which is inappropriate considering that software
engineering’s body of knowledge is changing rapidly.
– Licensing can’t guarantee that every individual who is
licensed will actually be competent. Licensing will give the
public a false sense of security.
52
Software Development Licensing (5)
• Not all Engineers are Licensed
– Majority of engineers are NOT required to obtain
licenses.
– Engineering companies are required to employ
some licensed engineers
53
Software Development Licensing (6)
Percentage of licensed engineering graduates in the US as of 1996
Discipline
Licensed
Civil
44%
Mechanical
23%
Electrical
9%
Chemical
8%
All Engineers
18%
Ford, Gary, and Norman E. Gibbs, “A Mature Profession of Software Engineering”, SEI CMU,
CMU/SEI-96-TR-004, January 1996
54
Software Development Licensing (7)
• Not all Software Engineers will need to be
Licensed
– Most software applications do not require any
engineering
– The applications that do require some engineering
will require only a small percentage of the software
staff to be licensed
55
Software Development Licensing (8)
• Companies that may require licensed software
engineers could include those that:
– Sell software engineering services to the public
– Perform software work for public agencies
– Produce safety-critical software
56
Software Development Licensing (9)
• Benefits of Licensing –
Organizational Perspective
– Some companies may voluntary employ
professional (licensed) software engineers to:
• take advantage of the market prestige of hiring workers
with the best available credentials
• strengthen their technical pool
• improve their CMM rating
57
Software Development Licensing (10)
• Benefits of Licensing –
Individual Perspective
– Licensed software engineers will most likely be
placed in a ‘leadership’ role – helping set direction
for the organizations they work for.
– Licensed software engineers can use the position
of a well-defined profession to make a stand
against poor software development influences
58
Presentation Overview
• Presentation - 10 topics / thoughts
–
–
–
–
–
–
–
–
–
–
“Code and Fix” programming
Software Programming : Art or Science
Software Development as a Profession
Software Development Certification
Software Development Licensing
Code of Ethics
Software Development Productivity
Software Development Job Specialization
Teamwork
Process Improvement
59
Code of Ethics
• Code of Ethics - Purpose is to ensure practitioners
behave responsibility
– States what professional should do
– Adherence to a recognized code of conduct helps
professionals feel they belong to a well-regarded community
– Professionals can be ejected from their professional
societies or lose their license to practice for violating the
Code of Ethics
– Enforcement of ethics standards helps maintain a minimum
level of conduct
60
Code of Ethics (2)
• Association for Computing Machinery (ACM)
Code of Ethics
1. General Moral Imperatives
2. More Specific Professional Responsibilities
3. Organizational Leadership
4. Compliance with the Code
http://www.acm.org/about/code-of-ethics
{ handout }
61
Code of Ethics (3)
• Code of Ethics – Benefits
– Provides broad support for a true profession of
software engineering
– Establishes minimum performance expectations
– Gives employers and clients confidence about the
professional standards and character of engineers
who adhere to the code
62
Code of Ethics (4)
• Code of Ethics – “Real World” Benefits Example
– Sometimes clients and management insist that software
developers engage in Code-and-Fix development.
– This conflicts with the software engineer’s Code of Ethics
• Use of code-and-fix development, however, is inconsistent
with a Software Engineer’s ethical duty to produce highquality products for acceptable costs and within reasonable
schedules.
• Continued use of code-and-fix also undermines the
advancement of software engineering as a profession
63
Presentation Overview
• Presentation - 10 topics / thoughts
–
–
–
–
–
–
–
–
–
–
“Code and Fix” programming
Software Programming : Art or Science
Software Development as a Profession
Software Development Certification
Software Development Licensing
Code of Ethics
Software Development Productivity
Software Development Job Specialization
Teamwork
Process Improvement
64
Software Development Productivity
•
Preview of findings
– Most software productivity studies are
inadequate and misleading.
– Small-scale programming productivity has more
than an order of magnitude variation across
individuals and languages.
“Understanding and Improving Software Productivity” – Walt Scacchi –
University of California, Irvine, 02/16/2005
65
Software Development Productivity (2)
• Preview of findings
– How and what you measure determines how
much productivity you see.
– We found contradictory findings (conclusions),
and repeated shortcomings in productivity
measurement and data analysis, among the few
nuggets of improved understanding.
“Understanding and Improving Software Productivity” – Walt Scacchi –
University of California, Irvine, 02/16/2005
66
Software Development Productivity (3)
•
What to measure?
– Software products
– Software production processes and structures
– Software production setting / environment.
“Understanding and Improving Software Productivity” – Walt Scacchi – University
of California, Irvine, 02/16/2005
http://www.ics.uci.edu/~wscacchi/Presentations/ProSim04/SoftwareProductivity.ppt
67
Software Development Productivity (4)
• Productivity Factors - Process-related
(more easily controlled)
– Avoid hardware-software co-development
– Development computer size (bigger is better).
– Stable requirements and specification
– Use of “modern programming practices”
– Assign experienced personnel to team
“Understanding and Improving Software Productivity” – Walt Scacchi – University of California,
Irvine, 02/16/2005
68
Software Development Productivity (5)
• Productivity Factors - Product related
(not easily controlled)
– Computer resource constraints (fewer is better)
– Program complexity (less is better)
– Customer participation (less is better)
– Size of program product (smaller is better)
“Understanding and Improving Software Productivity” – Walt Scacchi – University of
California, Irvine, 02/16/2005
69
Software Development Productivity (6)
• How to improve Software Productivity (so far):
– Get the best from well-managed people
– Make development more efficient and more
effective
– Simplify, collapse, or eliminate development steps
“Understanding and Improving Software Productivity” – Walt Scacchi – University of
California, Irvine, 02/16/2005
70
Software Development Productivity (7)
• How to improve Software Productivity (so far)
(continued):
– Eliminate rework
– Build simpler products or products families (similar
products)
– Reuse proven products, processes, and production
settings
“Understanding and Improving Software Productivity” – Walt Scacchi – University of
California, Irvine, 02/16/2005
71
Software Development Productivity (8)
• Some thoughts on Productivity
– Study after study has found that individual
motivation is by far the largest single contributor
to productivity.
– Other studies have found that the greatest single
contributor to overall productivity was team
cohesiveness.
72
Software Development Productivity (9)
• Some thoughts on Productivity
– Projects that focused on achieving low defect
counts had the best schedule and the highest
productivity.
– Studies as early as the 1960’s have shown that
teams using a high degree of specialization are
more productive than teams that do not.
73
Presentation Overview
• Presentation - 10 topics / thoughts
–
–
–
–
–
–
–
–
–
–
“Code and Fix” programming
Software Programming : Art or Science
Software Development as a Profession
Software Development Certification
Software Development Licensing
Code of Ethics
Software Development Productivity
Software Development Job Specialization
Teamwork
Process Improvement
74
Software Development Job Specialization
• Specialization is an important element of a
mature profession.
• Two Categories of Specialization are emerging
– Technology Specialization
– Software Engineering Specialization
75
Software Development Job Specialization
(2)
Examples of current Technology Specializations offering
by IT Vendors
• Microsoft currently (Feb. 2009) offers 17 certifications –
a few examples
– Microsoft Certified Architect (MCA) - program recognizes and provides
advanced certification to practicing architects in an enterprise setting.
– Microsoft Certified Systems Administrator (MCSA) - administers network and
systems environments based on the Windows operating systems.
Specializations include the MCSA: Messaging and the MCSA: Security.
– Microsoft Certified Database Administrator (MCDBA) - designs, implements,
and administers Microsoft SQL Server databases.
– Microsoft Office Specialist (MOS) - is globally recognized for demonstrating
advanced skills in using Microsoft desktop software.
76
Software Development Job Specialization
(3)
• Oracle offers over 30 certifications – a few examples
– Oracle Database 11g Administrator Certification - combines training, experience, and
testing to ensure that you have a strong foundation and expertise in the industry’s most
advanced database management system.
• Certified Associate
• Certified Professional
• Certified Master
– Oracle Application Server 10g Administrator - offers a comprehensive solution for
developing, integrating, and deploying your enterprise’s applications, portals, and Web
services. Oracle Application Server 10g Certified Administrators have the proven
knowledge and experience to manage the details of this powerful software and are
essential to help organizations succeed in the complex world of Internet business.
• Certified Associate
• Certified Professional
• Certified Master
– Certifications in Oracle’s Business applications are also available
• Hyperion (Financial Forecasting)
• PeopleSoft (ERP – HR, Payroll, Financials, etc.)
• Oracle E-Business Suite (ERP – HR, Payroll, Financials)
77
Software Development Job Specialization
(4)
• Software Engineering specialization examples:
– Customer Support Specialists
– Data Base Administration
– Network specific
• also includes specialties within this area - such as Security
– Quality Assurance
– Technical Writing
Author references another book “Assessment and Control of Software Risk” (1994)
by T. Capers Jones, which identifies 26 specializations, and states Jones’ work on
Organizational Assessment has identified over 100 specializations.
78
Software Development Job Specialization
(5)
• Projects can benefit from team members who are
specialists
–
–
–
–
–
–
Construction Lead
Design Lead
Planning and Tracking Lead
Project Business Manager
Quality Assurance Lead
Requirements Lead
• Useful to have a specific person identified to focus on these
areas
• Advantageous even of these are part-time roles
http://www.construx.com CxOne Basic Team structure
79
Software Development Job Specialization
(6)
• Project Business Manager
– Overall project manager, responsible for a
successful project outcome.
– Performs many of the traditional management
tasks, but generally delegates engineering issues
to the appropriate leads.
• Planning and Tracking Lead
– Manages the project plan, schedule, and budget.
– Overseas, coordinates, and tracks progress to
planning, estimation, and scheduling.
– Responsible for status reporting.
80
Software Development Job Specialization
(7)
• Requirements Lead
– Owns the system requirements.
– Oversees the identification, analysis,
documentation, and management of system
requirements.
– Is responsible for ensuring that the requirements
match business goals
• Design Lead
– System architect that oversees all design activities
on the project
81
Software Development Job Specialization
(8)
• Construction Lead
– Is responsible for ensuring that construction
activities are carried out smoothly and efficiently.
– On projects where deployment is necessary, that
is often handled by this lead, or a dedicated
deployment lead.
• Quality Lead
– Creates the quality plan an is responsible for
ensuring the project meets its quality goals.
– Oversees all reviews, test planning, and test
execution
82
Software Development Job Specialization
(9)
• Software Engineer
– Instead of a traditional rigid analyst, developer,
tester split, each engineer executes based on their
capabilities and interests.
83
Presentation Overview
• Presentation - 10 topics / thoughts
–
–
–
–
–
–
–
–
–
–
“Code and Fix” programming
Software Programming : Art or Science
Software Development as a Profession
Software Development Certification
Software Development Licensing
Code of Ethics
Software Development Productivity
Software Development Job Specialization
Teamwork
Process Improvement
84
Teamwork
Software Development Community –
Become Part of the Team
• Author advocates becoming a member of
ACM or IEEE
– These are communities that care about software
development and take the time to share their
experiences for the benefit of other software
developers
85
Teamwork (2)
• Professional organizations support numerous
structured ways of exchanging the valuable tips
and tricks of the trade that support Software
Engineers
• Membership will give you access to articles that
provide insight into common issues
– Examples
• How to help customers make up their minds about /
finalize requirements
• How to create maintainable code
• How to coordinate the work of multiple Software
Developers
86
Teamwork (3)
http://www.construx.com
CxOne Basic Team structure
Team Specialization
87
Teamwork (4)
• Author sites a study by Gerald M. McCue,
“Architectural Design for Program Development”,
while he worked at IBM’s Santa Teresa Laboratory;
that found the average programmer spends only
about 30% of their time working alone.
• The other 70% is working with teammates,
customers (secondary team), and other interactive
activities
88
Teamwork (5)
• A study by B. Lakhanapal, “Understanding the
Factors Influencing the Performance of Software
Development Groups: An Exploratory Group Level
Analysis”; analyzed 31 software projects and found
that the greatest single contributor to overall
productivity was team cohesiveness.
89
Presentation Overview
• Presentation - 10 topics / thoughts
–
–
–
–
–
–
–
–
–
–
“Code and Fix” programming
Software Programming : Art or Science
Software Development as a Profession
Software Development Certification
Software Development Licensing
Code of Ethics
Software Development Productivity
Software Development Job Specialization
Teamwork
Process Improvement
90
Process Improvement
• Process Improvement – State of Practice
– A common assumption is that organizations effectiveness is
distributed according to a typical bell curve.
– The reality is quite different.
– “Process Maturity Profile of the Software Community 2001 Year End Update”, Software
Engineering Institute, March 2002
91
Process Improvement (2)
Benefits of Process Improvement
Results of software process improvement efforts
Factor
Median Improvement
Best Sustained
Improvement
Productivity
35% year
58% year
Schedule
19% year
23% year
Post-release defect reports
39% year
39% year*
5 to 1
8.8 to 1
Business value of organizational
improvement
Herbsleb, James, et. al., “Benefits of CMM Based Software Process Improvements: Initial
Results”, Pittsburg: Software Engineering Institute, August 2004
92
Process Improvement (3)
Return on Investment for Selected Software Practices
Jones T., Capers “Assessment and Control of Software Risks, Englewood Cliffs, NJ: Yourdon Press, 1994
93
Process Improvement (4)
Indirect Benefits of Improved Software Practices
• Better software practices lead to improvements:
–
–
–
–
–
in cost predictability
in schedule predictability
that reduce risk of cost overruns
that reduce risk of schedule overruns
that provide early warnings of problems
• Support better management (control and decision
making)
94
Process Improvement (5)
Improving Software Practices – Where to Start
•
10 Tough Questions
1. How much are you spending on software
development?
2. What percentage of your projects is currently on
time and on budget?
3. What is the average schedule and budget
overrun for your projects?
95
Process Improvement (6)
Improving Software Practices – Where to Start
•
10 Tough Questions (continued)
4. Which of your current projects are most likely to
fail outright?
5. What percentage of your project cost arises
from avoidable rework?
6. How satisfied (quantitatively) are users of your
software?
96
Process Improvement (7)
Improving Software Practices – Where to Start
• Ten Tough Questions (cont.)
7. How do the skills of your staff compare to
industry averages?
8. How do the capabilities of your organization
compare to similar organizations?
97
Process Improvement (8)
Improving Software Practices – Where to Start
• Ten Tough Questions (cont.)
9. How much (quantitatively) has your productivity
improved in the past 12 months?
10. What is your plan for improving the skills of your
staff and the effectiveness of your organization?
98
Conclusion
• For Software Development to be viewed as a
profession – bad practices like “Code and Fix”
programming needs to be eliminated.
• Whether the goal is safety, aesthetics, or economics,
treating software as an engineering discipline and
following the disciplines of engineering during
software development would be an effective way to
raise Software Development to the level of a true
profession.
99
Conclusion (2)
• Certification is valuable, it gives:
– software developer credibility.
– employers and customers a way to recognize
Software Professionals who have achieved a level
of knowledge and skills.
100
Conclusion (3)
• One key factor supporting licensing Software
Engineering is that, today over 50% of Software
engineering knowledge is stable.
• Therefore the education investment a person makes
at the beginning of a career should remain mostly
relevant throughout their career.
101
Conclusion (4)
• Without licensing, the public is exposed to both good
and bad software development practices and
potentially dangerous software.
• Licensing would improve this condition, acting as a
filter that would in most cases deny licenses to the
worst software developers and grant licenses to the
best or at least the qualified.
102
Conclusion (5)
• There has been a slow pace to adopt the use
of effective software development practices
• Factors that impact productivity on software
development projects include:
– Individual motivation
– Use of experienced and skilled team members
– Teamwork or team cohesiveness
– Using a high degree of specialization
103
Additional Information
• Steve McConnell ‘s website –
http://www.stevemcconnell.com/index.htm
Here you'll find excerpts from his books and articles,
descriptions of his presentations, pointers to his consulting
services, and other information.
104
Additional Information
• The company he founded Construx‘s website
http://www.construx.com
• Construx was founded in 1996 by Steve McConnell
to provide industry-leading support for software
development best practices.
105