1.06k likes | 1.07k Views
Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers. Gregory (Greg) Maltby, PMP, BSCS March 24, 2009 EECS 811. Introduction (1). Author : Steve McConnell CEO and Chief Software Engineer at Construx Software
E N D
Professional Software Development:Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers Gregory (Greg) Maltby, PMP, BSCS March 24, 2009 EECS 811
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
Introduction (2) • Book consists of four parts • The Software Tar Pit • Individual Professionalism • Organizational Professionalism • Industry Professionalism
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
Introduction(4) • Presentation - 10 topics / thoughts (continued) • Code of Ethics • Software Development Productivity • Software Development Job Specialization • Teamwork • Process Improvement
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
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
PresentationOverview • 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
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
Code & Fix Programming (2) • Building a Pyramid Analogy
Code & Fix Programming (3) • Building a Pyramid – Block Moving
Code & Fix Programming (4) • Building a Pyramid – Block Moving
Code & Fix Programming (5) • Building a Pyramid – Block Moving
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.
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
PresentationOverview • 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
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.
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
Software Programming: Is it Art or Science? (3) • Wrong Question: “What is Software Development?” • Right Question: “What should Software Development be? The Answer : Engineering
Software Programming: Is it Art or Science? (4) • Definition: Engineering: The application of scientific and mathematical principles towards practical ends.
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
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?
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?
Software Programming: Is it Art or Science? (8) Big question: • What will the software industry look like after all these questions have been answered?
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
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
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
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.
PresentationOverview • 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
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
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
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
PresentationOverview • 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
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.
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
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.
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)
Software Development Certification (5) • Next few slides are from the ICCP web-site – www.iccp.org/certification.html
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.
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
Software Development Certification(11) IEEE CSDP (Certified Software Development Professional) distribution of Questions per knowledge area • Business Practices & Engineering Economics (3-4%) • Software Requirements (13-15%) • Software Design (22-24%) • Software Construction (10-12%) • Software Testing (15-17%)
Software Development Certification(12) IEEE CSDP (Certified Software Development Professional) distribution of Questions per knowledge area (continued) • 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%)
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
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.
PresentationOverview • 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
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.