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 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)
Possible Improvements • Jenkins alert to ‘ Kakao Talk’ instead of email • Jenkins builds when pushed to Git • Make use of SonarQube web API
System Testing • Tools used – Category-partition : TSLgenerator by UC Irvine and Oregon State University – Pair-wise : All Pairs by Sacrifice – Requirement management : JFeature
CPT Result (this week) • 56 개중 50 개 성공
Pairwise Testing (this week) • 16 개중 16 개 성공
Brute-force Testing (this week) • 28 개 중 20 개 성공
Jfeature & Redmine
Comments about Jfeature • Works only in old version of Eclipse • Have to create Junit test cases • Import and export is tricky
Static Analysis • SonarQube 7 axis of code quality – Architecture & design – Duplications – Unit tests coverage – Complexity – Potential Bugs – Coding Rules – Comments
Basic metrics size
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
Architecture & Design • Some suggestions – Divide classes into packages • UI • Database • Talkkid • Common – Message, Word
Duplications • All duplications found in Interface.java
Unit Test Coverage • SonarQube analyzes on – Coverage – Condition coverage – Line coverage – Unit test success/failure – Etc • This project has no unit test!
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
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
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
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
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
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
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
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