60 likes | 165 Views
T-76.4115 Better Code Faster - Next Generation Java Continuous Integration Environment. Nokia Siemens Networks Hannu Kokko ( hannu.kokko@nsn.com 050 486 8110). Introduction.
E N D
T-76.4115 Better Code Faster - Next Generation Java Continuous Integration Environment Nokia Siemens Networks Hannu Kokko (hannu.kokko@nsn.com 050 486 8110)
Introduction • OSS Middleware business line in Nokia Siemens Networks is building next generation network management software platform . • Largest agile & iterative development project in Finland • several countries, several teams in each country • One of the largest Java projects in Finland, if not the largest • Increase code quality and productivity by exploring and integrating simple, state of the art tooling to our working environment and daily practices • provide proof of concepts or ready solutions Challenge • With large codebases the information can be overwhelming and hard to get • tools must be automatic and non-intrusive, very easy to use • integrate the information from different tools in an innovative way to provide insights that a single tool can not. • Provide just the needed information continually • information presented in a form that would be quickly usable by the stakeholder • Stakeholders: developers, architects and R&D management.
Project goals • Outcome is to Increase code quality and productivity by exploring and integrating simple, state of the art tooling to our continuous integration environment • provide proof of concepts or ready solutions • Investigate which would be the most needed enhancements from stakeholders (developers and management). • Some examples of possible needs: • what would be the most practical ways to do static analysis continuously • what kind of static analysis and code metrics would be best to do • what tools to use (open source, commercial) • how to integrate the information from possibly several tools to continuous integration environment and provide feedback quickly enough • how to filter information and show it over time • how to help developer find the most likely spots to refactor or improve his code or his unit tests • for example: integrate information from coverage analysis, junit test information, complexity analysis to provide guidance for developer • verifying the quality of unit tests • how to help architects & R&D Management to find ways to pinpoint refactoring needs globally in codebase • for example: find duplication, areas of complexity, architectural rule violations...
Tools and technology • Eclipse • For continuous integration environment an existing environment consisting of • Maven / Subversion / Bamboo / Cobertura would be used and enhanced. • Runtime environment is Linux. • Development can be done also on Windows or Macs as long as end result runs on Windows and Linux environment. • For enhancement of the environment both open source and commercial tools compatible and integrated to previous can be considered. • Possible open source and commercial tools to consider: findbugs, pmd, Clover, JTest, Lattix, Macker ... • Integration of the features to the continuous integration environment could be done for example as Maven plugins and Bamboo plugins. • Documentation of the results could be done in a wiki format and as Microsoft Word documents.
Skills • The team should have enough Java and XML development skills and familiarity with java open source tooling to be able to provide proof of concepts or finished code to the target environment or in a form that could be integrated to the target environment. • Familiarity with agile & iterative development is a plus. • Familiarity with Maven for some members in the team is a plus. • Development team is international so communication in english in both written and verbal form is needed.
Project where you get to (at least) • interview software developers and R&D management about their needs in continuous integration of software • Build product backlog by interviewing subject matter experts – not everything is ready made for you, you have flexibility in requirements • Balance the product backlog against your capability to deliver • learn to integrate software • explore best ways to analyze, use and present information from build systems and version control • develop your skills in understanding code & properties of large systems • learn to use Maven & other tools within context of complex systems • build Maven and Bamboo plugins with Java • study tools to integrate Project which is quantified as above expectations by customer will get team members a personal Nokia N95 after project.