SOFTWARE ENGINEERING & MANAGEMENT "software work is the most complex that humanity  has ever undertaken.”  [Brooks, 9...
Preface <ul><li>These slides reflect extensive research on what happens in the Software field worldwide. </li></ul><ul><li...
Disclaimer <ul><li>Disclaimer :  all the following slides contain quotes from known books and articles – as such, each sli...
Project Planning Robert.Sayegh@gmail.com  (2010)
SW is Complex & Expensive! <ul><li>Large Software systems cost far more to build, and take much longer to construct, than ...
SW Runway Projects Robert.Sayegh@gmail.com  (2010)
Late  =  Defective <ul><li>Large systems usually run late because they contain so many defects or errors that they don’t w...
Poor Estimation #1 factor for runaway projects <ul><li>Most software estimates are performed at the beginning of the life ...
Unstable Requirements #2 factor for Runway projects <ul><li>Nearly everyone accepts the fact that requirements must be all...
Sounds familiar? <ul><li>Estimation is done at the wrong time </li></ul><ul><li>Estimation is done by the wrong people </l...
Programmers role <ul><li>In a research group, attendees asked to work on a small task, with deliberately too much to do an...
Programmers Role (cont.) <ul><li>Four factors determine the timelines: </li></ul><ul><li>  Cost, Schedule, Features, and Q...
Project Quality Robert.Sayegh@gmail.com  (2010)
Quality Attributes <ul><li>Portability  </li></ul><ul><ul><li>a software product that is easily moved to another platform....
Quality (cont.) <ul><li>There is no correct, generalized  ordering of these quality attributes.  </li></ul><ul><li>However...
100% test coverage is far from enough <ul><li>Even if 100 percent test coverage (unit testing) were possible, that is not ...
Errors do cluster! <ul><li>~80% of the defects come from ~20% of the modules </li></ul><ul><li>About half the modules are ...
You cannot  control what you cannot measure Robert.Sayegh@gmail.com  (2010) Top Ten Software Metrics  Reported Using Numbe...
Robert.Sayegh@gmail.com  (2010) Bottom Five Software Metrics  Reported Using Module/design complexity  24% Number of sourc...
Project Design Robert.Sayegh@gmail.com  (2010)
Design, Design, Design… <ul><li>Efficiency stems more from good design than from good coding. </li></ul><ul><li>Design Pat...
People Quality matters  …  a lot ! <ul><li>“  The most important practical finding [of our study] involves the striking in...
Crucial human factor <ul><li>Peer reviews are both technical and sociological! </li></ul><ul><ul><li>Paying attention to o...
Man-Month Myth [Brook’s law] Complex / Undividable Simple/ Dividable Most typical /  Only partially dividable Robert.Sayeg...
Refactoring <ul><li>Refactor when you add a function </li></ul><ul><li>Refactor when you fix a bug </li></ul><ul><li>Refac...
Hype Frenzy <ul><li>“ Software developers talk a lot about tools. They evaluate quite a few, buy a fair number, and use  p...
Project Maintenance Robert.Sayegh@gmail.com  (2010)
Reuse vs. Rewrite <ul><li>If more than 20 to 25 percent of a component is to be revised, it is more efficient and effectiv...
Suggested schedule guide <ul><li>Usually on time </li></ul><ul><li>30%  Planning </li></ul><ul><li>15%  Coding </li></ul><...
Maintenance is a solution, not a  problem! <ul><li>Maintenance activity involves in average: </li></ul><ul><ul><li>60% Enh...
Maintenance is a solution (cont.) <ul><li>Better software engineering development leads to  more maintenance, not less. </...
References <ul><li>Facts and Fallacies of Software Engineering  ( Robert L. Glass, 2002) </li></ul><ul><li>Manager's Handb...
Upcoming SlideShare
Loading in …5
×

SW Engineering Management

740 views
681 views

Published on

Literature overview on SW engineering and management processes

