Softwarekwaliteit - Universiteit Utrecht
Transcription
Softwarekwaliteit - Universiteit Utrecht
“Software kwaliteit en metrieken, Omnext Saas” Dr. H. Vogt, presentatie Universiteit Urecht januari 2015 Agenda • • • • Introductie Software kwaliteit: Millennium probleem Waarom software kwaliteit? Software kwaliteit en metrieken – ISO 25010/9126 – Een aantal software metrieken – IFSQ level 1,2,3 • Omnext Saas • Kosten en Metrieken 1 Introductie Dr. H. Vogt • • Informatica Universiteit Utrecht Promotie Universiteit Utrecht – Hogere Orde Attributen Grammatica’s (parsers++) • SERC (Software Engineering Research Centre) – Finder 2000 Millennium Analyse tool – Program Committee Working Conference Reverse Engineering • Omnext – Saas: Software Analysis As a Service – Member of the NEN Normcommissie 381007 'Software and Systems Engineering' – Member of the NEN Werkgroep working on NPR5325 'Opleveren en overdragen van software‘ – IFSQ level 1 en 2 gecertificeerd 2 Omnext Millennium probleem 4 Het probleem • Ontbreken eeuwaanduiding in jaartallen – 83 wordt gezien als 1983 – 00 wordt gezien als 1900, niet als 2000 • 1900 geen schrikkeljaar, 2000 wel • 99 wordt door veel systemen niet als een jaartal beschouwd, maar als een standaardwaarde voor bijvoorbeeld een foutmelding 5 Voorbeeld • Wie om vijf voor twaalf gaat bellen en om vijf over twaalf ophangt zou rijk worden • Het gesprek begint om 23.55 uur op 31 december van het jaar 1999 en eindigt om 00.05 uur van het jaar 1900 • Zonder doeltreffende maatregelen heeft dit telefoongesprek een negatieve telefoonrekening tot gevolg voor bijna een eeuw bellen 6 Will London's lights go out? Will London's lights go out? http://www.pa.press.net/tech/year230997.html By Giles Turnbull, New Media Correspondent, PA IF NO ACTION WAS TAKEN, BUT ALL HAVE TAKEN ACTIONS • Banks closing for most of January 2000 • Telephone lines only operating properly 75 percent of the time. • Massive disruption to power supplies during December 1999 and the following January. • Stock market closed between 1st December 1999 and 24th January 2000 • Ten days of disruption to the postal service. • Schools closed for four weeks • Hospitals only open for emergencies for four weeks. 7 Embedded systems hard evidence To: year2000-discuss@year2000.com Date: Wed, 12 Nov 1997 09:44:12 -600 (CST6CDT) Presented at the November meeting of the Energy Industry Y2K SIG • Four Alcoa Steel Plants – • North Sea Expro (Shell-Exxon JV) – – • 50% of control systems will fail Platform, Pipeline and Gas Plants 1200 systems identified, 12% failure rate BP Refinery, Grangemouth, UK – – – – 94 systems identified Couldn't find vendor for 20 74 assessed 3 will fail, 2 will cause shutdown Jay Abshier, Mgr- Corporate Year 2000 Office Texaco Inc, Bellaire, Texas 8 Tools for millennium Tools Prepare Analysis Adapt Test Implementation Time 9 Waarom software kwaliteit? 10 Waarom software kwaliteit? Complexity Is Killing Your Large Applications: Act Now to Save Them 11 Complexiteit 12 Complexiteit 13 Maintenance costs Systemen steeds complexer Weinig of geen documentatie Geen mensen met kennis meer Herbouw geen optie 14 Kosten besparen Business Vraag: Sturen op kwaliteit code tijdens ontwikkeling en onderhoud SaaS Antwoord: meten van metrieken van code als dienst in de cloud (Omnext), in het engels Software Analysis As a Service 15 The Effects of Complexity - Complexity is killing your large applications : Act now to save them ( Andy Kite – VP & Gartner Fellow ) ISO 25010: non functionele requirements Functionele requirements Beschrijven specifiek gedrag of functies, die het systeem dient te vervullen Niet-functionele requirements Niet-functionele requirements specificeren criteria om het functioneren van het systeem te beoordelen. Bijvoorbeeld performance 17 ISO 25010 • Niet-functionele requirements • Product kwaliteitsmodel (product quality) – 31 kwaliteitsattributen – beperkt tot het doelsysteem – hardware en software • Kwaliteit tijdens gebruik (quality in use) – 11 kwaliteitsattributen – de gehele interactie tussen gebruikers en het informatiesysteem 18 Product Quality 19 Maintainability 20 Metrieken • Indicator – maat voor één of meer kwaliteitseigenschappen. Literatuur: ‘metrics’ • Meetvoorschrift • Norm 21 Voorbeeld metrieken • • • • • • LOC FP backfiring Unit size Parameterlist CC MI 22 LOC • Lines of Code • Meer LOC, meer effort om te ontwikkelen 23 LOC • Wat is LOC? 24 Function Point • Wikipedia: • A function point is a unit of measurement to express the amount of business functionality an information system provides to a user • The cost (in dollars or hours) of a single unit is calculated from past projects • Example: 8 hours per function point • FPA Functie Punt Analyse 25 FP backfiring • LOC -> FP -> Herbouwwaarde systeem • QSM Function Point Programming Language Table 26 Too large unit size • Method is doing more than its name/signature might suggest • Challenging for others to digest , excessive scrolling causes readers to lose focus. • Try to reduce the method length by creating helper methods and removing any copy/pasted code. • Voorbeeld threshold: 100 27 Lengte Parameterlist • Methods with numerous parameters are a challenge to maintain, especially if most of them share the same datatype • These situations usually denote the need for new objects to wrap the numerous parameters. • Voorbeeld threshold: 7 28 Parameterlist voorbeeld 29 CC (Cyclomatische complexiteit, McCabe 1976) What the Experts say... • One general recommendation from the recent SEI report entitled: "Incorporating Software Requirements into the System RFP," suggests including Complexity measurements in the statement of work and enforcing limits on cyclomatic complexity. "Application complexity affects software supportability. One generally accepted complexity measure is McCabe’s Cyclomatic Complexity Measure, which should not exceed 10 for a given module." • Incorporating Software Requirements into the System RFP Survey of RFP Language for Software by Topic, v. 2.0 Edited by Charlene Gross MAY 2009 SPECIAL REPORT CMU/SEI-2009-SR-008 Acquisition Support Program 30 CC 31 CC • Wat is het? • Aantal beslispunten + 1 If a =b*b+4*3 Then 2+a Else 3+b Fi • CC=2, #testpaden = 2 32 CC If a =b*b+4*3 Then 2+a Else 3+b Fi If a =c*f+56 Then 2+f Else 3+g Fi CC=3, #testpaden = 4 33 CC If a =b*b+4*3 Then 2+a Else 3+b Fi If a =c*f+56 Then 2+f Else 3+g Fi If a =f*h+56 Then 2+j Else 3+k Fi CC=4, #testpaden = 8 34 CC • CC=8, #testpaden = ??? • Slechte cholesterol 35 CC If land = NL Then x Fi If land = DE Then y Fi If land = GR Then z FI Goede cholesterol 36 MI • [Oman and Hagemeister, 1991] • • • • Maintainability Index Bepaald onderhoudbaarheid van systeem Enkel getal Samengesteld uit – – – – LOC CC #number of comments Halstead metrics 37 MI 38 MI Complex 39 MI • Probleem: niet intuitief voor vinden wortel van het probleem • Bij metingen met commentaar ook nog even als mens naar kijken • Alternatieven? 40 IfSQ • Institute for Software Quality • Collections defect indicators • Three collections, level 1, 2, 3 • Why inspection? – Code inspection is up to 20 times more efficient than testing – Code reading detected about 80% more faults per hour than testing 41 Level 1 • Most commonly occurring defect indicators considered bad practice • Work in Progress – WIP-1—Vague "To Do“ – WIP-2—Disabled Code – WIP-3—Empty Statement Block • Structured programming – SP-1—Routine Too Long – SP-2—Nesting Too Deep • Single point of maintenance – SPM-1—Magic Numbers 42 Vague “todo” 43 Disabled code 44 Empty block 45 Nesting too deep 46 Geen hardcoded constanten 47 Level 2 • Enkele extra defect indicators • Voorbeeld • SP-3: Logic Too Complex • based on McCabe’s Complexity metric 48 Logic too complex 49 Defect indicators • http://osqr.com/quick_scan.html 50 Praktijk case • Stichting Capclaim strijdt onder leiding van Kenneth Berkleef van het failliete Equihold tegen ictdienstverlener Capgemini. Inzet is het terugvorderen van 43 miljoen euro schade. Read more: http://www.computable.nl/artikel/expertversl ag/development/5208050/1277180/de-kwaliteitvan-de-capgeminisoftware.html#ixzz3NPPBDDuU 51 Praktijk case (2) • Extern onderzoek naar de kwaliteit • In oktober 2010 heeft Equihold gevraagd aan Software Quality Measurement and Improvement (SQMI) om de opgeleverde software te onderwerpen aan een onderzoek. SQMI hanteert een methodische aanpak waarbij het aantal coderegels met een defect worden geteld en gegroepeerd in categorieën. Gemiddeld kwam men op 175 foutieve regels per duizend regels code wat een F-rating opleverde, een drie op een schaal van één tot tien. De één na laagste score in de geschiedenis van SQMI. • Op basis van dit onderzoek is de eindconclusie dat de onderhoudskosten voor dit product onnodig hoog zijn en de software als platform voor verdere ontwikkeling ongeschikt is. 52 Praktijk case (3) • • • Nog een extern onderzoek naar de kwaliteit In 2014 heeft Capgemini de Software Improvement Group (SIG) gevraagd om de software te onderzoeken op onderhoudbaarheid. Zij hebben hiertoe de methode SIG/TUViT-kwaliteitsmodel voor Trusted Product Maintainability (april 2009) gehanteerd. Ook dit is een methodische aanpak op basis van tellingen en een normenkader. Afgelopen juni hebben zij dit rapport gepresenteerd met als belangrijkste conclusie dat de onderhoudbaarheid ‘marktgemiddeld’ is, afgezet tegen de benchmark die SIG hanteert. Dit hoeft natuurlijk niet dezelfde benchmark te zijn die SQMI hanteert en waarop het tot een F-rating komt. Let wel dat SIG direct de onderhoudbaarheid van de software heeft onderzocht en SQMI de software in het algemeen en daarbij als afgeleide heeft geconcludeerd dat de onderhoudbaarheid onnodig duur is. 53 Omnext® SaaS Solution Omnext SaaS Approach Java .Net (OO) Cobol PL/1 Omnext Portal (3GL) Workflow Oracle Uniface (4GL) • Parse Sources • Resolve Relationships • Calculate Metrics • Check Anti-patterns • Detect Code Duplication • Detect Dead Code • Create Design Models • Difference Analyses Omnext SaaS Data Warehouse MS-Excel Tivoli JCL (Job control) ... UML-tools Omnext® SaaS Solution Supported sources • • • • • • • • • • • Access ActionScript ANSI Cobol 85 ASP Aquima C/C++ C# Cobol (most dialects) Java JavaScript Objective C (2013) • • • • • • • • • • • • • Oracle Forms Oracle SQL PHP PL/1 Powerbuilder Powercenter RPG SAP ABAP (2013) Siebel eScript SQL Server Sybase DB/2 UNIFACE • • • • VB.NET Visual Basic 6 DCL JCL • Tivoli Workload Schedule SMF User menu configurations Workflow configurations … • • • • Support for new languages and configurations are added in future releases. Omnext® SaaS Introduction Delivery • On Demand • Cloud based • SaaS Model • NO licence, NO subscription –Usage based pricing Omnext® SaaS demo Omnext® SaaS Examples Corporate Risk Policy Identify Maintenance Risk 58 Health check Monitor Progress 59 Size Lines of code, Function points 60 Productivity Maintenance Function Points 61 Cross Reference Across Technologies Call Tree and Where Used show all resolved relations 62 Source View Example Sybase Stored Procedure In the Source View the code of any language is well structured, color coded and hyperlinked. 63 Source View Compare versions 64 Design View Flow Chart The Design supports analysis by showing class diagrams, sequence diagrams, flow charts, call graphs, structure diagrams, … Design can be exported to UML-tools 65 Design View Jackson Structure Diagram 66 Design View UML Sequence Diagram 67 Standards & guidelines Best practices industry coding best practices and customer coding standards 68 Clone detection Find duplicated code Exact clones as well as syntactic clones 69 Worklist All identifiers and their use are stored separately in the data warehouse, making it easy to search and perform data flow analysis and create a work list. In this example a SEPA work list is created using ‘iban’ and ‘transaction’ as starting points for further data flow analysis. 70 Search 71 Annotations Annotations can be added to all items in the Omnext portal. One can even add annotations to selected lines of code, for instance to document Business Rules or Issues to be solved During an impact analysis a developer can add annotations to the objects in scope, with tags referring to the change or the subject. 72 Annotations The filtered annotations can be exported to Excel The annotations can be filtered on tags (in this case the change number or the subject). This creates the work list of things to do. 73 Identifying interfaces and Data persistency Reports are available on interfaces and data persistency, with the option to trace the information from data layer to business layer 74 Customer Reports By adding relations between components and Business Services, Business Processes, Organisational Units, etc. In the Data Warehouse, reports can be created on those levels. 75 Aggregate on Business Level Example Function Points Report per Business Service 76 System Health Example on iPad 77 Trend Analysis Example on iPad 78 Test Support Example of Quicktest Pro input file Export Form Definitions to Quicktest Pro to accelerate test preparation. Example: Powerbuilder 79 Batch Schedule Optimization Anti Patterns Technical Debt in Batch Schedules: • Dummy Jobs • Incorrect/superfluous dependencies • backups in critical timelines • … In this example based on a Tivoli Application Database, Current Plans, Track Log information and JCL. 80 Batch Schedule Optimization White space analysis White space analysis, showing gaps in critical timelines. In this example based on a Tivoli Application Database, Current Plans, Track Log information and JCL. Omnext is also mentioned in the IBM redbook ‘Approaches to Optimize Batch Processing on z/OS’. See:81 http://www.redbooks.ibm.com/abstracts/redp4816.ht Batch Schedule Optimization Cross Reference Job schedule, JCL, resources and application information all linked and easy accessible in the portal From current plan and track log From application database 82 Cross-reference Tivoli – JCL - Cobol Use Case Editor With the Use Case Editor in the Omnext® Portal, one can recreate functional documentation based on a structured walk through of the source code. With the use case editor, one can add logical labels (aliases) to pieces of source code that are functionally relevant. Also one can add found business rules to the use cases. One can exclude, collapse or expand items in the use case editor. • Exclude: exclude the item from the use case • Collapse: include the complete item as one step in the use case • Expand: show the call tree and conditions within the selected item 83 Save maintenance costs • • • • Uit de white paper Omnext How to save on software maintenance costs Maart 2010, Ir. F. Engelbertink en Dr. H Vogt Agenda – – – – – – – Costs of understanding Documentatie helpt? Dode code Cloned code Bugs verwijderen Complexiteit Totaal 84 Costs of understanding [3, SWEBOK] 85 Documentatie helpt? • Hoeveel documentatie is genoeg? • Studie 2005 [13, Universidade Católica de Brasília, Brasilia, Brazil ]: – Source code and comments are the most important artifacts for understanding a system to be maintained – Data model and requirement description were other important artifacts – Surprisingly, and contrary to what we found in the literature, architectural models and other general views of the system were not found to be very important • Zorg dat de code goed onderhoudbaar is zodat analyse niet zo lang kost 86 Herdocumentatie • Meeste systemen slecht gedocumenteerd • Case study [5, Report from an experiment : impact of documentation on maintenance in Journal of empirical software engineering, 1997] – Geen documentatie: 21% langere analyse – Onderhoud is tot wel 50% analyse – Wel documentatie: 10% winst totale kosten – Hun opmerkelijke cocnlusies • Zonder documentatie: geen verschil goede/slechte pr. • Met documentatie: goede beter • Hun conclusie: goede pr. zonder documentatie weinig zin 87 Dode code • • • • • [16,17 SIG and Free University of Amsterdam] Tot 30% code in systeem kan dode code zijn Gemiddeld 15% Vaak niet bekend wat dode code is Toch maar onderhouden • • • • Stel onderhoud per jaar kost 1$ per regel Applicatie 1 miljoen regels 15% dode code verwijderen 150000$ besparen 88 Cloned code • • • • • • 100% gelijke kloon Modulo variabele namen [19, Demantic Designs] Grote systemen 10-25% cloned code Moet onderhouden worden Bugs cloned • • • • Stel onderhoud per jaar kost 1$ per regel Applicatie 1 miljoen regels 15% cloned code verwijderen 150000$ besparen 89 Bugs verwijderen • PMD, Stylecop, Bandera, ESC/Java2, FindBugs, JLint • Kunnen echte bugs opsporen – Lege if statement – Echte fouten • The null check here is misplaced. If the variable is null a NullPointerException will be thrown. Either the check is useless (the variable will never be "null") or it is incorrect. 90 Bugs verwijderen • • • • 1 miljoen regels code 10 bugs verwijderen (general experience) $500-$1000 per bug fix $5000-$10000 bespaard 91 Complexity • Case study [22, Software Complexity and Maintenance Costs, Communications of the ACM, Banker et al, November 1993] – High levels of software complexity account for approximately 25% maintenance costs or more than 17% of total life-cycle costs – Given the extremely high cost of maintenance in commercial applications, the neglect of software complexity is potentially a serious omission 92 Totaal • 1 million lines of code • $1 maintenance cost per line per year 93 94