the final
play

The Final Presentation 201011316 200913247 201011373 Index CTIP - PowerPoint PPT Presentation

The Final Presentation 201011316 200913247 201011373 Index CTIP System testing Static analysis Wrapping up Our CTIP Environment Our CTIP Environment Strength Gradle : wrapper allows use of


  1. The Final Presentation 201011316 김성엽 200913247 권순필 201011373 최지환

  2. Index • CTIP • System testing • Static analysis • Wrapping up

  3. Our CTIP Environment

  4. Our CTIP Environment • Strength – Gradle : wrapper allows use of Gradle without installation – Jenkins : supports integration well with variety of plug- ins – SonarQube : CheckStyle + PMD + FindBugs • Weakness – Gradle : no automatic build script generator – Redmine : embedded DB, port collision (80, 3306)

  5. Possible Improvements • Jenkins alert to ‘ Kakao Talk’ instead of email • Jenkins builds when pushed to Git • Make use of SonarQube web API

  6. System Testing • Tools used – Category-partition : TSLgenerator by UC Irvine and Oregon State University – Pair-wise : All Pairs by Sacrifice – Requirement management : JFeature

  7. CPT Result (this week) • 56 개중 50 개 성공

  8. Pairwise Testing (this week) • 16 개중 16 개 성공

  9. Brute-force Testing (this week) • 28 개 중 20 개 성공

  10. Jfeature & Redmine

  11. Comments about Jfeature • Works only in old version of Eclipse • Have to create Junit test cases • Import and export is tricky

  12. Static Analysis • SonarQube 7 axis of code quality – Architecture & design – Duplications – Unit tests coverage – Complexity – Potential Bugs – Coding Rules – Comments

  13. Basic metrics size

  14. Architecture & Design • Covers – File cycles • Minimal number of files cycles in a directory to identify all undesired dependencies – Files dependencies to cut – Package cycles • Minimal number of directory cycles to identify all undesired dependencies – Package dependencies to cut • This project has no directory nor package – Nothing measured on architecture & design

  15. Architecture & Design • Some suggestions – Divide classes into packages • UI • Database • Talkkid • Common – Message, Word

  16. Duplications • All duplications found in Interface.java

  17. Unit Test Coverage • SonarQube analyzes on – Coverage – Condition coverage – Line coverage – Unit test success/failure – Etc • This project has no unit test!

  18. Complexity • Overall complexity File Complexity Complexity / method Interface.java 149 8.8 Database.java 35 8 Parent.java 32 6.4 Child.java 12 4.4 User.java 8 4 Word.java 1 1 Message.java 1 1

  19. Potential Bugs & Coding Rules • Sonar rules + PMD + Check Style + Findbugs File Number of errors Interface.java 2,990 Database.java 498 Parent.java 303 Child.java 214 User.java 113 Word.java 110 Message.java 109

  20. Potential Bugs & Coding Rules • Critical errors Rule Count Exception handlers should preserve the original exception 18 Throwable.printStackTrace(...) should never be called 6 Fields in a "Serializable" class should either be transient or serializable 5 Dodgy - Redundant nullcheck of value known to be non-null 4 Empty If Stmt 3 Dodgy - Dead store to local variable 1 • Major errors Rule Count Require This 573 Law Of Demeter 95 Line Length 79 Empty Line Separator 75 Javadoc Method 68 Javadoc Variable 63

  21. Comments • Public methods have no documentation • Too few comments – Reader has to guess how the program works • Too many comments – May take more time in just reading the comments – Too many comments are needed  too complex or it doesn’t follow the coding standards

  22. Comments about SonarQube • Tons of minor errors! – Install SonarQube Eclipse plug-in and run local analysis from beginning to avoid errors • Not 100%! – Some errors missed – Some false alarms

  23. SV + SM • Fun because we didn’t do any coding • Our comments on errors were successfully resolved • Kakao Talk was easier than Redmine • They didn’t seemed to have read our powerpoint and video! – We had to make the build scripts and make changes on some minor settings for Gradle

  24. Improvements for Next Semester • Fix which programs to use and teach how to use them in practical lessons • Would be useful if the school provided a server • Would be useful to have more class time with SM

  25. Overall Comments • SV is one of the most unique experience as a senior in CSE • A lot to study  learned a lot • We could see how CTIP would be useful especially for a large-scale project • Importance of communications between teammates • Importance of testing in a software development • Importance of choosing the right tool

Recommend


More recommend