Published in: Leadership & Management
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
740
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Facts and Fallacies 2002 - Fact 28 Poor estimations are found out usually deep in the testing phase! until then all goes according to plan!
  • SW Engineering Management

    1. 1. SOFTWARE ENGINEERING & MANAGEMENT &quot;software work is the most complex that humanity has ever undertaken.” [Brooks, 95] Robert.Sayegh@gmail.com (2010)
    2. 2. Preface <ul><li>These slides reflect extensive research on what happens in the Software field worldwide. </li></ul><ul><li>It aims to give perspective and motivate thoughts on what we do in our SW team. </li></ul>Robert.Sayegh@gmail.com (2010)
    3. 3. Disclaimer <ul><li>Disclaimer : all the following slides contain quotes from known books and articles – as such, each slide has a note for the relevant reference(s). </li></ul><ul><li>Needless to mention, nothing beats reading through the references directly. </li></ul>Robert.Sayegh@gmail.com (2010)
    4. 4. Project Planning Robert.Sayegh@gmail.com (2010)
    5. 5. SW is Complex & Expensive! <ul><li>Large Software systems cost far more to build, and take much longer to construct, than the office buildings occupied by the companies that have commissioned the software. </li></ul><ul><li>Really Large Software systems in the 250,000 FP size can cost more than building a domed football stadium, a 50-story skyscraper, or a 90,000 ton cruise ship. </li></ul><ul><li>Not only are large systems expensive, but they also have one of the highest failure rates of any manufactured object in human history. </li></ul><ul><li> Software is not your typical happy ending, lives happily ever after story! </li></ul>Robert.Sayegh@gmail.com (2010)
    6. 6. SW Runway Projects Robert.Sayegh@gmail.com (2010)
    7. 7. Late = Defective <ul><li>Large systems usually run late because they contain so many defects or errors that they don’t work. </li></ul><ul><li>Unfortunately, if this situation is not detected until testing begins it is too late for corrective actions to be fully successful. ( on-schedule until testing cycle syndrome ) </li></ul><ul><li>Vista (125K FP) </li></ul><ul><li>ERP SAP (300K FP) </li></ul><ul><li>1FP = 125 lines of code </li></ul>Robert.Sayegh@gmail.com (2010)
    8. 8. Poor Estimation #1 factor for runaway projects <ul><li>Most software estimates are performed at the beginning of the life cycle. This makes sense until we realize that estimates are obtained before the requirements are defined and thus before the problem is understood. Estimation, therefore, usually occurs at the wrong time. </li></ul><ul><li>Oddly, there seems to be general agreement that this fact is correct. The practice it describes is absurd. Someone should be crying out to change things. But no one is. </li></ul><ul><li>It is important to note that runaway projects, at least those that stem from poor estimation, do not usually occur because the programmers did a poor job of programming. </li></ul>Robert.Sayegh@gmail.com (2010)
    9. 9. Unstable Requirements #2 factor for Runway projects <ul><li>Nearly everyone accepts the fact that requirements must be allowed to change, and the only remaining disagreement is about how to keep control under those circumstances. </li></ul><ul><li>If the problem was exploring requirements to lead them toward stability, the solution was seen to be prototyping. </li></ul><ul><ul><li>We would build a sample solution, according to this idea, and let the users try it out to see if it was what they wanted. </li></ul></ul><ul><li>The Extreme Programming methodology calls for a representative of the user community to reside with the software project team during development! </li></ul>Robert.Sayegh@gmail.com (2010)
    10. 10. Sounds familiar? <ul><li>Estimation is done at the wrong time </li></ul><ul><li>Estimation is done by the wrong people </li></ul><ul><ul><li>Most software estimates are made either by upper management or by marketing. </li></ul></ul><ul><li>(Wrong) Estimations are not corrected </li></ul><ul><ul><li>Estimations are rarely adjusted as the project proceeds. </li></ul></ul><ul><li>Estimation is nevertheless the most important factor. </li></ul><ul><ul><li>As estimates are so faulty, you'd think they would be treated as relatively unimportant. Right? Wrong! There is little reason to be concerned when software projects don’t meet estimated target. But everyone is concerned anyway! </li></ul></ul><ul><li>There is a disconnect between management and programmers. </li></ul><ul><ul><li>In one research study of a project that failed to meet its estimates and was seen by its management as a failure, the technical participants saw it as the most successful project they had ever worked on. </li></ul></ul>Robert.Sayegh@gmail.com (2010)
    11. 11. Programmers role <ul><li>In a research group, attendees asked to work on a small task, with deliberately too much to do and not enough time. </li></ul><ul><ul><li>Expectation : the attendees will try to do the whole job, do it correctly, and therefore will produce an unfinished product. </li></ul></ul><ul><ul><li>Actual outcome : not so, these attendees scrambled mightily to achieve the impossible schedule, thus producing sketchy and shoddy products that appear to be complete but cannot possibly work. </li></ul></ul>Robert.Sayegh@gmail.com (2010)
    12. 12. Programmers Role (cont.) <ul><li>Four factors determine the timelines: </li></ul><ul><li> Cost, Schedule, Features, and Quality . </li></ul><ul><li>Extreme Programmers suggest that after the “customer” chooses three of the four factors, the developers get to choose the fourth. </li></ul><ul><ul><li>This proposes to change the power structure that is currently such a major contributor to poor estimation. </li></ul></ul>Robert.Sayegh@gmail.com (2010)
    13. 13. Project Quality Robert.Sayegh@gmail.com (2010)
    14. 14. Quality Attributes <ul><li>Portability </li></ul><ul><ul><li>a software product that is easily moved to another platform. </li></ul></ul><ul><li>Reliability </li></ul><ul><ul><li>a software product that does what it's supposed to do, dependably. </li></ul></ul><ul><li>Efficiency </li></ul><ul><ul><li>a software product that economizes on both running time and space consumption. </li></ul></ul><ul><li>Usability </li></ul><ul><ul><li>a software product that is easy and comfortable to use. </li></ul></ul><ul><li>Testability </li></ul><ul><ul><li>a software product that is easy to test. </li></ul></ul><ul><li>Understandability </li></ul><ul><ul><li>a software product that is easy for a maintainer to comprehend. </li></ul></ul><ul><li>Modifiability </li></ul><ul><ul><li>a software product that is easy for a maintainer to change. </li></ul></ul>Robert.Sayegh@gmail.com (2010)
    15. 15. Quality (cont.) <ul><li>There is no correct, generalized ordering of these quality attributes. </li></ul><ul><li>However, f or any one project, it is vitally important to establish a prioritized list of these attributes from the outset. </li></ul><ul><li>Quality is not user satisfaction , meeting requirements , or meeting cost and schedule ! </li></ul>Robert.Sayegh@gmail.com (2010)
    16. 16. 100% test coverage is far from enough <ul><li>Even if 100 percent test coverage (unit testing) were possible, that is not a sufficient criterion for testing. </li></ul><ul><li>Most defects are “very complicated” </li></ul><ul><ul><li>35 percent: missing logic paths (not part of code!) </li></ul></ul><ul><ul><li>40 percent: unique combination of logic paths. </li></ul></ul><ul><li>The goal is to minimize the number and especially the severity of those residual defects. </li></ul><ul><ul><li>There will always be residual defects in software, after even the most rigorous of error removal processes. </li></ul></ul><ul><li>There is no known magic solution to this problem. </li></ul><ul><ul><li>Producing successful, reliable software involves matching a variable number of error removal approaches, typically the more of them the better. </li></ul></ul>Robert.Sayegh@gmail.com (2010)
    17. 17. Errors do cluster! <ul><li>~80% of the defects come from ~20% of the modules </li></ul><ul><li>About half the modules are error free (Boehm and Basili 2001) </li></ul><ul><ul><li>Some components are more complex than others </li></ul></ul><ul><ul><li>Some programmers are better than others </li></ul></ul><ul><li>Bottom line: if you find a larger than expected number of errors in some module, keep looking! </li></ul>Robert.Sayegh@gmail.com (2010)
    18. 18. You cannot control what you cannot measure Robert.Sayegh@gmail.com (2010) Top Ten Software Metrics Reported Using Number of defects found after release 61% Number of changes or change requests 55% User or customer satisfaction 52% Number of defects found during development 50% Documentation completeness/accuracy 42% Time to identify/correct defects 40% Defect distribution by type/class 37% Error by major function/feature 32% Test coverage of specifications 31% Test coverage of code 31%
    19. 19. Robert.Sayegh@gmail.com (2010) Bottom Five Software Metrics Reported Using Module/design complexity 24% Number of source lines delivered 22% Documentation size/complexity 20% Number of reused source lines 16% Number of function points 10%
    20. 20. Project Design Robert.Sayegh@gmail.com (2010)
    21. 21. Design, Design, Design… <ul><li>Efficiency stems more from good design than from good coding. </li></ul><ul><li>Design Patterns are widely accepted as better form of reuse than traditional code reuse (“ Designers rarely start from scratch ”!) Visser 87 </li></ul><ul><li>Extreme Programming advocates simple design followed by ongoing refactoring to fix inefficiencies and errors in the design after it is coded. </li></ul>Robert.Sayegh@gmail.com (2010)
    22. 22. People Quality matters … a lot ! <ul><li>“ The most important practical finding [of our study] involves the striking individual differences in programmer performance... The researchers had found differences of up to 28 to 1 while trying to evaluate the productivity difference between batch and timesharing computer usage”. (Sackman 1968) </li></ul><ul><li>“ Within a group of programmers, there may be an order of magnitude difference in capability“ (Schwartz 1968). </li></ul><ul><li>“ Productivity variations of 5:1 between individuals are common “ (Boehm 1975). </li></ul><ul><li>“ The variability among student programmers is well known, but the high variability among these highly experienced subjects was somewhat surprising “ (Myers 1978). </li></ul>Robert.Sayegh@gmail.com (2010)
    23. 23. Crucial human factor <ul><li>Peer reviews are both technical and sociological! </li></ul><ul><ul><li>Paying attention to one without the other is a recipe for disaster. </li></ul></ul><ul><li>There are some errors that most programmers tend to make (thought traps) </li></ul><ul><ul><li>Uninitialized parameter </li></ul></ul><ul><ul><li>Missing a switch case </li></ul></ul><ul><ul><li>Omitting deep design detail </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><li>Rigorous inspections can remove up to 60% – 90% of errors from a software product. </li></ul><ul><ul><li>Even before the first test case is run. </li></ul></ul>Robert.Sayegh@gmail.com (2010)
    24. 24. Man-Month Myth [Brook’s law] Complex / Undividable Simple/ Dividable Most typical / Only partially dividable Robert.Sayegh@gmail.com (2010)
    25. 25. Refactoring <ul><li>Refactor when you add a function </li></ul><ul><li>Refactor when you fix a bug </li></ul><ul><li>Refactor when you code review </li></ul><ul><li>Most common problem with Refactoring is the “social” aspect! </li></ul>Robert.Sayegh@gmail.com (2010)
    26. 26. Hype Frenzy <ul><li>“ Software developers talk a lot about tools. They evaluate quite a few, buy a fair number, and use practically none.” </li></ul><ul><li>Most software tool / technique improvements account for about a 5 to 35 percent increase in productivity and quality. </li></ul><ul><ul><li>Fallacy: Occasionally hype improvements get claimed by someone to have &quot;order of magnitude&quot; benefits. </li></ul></ul><ul><ul><li>Problem: SW culture puts schedule conformance above all else, that there is no time to learn about new concepts. </li></ul></ul>Robert.Sayegh@gmail.com (2010)
    27. 27. Project Maintenance Robert.Sayegh@gmail.com (2010)
    28. 28. Reuse vs. Rewrite <ul><li>If more than 20 to 25 percent of a component is to be revised, it is more efficient and effective to rewrite it from scratch </li></ul><ul><li>For every 25 percent increase in problem complexity, there is a 100 percent increase in complexity of the software </li></ul>Robert.Sayegh@gmail.com (2010)
    29. 29. Suggested schedule guide <ul><li>Usually on time </li></ul><ul><li>30% Planning </li></ul><ul><li>15% Coding </li></ul><ul><li>Hard to plan ahead </li></ul><ul><li>25% Unit Testing </li></ul><ul><li>25% System Testing </li></ul><ul><li>The initial estimate, although most uncertain, is the most important. </li></ul><ul><li>Making the initial estimate leads the manager to consider the various factors bearing on the size and complexity of the tasks. </li></ul>Robert.Sayegh@gmail.com (2010)
    30. 30. Maintenance is a solution, not a problem! <ul><li>Maintenance activity involves in average: </li></ul><ul><ul><li>60% Enhancement (new features) </li></ul></ul><ul><ul><li>18% Adaptive maintenance (OS changes, etc.) </li></ul></ul><ul><ul><li>17% Error corrections (old bug fixes) </li></ul></ul><ul><ul><li>5% Refactoring (preventive maintenance) </li></ul></ul><ul><li>Software makes it easy (relatively) to change the product during its lifetime. </li></ul>Robert.Sayegh@gmail.com (2010)
    31. 31. Maintenance is a solution (cont.) <ul><li>Better software engineering development leads to more maintenance, not less. </li></ul><ul><ul><li>Systems found more reliable when developed using well known methodologies, tools, and techniques. </li></ul></ul><ul><ul><ul><li>They require repair less often. </li></ul></ul></ul><ul><ul><li>Such systems also found to have longer maintenance time! </li></ul></ul><ul><ul><ul><li>More modifications were queued is such systems simply because they were easier to change. </li></ul></ul></ul>Robert.Sayegh@gmail.com (2010)
    32. 32. References <ul><li>Facts and Fallacies of Software Engineering ( Robert L. Glass, 2002) </li></ul><ul><li>Manager's Handbook for Software Development / (NASA SEL 84-101, 1990) </li></ul><ul><li>Return of Investment (ROI) in SW Project Management (Carpers Jones, 2009) </li></ul><ul><li>Software conflict, the art and science of software engineering ( Robert L. Glass, 2006) </li></ul><ul><li>Refactoring, improving the design of existing code (Martin Fowler, 1999) </li></ul><ul><li>The Mythical Man-Month. ( Brooks Frederick P. Jr., 1995) </li></ul><ul><li>Why Software Fails (Robert N. Charette, Spectrum.ieee.org Sept. 2005) </li></ul>Robert.Sayegh@gmail.com (2010)

    ×