1 / 105

Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Career

Discover the key elements of professional software development, including code and fix programming, the art and science of software programming, software development as a profession, certification and licensing, ethics, productivity, job specialization, teamwork, and process improvement.

jhuckaby
Download Presentation

Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Career

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Professional Software Development:Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers Gregory (Greg) Maltby, PMP, BSCS April 30, 2012 EECS 810

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

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

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

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

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

  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 Computing Professionals (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

  40. Software Development Certification(6)

  41. Software Development Certification(7)

  42. Software Development Certification(8)

  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 knowledge area • Business Practices & Engineering Economics (3-4%) • Software Requirements (13-15%) • Software Design (22-24%) • Software Construction (10-12%) • Software Testing (15-17%)

  46. 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%)

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

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

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

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

More Related