Upload
barrie-howard-farmer
View
214
Download
0
Tags:
Embed Size (px)
Citation preview
1
Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers
Gregory (Greg) Maltby, PMP, BSCSMarch 24, 2009
EECS 811
2
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
3
Introduction (2)
• Book consists of four parts– The Software Tar Pit– Individual Professionalism– Organizational Professionalism– Industry Professionalism
4
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
5
Introduction (4)
• Presentation - 10 topics / thoughts (continued)– Code of Ethics– Software Development Productivity– Software Development Job Specialization– Teamwork– Process Improvement
6
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
7
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
8
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
9
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
10
Code & Fix Programming (2)
• Building a Pyramid Analogy
11
Code & Fix Programming (3)
• Building a Pyramid – Block Moving
12
Code & Fix Programming (4)
• Building a Pyramid – Block Moving
13
Code & Fix Programming (5)
• Building a Pyramid – Block Moving
14
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.
15
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
16
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
17
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.
18
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
19
Software Programming: Is it Art or Science? (3)
• Wrong Question: “What is Software Development?”
• Right Question: “What should Software Development be?
The Answer : Engineering
20
Software Programming: Is it Art or Science? (4)
• Definition: Engineering:
The application of scientific and mathematical principles towards practical ends.
21
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
22
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?
23
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?
24
Software Programming: Is it Art or Science? (8)
Big question:
• What will the software industry look like after all these questions have been answered?
25
Software Programming: Is it Art or Science? (9)
In mature engineering fields, routine design involves solving familiar problems and reusing large portions of priorsolutions.
• 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
26
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
27
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
28
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.
29
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
30
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
31
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
32
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
33
Software Development as a Profession (4)
34
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
35
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.
36
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
37
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.
38
Software Development Certification (4)
The Institute of Certification of ComputingProfessionals (ICCP) offers various types of
Certifications
Examples:– Associate Computing Professional (ACP)– Certified Computing Professional (CCP)
39
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.
40
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.
41
Software Development Certification (7)
Financial Reward0.4%
Professional Growth46.3%
Company Requirement
0.4%
Credential38.3% Self-Evaluation
5.1%
Other11.4%
Why People Certify
42
Software Development Certification (8)
Primary Achievement Resulting from Certification
"Greater Self-Esteem"
22%
"More Credibility within
Organization"24%
"Solve Problems Quicker"
19%
"Increase in Salary"
11%
"More Credibility with Customers"
24%
43
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.
44
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
45
Software Development Certification (11)
IEEE CSDP (Certified Software Development Professional) distribution of Questions per knowledgearea
1. Business Practices & Engineering Economics (3-4%)2. Software Requirements (13-15%)3. Software Design (22-24%)4. Software Construction (10-12%)5. Software Testing (15-17%)
46
Software Development Certification (12)
IEEE CSDP (Certified Software Development Professional) distribution of Questions per knowledgearea (continued)
6. Software Maintenance (3-5%)7. Software Configuration Management (3-4%)8. Software Engineering Management (10-12%)9. Software Engineering Process (2-4%)10. Software Tools and Methods (2-4%)11. Software Quality (6-8%)
47
Software Development Certification (13)
• Sample Questions on IEEE CSDP (Certified Software Development Professional) exam
{handout}
– IEEE Computer Society Web page
– http://www2.computer.org/portal/web/certification/test
48
Software Development Certification (14)
• Certification offers employers and customers a way to recognize software professionals who have achieved at least some minimum level of qualifications.
49
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
50
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.
51
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.
52
Software Development Licensing (3)
• Arguments Against Licensing (continued)
– The breadth of sub-disciplines involved in developing software would make licensing all of the sub-disciplines impractical.
– The Fundamentals of Engineering Exams required for licensing existing professional engineers is inappropriate for those receiving a computer science degree.
53
Software Development Licensing (4)
• Licensing is a Bad Idea – NOT!
– 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.
54
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
55
Software Development Licensing (6)
Discipline Licensed
Civil 44%
Mechanical 23%
Electrical 9%
Chemical 8%
All Engineers 18%
Percentage of licensed engineering graduates in the US as of 1996
Ford, Gary, and Norman E. Gibbs, “A Mature Profession of Software Engineering”, SEI CMU, CMU/SEI-96-TR-004, January 1996
56
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
57
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
58
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
59
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
60
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
61
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
62
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
{Handout }
63
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
64
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 high-quality products for acceptable costs and within reasonable schedules.
• Continued use of code-and-fix also undermines the advancement of software engineering as a profession
65
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
66
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
67
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
68
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
69
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
70
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
71
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
72
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
73
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.
74
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.
75
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
76
Software Development Job Specialization
• Specialization is an important element of a mature profession.
• Two Categories of Specialization are emerging
– Technology Specialization
– Software Engineering Specialization
77
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.
78
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)
79
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.
80
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
81
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.
82
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
83
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
84
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.
85
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
86
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
87
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
88
Teamwork (3)
Team Specialization http://www.construx.com CxOne Basic Team structure
89
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
90
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.
91
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
92
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
93
Process Improvement (2)
Benefits of Process Improvement Results of software process improvement efforts
Herbsleb, James, et. al., “Benefits of CMM Based Software Process Improvements: Initial Results”, Pittsburg: Software Engineering Institute, August 2004
Factor Median Improvement Best Sustained Improvement
Productivity 35% year 58% year
Schedule 19% year 23% year
Post-release defect reports 39% year 39% year*
Business value of organizational improvement
5 to 1 8.8 to 1
94
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
Practice 12-month ROI 36-month ROI
Formal code inspections 250% 1,200%
Formal design inspections 350% 1,000%
Long-range technology planning 100% 1,000%
Cost and quality estimation tools 250% 1,200%
Productivity measurements 150% 600%
Process assessments 150% 600%
Management training 120% 550%
Technical staff training 90% 550%
95
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)
96
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?
97
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?
98
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?
99
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?
100
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.
101
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.
102
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.
103
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.
104
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
105
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.
106
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.