Continuous Inspection
|
|
|
- Loreen Matthews
- 10 years ago
- Views:
Transcription
1 Continuous Inspection A Pattern for Keeping your Code Healthy and Aligned to the Architecture Paulo Merson 1, Joseph Yoder 2, Eduardo Guerra 3, Ademar Aguiar 4 1 Federal Court of Accounts (TCU), Brasilia, Brazil 2 The Refactory, Inc. 3 National Institute for Space Research (INPE) - Brazil 4 FEUP. [email protected], [email protected], [email protected], [email protected] Abstract. Agile software development methodologies are primarily an iterative and incremental development process usually done in short sprints allowing the requirements and software to evolve based upon core business needs. This is done through a close collaboration between self-organizing and crossfunctional teams. Larger systems can evolve with business needs over many months and years including enterprise architecture. When this happens, it is important to make sure the core principles of the architecture are maintained or else the system can evolve to something that can be hard to maintain. This paper examines the Continuous Inspection pattern that can help insure that as the systems evolves using an agile development process, new code can evolve to still map well to the expected architecture. Categories and Subject Descriptors D.1.5 [Programming Techniques]: Object-oriented Programming; D.2.2 [Design Tools and Techniques]: Objectoriented design methods; D.2.11 [Software Architectures]: Patterns General Terms Architecture, Design Keywords Continuous Integration, Code Analysis, Static Analysis, Architecture Conformance Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission. Preliminary versions of these papers were presented in a writers' workshop at the 2 nd Asian Conference on Pattern Languages of Programs (AsianPLoP). AsianPLoP'2013, March 5-7, Tokyo, Japan. Copyright 2013 is held by the author(s). ACM XXXX-XXXX-X.
2 Introduction Agile software development is an iterative and incremental development process, where the software evolves and adapts to changing requirements through self-organizing and cross-functional teams. Most agile processes embrace quick responses to change through feedback loops and short sprints with flexible planning and incremental delivery. Quite often the software development and maintenance effort involves many programmers and can span many months or years. When this happens, a common phenomenon can take place: the architecture and source code can evolve to something that can be hard to maintain and evolve. Continuous inspection helps with the evolution of a system by spotting problems early in the process. It helps to ensure that new code complies with the intended architecture and other design restrictions and coding guidelines in place. This paper describes the continuous inspection pattern, which consists of best practices to preserve the quality of your source code and its alignment to the architecture in an agile environment. The intent of this paper is to document the main pattern that captures the overall practice of continuous inspection. There are two key aspects of continuous inspection inspection moment and inspection type as presented in Figure 1. Each aspect gives you alternatives that are discussed throughout the paper. Specialized patterns inside the Continuous Inspection domain stem from combinations of the alternatives for these two aspects. These Continuous Inspection specialized patterns represent recurrent solutions that can be used to address more specific needs and should be explored in future work. Figure 1 Continuous Inspection aspects that engender specialized patterns Context A core agile development principle is that the team should respond to change. Changing the software with agility relies heavily on the level of modifiability of the code. That is why agile development uses techniques to continuously improve the software quality. Continuous care for the quality of implementation artefacts is important to reduce the Continuous Inspection - 2
3 impact of the risk of changing code, allowing incremental evolution in short iterations. Some important characteristics of agile software development that allow us to change code more easily and safely are: The presence of automated tests to allow changes to be performed safely; Good modularization to avoid changes to have broad impact; and Clean code [Mar08] that is easy to understand and hence easier to maintain and evolve. During the iterations, the code grows and becomes hard to manage. It can be hard to know if an architectural rule was violated or if the code needs refactoring in some place. If things get out of control, the code structure can deteriorate and generate significant technical debt. When the software development and maintenance effort involves several programmers and/or several teams, and spans months or years, a common phenomenon takes place: the source code exhibits an actual architecture that gradually diverges from the intended 1 architecture created to address the functional and quality attribute requirements of the application. The reasons for that may include: The intended architecture is not properly communicated to everybody who s writing code. There s high turnover in the team, and newcomers are not familiar with the architecture. Developers are assigned maintenance tasks and take shortcuts in the code, disregarding the now-forgotten intended architecture. Developers of large systems focus on small tasks, and don t see the big picture of the system. The initial architecture should be evolved because of new requirements or technology innovations. Problem How to detect architecture and code problems as soon as possible? Forces Awareness: When developers focus on introducing new features, it is common to ignore existing design decisions. This is especially true if a developer that is making the change is not aware of the details of the architecture (new person). Detectability: In a large project, sometimes it is hard to evaluate code quality and if the architecture is being followed throughout the source code. The code may grow to a very large code base using different technologies, thus making it difficult to evaluate and detect violations in the architecture. Early Diagnosis: problems in the architecture are easier to be addressed when they are detected early. One reason for that is the fact that architecture issues that transpire to the source code tend to propagate due to copy and paste programming. However, it is hard to identify an architecture problem before the implementation is 1 We use intended architecture to refer to the design specifications carefully created based on previous experience of the designers as well as knowledge codified as architecture and design patterns. The intended architecture also evolves and changes to accommodate new requirements, design patterns, technologies and frameworks. This evolution of the architecture is natural and welcomed. Continuous Inspection - 3
4 already in place. In fact, some architecture issues that affect throughput and reliability are often only spotted once the application is rolled out. Software Qualities: On the one hand, we would like to ensure that the quality attributes (e.g., modifiability, performance, portability) resulting from design decisions in the architecture are preserved in the implementation; on the other hand, as new requirements come in, it is important to adapt the software to implement them with agility. Many teams focus on addressing new functional requirements and often overlook software qualities. Architecture Evolution: the original architecture may need to change because of new requirements (e.g., the application shall provide a native Android front-end ) or adoption of technology innovations (e.g., adopting the Spring Security Framework for web authentication/authorization). How can we safely evolve the architecture keeping things working and staying focused on the top priority requirements? It is important that as the system evolves, that the architecture evolves as well. Technical Debt: as changes are introduced into the system, it is normal to have some technical debt. If the debt goes unchecked and is never paid back, the software can become muddy [FY00] and the actual architecture of the existing implementation may not exhibit the desired modularity, interoperability, portability, and other qualities. In particular, any maintenance becomes a costly and risky task. Inspection Cost: To manually inspect code and detect problems, specifically with the architecture, can be very difficult and time consuming. This kind of inspection requires an experienced person with good knowledge of the architecture and coding guidelines, and can require a lot of time. It is useful if these can be automated, however automated tools often require an experience person to describe the important rules for the architecture. Time: Many times lack of code quality or problems on the application architecture are identified, but the team does not have time or is not given time to stop adding features to correct them. Agile teams in general focus on features based upon the backlog items. If time is not allocated to refactor the code and to keep things clean, the system can erode to something muddy [FY00]. Solution Use available automated tools to continuously inspect code, generate a report on the overall code health, and point out if any violation was detected. These tools can be execute locally on the developer s machine alone and by having the system communicate with a continuous integration server that builds the code at specific time intervals, or upon each code commit. This solution does require describing the intended architecture as part of the process where an expert is maintaining the rules for the desired architecture. Figure 2 represents the pattern main idea. Continuous Inspection - 4
5 Figure 2 Continuous Inspection pattern representation There are some alternatives about how the tool should handle the violation found. The less invasive approach is to create a report and make it available to the entire team. Another alternative is to generate warnings that are presented each time the project is build. Finally, when the violation is severe, it can generate a build error. Some teams adopts a zero-warning policy, that is, all violations should be fixed for the code to be considered complete. If warnings are accepted, they tend to grow in number and eventually become ignored by the team. Such policy may sound too strict or unattainable. In practice, the different verifications can be classified in categories (e.g., show-stopper, critical, major, minor), so the zero-warning policy can be adopted for the most important categories only. The continuous integration server has access to the application source code and all the resources necessary to build it. As part of the build, some tools that perform static analysis are invoked to evaluate the quality and other aspects of the source code. Following are some types of tools that can be executed at this point: Metrics: One of the most common analysis tool is the one that extract metrics from the source code. This metrics can also be compared to statistical thresholds that indicate if the measured value is low, average or high. The average value per package or module can help to identify areas or layers that require more attention. This kind of analysis is usually presented on reports accessible to all in the team. Examples of metrics include: o Number of violations per category and ratio per KLOC. o Tests coverage for either or both unit and integration tests. o Size measures: LOC, number of classes, methods, etc. o Number of cyclic dependencies. o Cyclomatic complexity. o Technical debt. Code Smells Detection: The combination of some issues in a class can reveal some design disharmonies, also known as code smells [Fow99]. Usually Continuous Inspection - 5
6 automated code smells detection is based on rules executed through static code analysis and based on parameterized metric values. For example, one can configure the number of lines of code (or number of instructions) that indicates the presence of the long method smell. The result of this type of analysis is usually presented in a report or is displayed as warnings during the build phase. Application security checks: some tools specialize in detecting security vulnerabilities in application programs. Examples include vulnerability to SQL injection and cross-site scripting, hard-coded passwords, overridden security critical methods. Architectural conformance: here the tool inspects the source code to make sure specific design rules are followed. These design rules typically include the allowed dependencies in the layered architecture for example, a module in the business logic layer cannot depend on a module in the presentation layer. The ideal scenario is to have these tools integrated in the developer IDE as well as with the build server. But when the integration is not implemented, it is still possible to use the tools for Continuous Inspection. When that happens, they should be executed continuously to give continuous feedback for the development team. Drawbacks of this approach are that the tool execution can consume time from team members and, since its execution is not integrated, it can be forgotten when time is pressing. The continuous inspection pattern comprises the application of the four kinds of tools and analyses listed above. These tools can be employed in isolation or together and each category of verification they perform can be seen as a pattern on its own. How It Works The following outlines the basic steps to adopt the continuous inspection pattern: 1. Tool selection. Evaluate and select one or more tools that can perform static analysis on your code base. Evaluation criteria include: a. the programming and scripting language(s) used in your software projects versus the ones supported by the tool; b. whether the tool provides an API for developing customized verifications; c. integration with your IDE; d. integration with your continuous integration server; and a e. set of built-in verifications, which should include items that are deemed more relevant for your software project. 2. Verification selection. Most tools come with a variety of built-in verifications and metrics. You need to evaluate what built-in verifications in the selected tool(s) are applicable to your software project. Criteria may include: a. Modifiability requirements. If you are experiencing problems with maintenance and evolution of existing projects, you should enable verifications that pinpoint duplicated code, cyclic dependencies, overly complex and/or large classes and methods, and others that will help you to improve modularity and modifiability of the code. b. Security requirements. There are verifications that can spot security-related issues, such as SQL injection vulnerability, hard-coded credentials, and overridden security methods. Continuous Inspection - 6
7 c. Team skills. d. Quality of existing code base. It is likely that a more strict selection of verifications can be enabled for newer projects. For older code, a strict set of verifications may generate so many violations that they might tend to be ignored. In any case, it is desirable that the same selection of verifications is applied to all projects that are under the same governance system and quality scrutiny. e. Development is/is not outsourced. The development contractor and the contracting organizations may want to negotiate what types of violations will not be accepted in delivered code. f. Development team is/is not collocated. g. Greenfield development. An existing code base will often exhibit several violations and the cost to fix them may be too high. Greenfield development opens space to enable all verifications considered important and enforce them from the get-go a zero-warning policy is more easily adopted in such scenarios. h. Feasibility to fix violations. Verifications that generate violations in the existing code that realistically will not be fixed in the foreseeable future due to lack of resources or other reasons should not be enabled. 3. Tool setup. The selected tools with the selected verifications enabled need to be configured on a continuous integration server. Ideally the tools should run as often as possible, say every 30 minutes. But in practice, if the code base is sizeable the static analysis can easily take tens of minutes. In that case, you may want to run the checks once every night. 4. Accountability for violations. It is important that developers are accountable for violations and that fixing them become part of the development process. As mentioned before, a zero-warning policy should be in place, at least for the most critical categories of violations. Checkpoints for fixing violations should be defined. For example, at the end of each sprint or at each code release, all violations should be fixed. 5. Customized verifications. The continuous inspection can go one step further and create customized verifications using the API available in the selected tools [Mer13]. This is a non-trivial step since it typically requires expressing an architecture decision or programming rule in syntactic terms of the target programming language. Albeit challenging to create, customized verifications represent an enormous enhancement to the different aspects of code health inspection. Built-in verifications are by-design generic. On the other hand, customized verifications can be specific to a software project or organization and hence more powerful. They can deal with module, layer, and method names that are specific to a project; they can accommodate known exceptions to a given rule; they are aware of home-made libraries and wrappers. 6. Enforcement at commit time. As an ultimate barrier to avoid code violations to enter the codebase, you can configure the automated verifications to be executed upon each source code commit operation [Mer13]. Of course, you need a versioning system that provides a mechanism to run user-defined scripts that can have access to the files in a code commit operation. This kind of solution will deny the code commit operation and give the user a clear error message pointing out the specific reason. Thus, even if a developer ignores the violations displayed on the IDE and on the continuous integration dashboard and reports, these Continuous Inspection - 7
8 violations won t make it into the codebase because of the enforcement at commit time. Clearly, only violations that are critical and/or applicable to all source files in the code repository should be enabled to run on this solution. Consequences The following outlines trade-offs of the continuous inspection pattern: Some problems in the code can be detected soon, enabling their correction or a planning to address them on the next iterations. The team is always aware of how is the code quality, and that gives them confidence in the software solution that they are developing. Team members can learn with some problems detected by the tools. Indeed, the tools typically display user messages that have a good rational explanation for all verifications. Developers are encouraged to create good quality code, since they know that it is valued by the team. Teams tend to strive to achieve ever better quality indicators, especially if those indicators are made visible to different teams on a dashboard for various projects. Project managers, contracting organizations, and governance agents in general can use the metrics generated by the tools as key performance indicators to evaluate the quality of the code being delivered by the development team. Reports generated by (widely used and trusted) tools help to make the claim before project managers and product owners to allocate effort to perform the code refactorings required to fix violations. An overconfidence in the tools can make the team relaxed in other aspects of the software that are not addressed by them. The setup of these tools and their integration with build tools and IDEs are usually time consuming and should be included in the beginning of the project. If the static analysis tools are not properly configured and unnecessary verifications are enabled, there can be too many violations being reported. When continuous inspection reports or the IDE shows thousands of warnings and many of them are considered non-issues, the developer tends to ignore the entirety of the warnings. If the motivation and benefits of continuous inspection is not made clear to all developers, some of them may feel and complain that verifications are an annoyance that disturb and constrain his/her work and creative process. Often times development teams install and begin to use tools that calculate metrics on the software code, but they don t take the time to study, explore, and configure the various metrics. For example, some tools calculate an overarching quality index that combines a ratio of code violations with test coverage and a measure of complexity. Some metrics are derived from other basic metrics using weighted equations. The default values used in the calculation as well as the weight of each factor may not be appropriate for a given software project, and the metrics can be skewed or misleading. For example, some tools calculate technical debt and one of the outputs is the dollar amount required to pay the debt. If the average salary of the developer was not configured in the tool, the debt amount may not be realistic. Continuous Inspection - 8
9 Related Patterns Jez Humble and Dave Farley have a blog post about continuous delivery patterns [Hum13]. Although their text talks about patterns in continuous integration, it doesn t explicitly mention code inspection or code analysis. Paul Duvall author of Continuous Integration [Duv07] wrote a piece titled Continuous Integration - Patterns and Antipatterns [Duv10]. Duvall suggests 23 patterns that go beyond building and running tests continuously and dicuss a broad set of activities related to continuous integration, such as deployment and IDE integration. One of the patterns is Continuous Inspection, which is described as Run automated code analysis to find common problems. Have these tools run as part of continuous integration or periodic builds. He mentions the use of checkstyle as part of an ant build script. Much of SonarQube documentation and also SonarQube in Action [Cam13] talk about continuous inspection, which is described as a process that consists of code analysis and reporting and should be part of the development lifecycle. However, continuous inspection is not described as a pattern in these publications. Known Uses As an example of setup for continuous inspection, consider an IT organization that develops enterprise applications using Java technologies. They have a few million lines of Java code spread across over 50 applications, and counting. The various development teams count up to just over a hundred people, who include full-time staff, interns, and contractors. The continuous inspection pattern was applied using the following tools: Static analysis tools: o SonarQube o PMD o Checkstyle o FindBugs Coverage: o JaCoCo Continuous integration and build: o Jenkins o Maven Versioning system: o Subversion IDE: o Eclipse with plug-ins to run the code analysis tools The built-in verifications provided by the static analysis tools were carefully selected and configured. A formula for a customized overall quality index was devised based on Continuous Inspection - 9
10 the different metrics and emphasizing the aspects that most directly affect maintainability, which is considered a key quality attribute for that organization. Developers can execute the various tools on their IDE or even using the command line version of maven. Jobs were configured on the Jenkins continuous integration server to execute the code analyses and generate the metrics. Results of analyses are uploaded to the SonarQube server, which is at the same time a central repository for analyses and a web server that offers a web user interface to browse the metrics and violations. Customized verifications were developed using the checkstyle Java API. They were packaged as a plug-in to the SonarQube server to enhance built-in verifications provided by that platform. In addition, some of these custom checks were deemed must have rules and were configured to run on the Subversion server upon any Java file commit, so that the entire commit operation is denied if any custom check detects a violation. Jenkins has a dashboard view to show the situation of the various jobs. Likewise, SonarQube provides a global dashboard showing metrics for various projects (see snapshot in ). The user can click on a given project to see a project specific dashboard. For this IT organization, the most prominent metrics and indicators on a project s dashboard are: the customized quality index mentioned above (see snapshot in Figure 4), technical debt (Figure 5), unit and integration tests coverage (Figure 6), code duplication (Figure 7), and size measures (Figure 8). The SonarQube dashboard also shows a graph with the evolution of some metrics over time (Figure 9). These dashboards are physically on display on a handful of big screen TVs spread across the software development department. They are also visible by any developer or manager on the web browser. Many of the metrics contain hyperlinks to detailed information about the calculation and annotated source code. For example, one can click on the measure under Duplications (Figure 7) to navigate and display the source files, and see where duplicate code is. Figure 3 Snapshot of SonarQube global dashboard showing various projects and a summary of metrics Continuous Inspection - 10
11 Figure 4 Snapshot of SonarQube dashboard showing a customized quality index for a project Figure 5 Snapshot of SonarQube dashboard showing the technical debt for a project Figure 6 Snapshot of SonarQube dashboard showing the unite test coverage (above) and integration test coverage (below) for a project Figure 7 Snapshot of SonarQube dashboard showing size metrics for a project Continuous Inspection - 11
12 Figure 8 Snapshot of SonarQube dashboard showing the technical debt for a project Figure 9 Interactive graph in the SonarQube dashboard showing historical information for three different metrics. Acknowledgements We thank our shepherd Kazunori Sakamoto for his valuable comments and feedback during the AsianPLoP 2013 Shepherding process. We also thank our 2013 AsianPLoP Writers Workshop Group, YYY, for their valuable comments. Continuous Inspection - 12
13 References [Cam13] Campbell, G., Papapetrou, P. SonarQube in Action. Manning, November [Duv07] Duval, P., Matyas, S., Glover, A. Continuous Integration: Improving Software Quality and Reducing Risk. Addison-Wesley, July [Duv10] Duval, Paul. Continuous Integration: Patterns and Anti-Patterns. DZone, Available at [Fow99] [FPR01] [FY00] [GHJ+95] [Hum13] [KJ04] [Mar02] [Mar08] [Mer13] Fowler, M., Refactoring: Improving the Design of Existing Code. Addison- Wesley Fontura, M., Pree, W., Rump, B. The UML Profile for Framework Architectures. Addison-Wesley Foote, B., Yoder J. W Big Ball of Mud, Fourth Conference on Patterns Languages of Programs (PLoP '97/EuroPLoP '97) Monticello, Illinois, September Pattern Languages of Programs Design 4 edited by Neil Harrison, Brian Foote, and Hans Rohnert. Addison Wesley, Gamma, E., R. Helm, R. Johnson, J. Vlissides. Design Patterns: Elements of Reusable Object Oriented Software. Addison-Wesley Humble, J., Farley, D. Continuous Delivery Patterns. Available at Kircher, M.; P. Jain. Pattern Oriented Software Architecture, Volume 3: Patterns for Resource Management. Wiley & Sons Martin, R. Agile Software Development: Principles, Patterns, and Practices. Prentice Hall, Martin, R. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall, Merson, P. Ultimate architecture enforcement: custom checks enforced at codecommit time. Proceedings of the 2013 Conference on Systems, programming, & applications: software for humanity (SPLASH 13). Indianapolis, October Continuous Inspection - 13
GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns
Introducing FACTORY SCHEMES Adaptable software factory Patterns FACTORY SCHEMES 3 Standard Edition Community & Enterprise Key Benefits and Features GECKO Software http://consulting.bygecko.com Email: [email protected]
Patterns to Introduce Continuous Integration to Organizations
Patterns to Introduce Continuous Integration to Organizations Kenichiro Ota Shift inc. Tokyo Japan [email protected] [email protected] Hiroko Tamagawa Shift inc. Tokyo Japan [email protected]
Test Driven Development Part III: Continuous Integration Venkat Subramaniam [email protected] http://www.agiledeveloper.com/download.
Test Driven Development Part III: Continuous Integration Venkat Subramaniam [email protected] http://www.agiledeveloper.com/download.aspx Abstract In this final part of the three part series on
Effektiver Tool-Einsatz
Effektiver Tool-Einsatz für Scrum-Projekte im Java-Umfeld Agile Softwareentwicklung Werte, Prinzipien, Methoden und Prozesse 13. OBJEKTspektrum Information Days 29. April 2010, München Gerhard Müller,
Delivery. Continuous. Jez Humble and David Farley. AAddison-Wesley. Upper Saddle River, NJ Boston Indianapolis San Francisco
Continuous Delivery Jez Humble and David Farley AAddison-Wesley Upper Saddle River, NJ Boston Indianapolis San Francisco New York Toronto Montreal London Munich Paris Madrid Cape Town Sydney Tokyo Singapore
Build management & Continuous integration. with Maven & Hudson
Build management & Continuous integration with Maven & Hudson About me Tim te Beek [email protected] Computer science student Bioinformatics Research Support Overview Build automation with Maven Repository
Test Driven Development with Continuous Integration: A Literature Review
Test Driven Development with Continuous Integration: A Literature Review Sheikh Fahad Ahmad Deptt. of Computer Science & Engg. Mohd. Rizwan Beg Deptt. of Computer Science & Engg. Mohd. Haleem Deptt. of
Upping the game. Improving your software development process
Upping the game Improving your software development process John Ferguson Smart Principle Consultant Wakaleo Consulting Email: [email protected] Web: http://www.wakaleo.com Twitter: wakaleo Presentation
Software Construction
Software Construction Martin Kropp University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Learning Target You can explain the importance of continuous integration
SOFTWARE TESTING TRAINING COURSES CONTENTS
SOFTWARE TESTING TRAINING COURSES CONTENTS 1 Unit I Description Objectves Duration Contents Software Testing Fundamentals and Best Practices This training course will give basic understanding on software
Software Engineering
1 Software Engineering Lecture 2: Software Life Cycles Stefan Hallerstede Århus School of Engineering 25 August 2011 2 Contents Naive Software Development Code & Fix Towards A Software Process Software
Keywords Continuous Integration, Engineering Pipeline, SonarQube, Test Orchestration.
Volume 5, Issue 5, May 2015 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com Automated Software
Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8 dt08ps5]@student.lth.
1 Continuous Integration with Jenkins Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8 dt08ps5]@student.lth.se Faculty of Engineering, Lund Univeristy (LTH) March 5, 2013 Abstract
How Silk Central brings flexibility to agile development
How Silk Central brings flexibility to agile development The name agile development is perhaps slightly misleading as it is by its very nature, a carefully structured environment of rigorous procedures.
Delivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous Integration 01 02 03 04 Unit Check- Test Review In 05 06 07 Build Deploy Test In the following pages we will discuss the approach and systems that together make
Continuous Integration Multi-Stage Builds for Quality Assurance
Continuous Integration Multi-Stage Builds for Quality Assurance Dr. Beat Fluri Comerge AG ABOUT MSc ETH in Computer Science Dr. Inform. UZH, s.e.a.l. group Over 8 years of experience in object-oriented
Baseline Code Analysis Using McCabe IQ
White Paper Table of Contents What is Baseline Code Analysis?.....2 Importance of Baseline Code Analysis...2 The Objectives of Baseline Code Analysis...4 Best Practices for Baseline Code Analysis...4 Challenges
Merlin A Continuous Integration Tool for VisualWorks
Merlin A Continuous Integration Tool for VisualWorks Michael Meyer November 23, 2005 1 Contents Contents 1. Continuous Integration 3 1.1. Definition.................................... 3 1.2. The benefit...................................
GenericServ, a Generic Server for Web Application Development
EurAsia-ICT 2002, Shiraz-Iran, 29-31 Oct. GenericServ, a Generic Server for Web Application Development Samar TAWBI PHD student [email protected] Bilal CHEBARO Assistant professor [email protected] Abstract
Getting started with API testing
Technical white paper Getting started with API testing Test all layers of your composite applications, not just the GUI Table of contents Executive summary... 3 Introduction... 3 Who should read this document?...
A Modular Approach to Teaching Mobile APPS Development
2014 Hawaii University International Conferences Science, Technology, Engineering, Math & Education June 16, 17, & 18 2014 Ala Moana Hotel, Honolulu, Hawaii A Modular Approach to Teaching Mobile APPS Development
http://www.wakaleo.com [email protected] Java Software Quality Tools and techniques
Wakaleo Consulting O p t i m i z i n g y o u r s o f t w a r e d e v e l o p m e n t http://www.wakaleo.com [email protected] Java Software Quality Tools and techniques 1 Introduction Agenda tools
Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB
September Case Studies of Running the Platform NetBeans UML Servlet JSP GlassFish EJB In this project we display in the browser the Hello World, Everyone! message created in the session bean with servlets
SOA-14: Continuous Integration in SOA Projects Andreas Gies
Distributed Team Building Principal Architect http://www.fusesource.com http://open-source-adventures.blogspot.com About the Author Principal Architect PROGRESS - Open Source Center of Competence Degree
Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012
Jenkins Continuous Build System Jesse Bowes CSCI-5828 Spring 2012 Executive summary Continuous integration systems are a vital part of any Agile team because they help enforce the ideals of Agile development
Introduction to OpenUP (Open Unified Process)
Introduction to OpenUP (Open Unified Process) Different projects have different process needs. Typical factors dictate the needs for a more formal or agile process, such as team size and location, architecture
Practical Experiences of Agility in the Telecom Industry
Practical Experiences of Agility in the Telecom Industry Jari Vanhanen 1, Jouni Jartti 2, and Tuomo Kähkönen 2 1 Helsinki University of Technology, Software Business and Engineering Institute, P.O. Box
Development Testing for Agile Environments
Development Testing for Agile Environments November 2011 The Pressure Is On More than ever before, companies are being asked to do things faster. They need to get products to market faster to remain competitive
Global Software Change Management for PVCS Version Manager
Global Software Change Management for PVCS Version Manager... www.ikanalm.com Summary PVCS Version Manager is considered as one of the leading versioning tools that offers complete versioning control.
Software infrastructure for Java development projects
Tools that can optimize your development process Software infrastructure for Java development projects Presentation plan Software Development Lifecycle Tools What tools exist? Where can tools help? Practical
SourceMeter SonarQube plug-in
2014 14th IEEE International Working Conference on Source Code Analysis and Manipulation SourceMeter SonarQube plug-in Rudolf Ferenc, László Langó, István Siket, Tibor Gyimóthy University of Szeged, Department
Testing Tools Content (Manual with Selenium) Levels of Testing
Course Objectives: This course is designed to train the fresher's, intermediate and professionals on testing with the concepts of manual testing and Automation with Selenium. The main focus is, once the
Software Development In the Cloud Cloud management and ALM
Software Development In the Cloud Cloud management and ALM First published in Dr. Dobb's Journal, February 2009: http://www.ddj.com/development-tools/212900736 Nick Gulrajani is a Senior Solutions Architect
Experiences with ALM tools in Software Engineering course
Faculty of Mathematics, University of Belgrade 1/35 Vladimir Filipović Experiences with ALM tools in Software Engineering course Outline 2/35 Software Engineering course entitled Software development 2
USING SYNERGY WITH CRUISE CONTROL
USING SYNERGY WITH CRUISE CONTROL by Brian Wise Medtronic, Inc. Prepared for the 2008 Telelogic Americas User Group Conference Abstract USING SYNERGY WITH CRUISE CONTROL Continuous Integration and automated
Architecture Rules Enforcement and Governance Using Aspects
Architecture Rules Enforcement and Governance Using Aspects Srini Penchikala SATURN 2009 About the Speaker Enterprise Architect Writer, Speaker, Editor (InfoQ) Detroit Java User Group Leader Working with
DevOps for CA Plex Automated Testing
DevOps for CA Plex Automated Testing Agenda DevOps Agile ALM CM MatchPoint Automated Testing Worksoft Certify DevOps Agile - DevOps Source: IBM SoftwareTechnical White Paper DevOps Lifecycle DevOps CA
Using TechExcel s DevSuite to Achieve FDA Software Validation Compliance For Medical Software Device Development
Using TechExcel s DevSuite to Achieve FDA Software Validation Compliance For Medical Software Device Development The FDA requires medical software development teams to comply with its standards for software
(Refer Slide Time: 01:52)
Software Engineering Prof. N. L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture - 2 Introduction to Software Engineering Challenges, Process Models etc (Part 2) This
Coverity White Paper. Effective Management of Static Analysis Vulnerabilities and Defects
Effective Management of Static Analysis Vulnerabilities and Defects Introduction According to a recent industry study, companies are increasingly expanding their development testing efforts to lower their
Source Code Review Using Static Analysis Tools
Source Code Review Using Static Analysis Tools July-August 05 Author: Stavros Moiras Supervisor(s): Stefan Lüders Aimilios Tsouvelekakis CERN openlab Summer Student Report 05 Abstract Many teams at CERN,
CONTINUOUS INTEGRATION
CONTINUOUS INTEGRATION REALISING ROI IN SOFTWARE DEVELOPMENT PROJECTS In the following pages we will discuss the policies and systems that together make up the process called Continuous Integration. This
Content. Development Tools 2(63)
Development Tools Content Project management and build, Maven Version control, Git Code coverage, JaCoCo Profiling, NetBeans Static Analyzer, NetBeans Continuous integration, Hudson Development Tools 2(63)
Basic Trends of Modern Software Development
DITF LDI Lietišķo datorsistēmu programmatūras profesora grupa e-business Solutions Basic Trends of Modern Software Development 2 3 Software Engineering FAQ What is software engineering? An engineering
Jenkins: The Definitive Guide
Jenkins: The Definitive Guide John Ferguson Smart O'REILLY8 Beijing Cambridge Farnham Koln Sebastopol Tokyo Table of Contents Foreword xiii Preface xv 1. Introducing Jenkins 1 Introduction 1 Continuous
Meister Going Beyond Maven
Meister Going Beyond Maven A technical whitepaper comparing OpenMake Meister and Apache Maven OpenMake Software 312.440.9545 800.359.8049 Winners of the 2009 Jolt Award Introduction There are many similarities
The «SQALE» Analysis Model An analysis model compliant with the representation condition for assessing the Quality of Software Source Code
The «SQALE» Analysis Model An analysis model compliant with the representation condition for assessing the Quality of Software Source Code Jean-Louis Letouzey DNV IT Global Services Arcueil, France [email protected]
Northwestern University Dell Kace Patch Management
Northwestern University Dell Kace Patch Management Desktop Patch Management Best Practices Table of Contents: 1. Audience 2. Definition 3. Patch Approaches 4. Guidelines for Review, Test, and Deploy 5.
Paul Barham ([email protected]) Program Manager - Java. David Staheli ([email protected]) Software Development Manager - Java
Paul Barham ([email protected]) Program Manager - Java David Staheli ([email protected]) Software Development Manager - Java to empower every person and every organization on the planet to achieve
Secrets to Automation Success. A White Paper by Paul Merrill, Consultant and Trainer at Beaufort Fairmont, LLC
5 Secrets to Automation Success A White Paper by Paul Merrill, Consultant and Trainer at Beaufort Fairmont, LLC 5 Secrets to Automated Testing Success 2 Secret #1 Practice Exceptional Leadership If you
Improving Software Quality with the Continuous Integration Server Hudson. Dr. Ullrich Hafner Avaloq Evolution AG 8911
Improving Software Quality with the Continuous Integration Server Hudson Dr. Ullrich Hafner Avaloq Evolution AG 8911 AGENDA 2 > INTRODUCTION TO CI AND HUDSON > USING STATIC ANALYSIS IN PROJECTS > DEMO
DevOps for the Mainframe
DevOps for the Mainframe Rosalind Radcliffe IBM Distinguished Engineer, Enterprise Modernization Solution Architect [email protected] 1 Please note IBM s statements regarding its plans, directions, and
White Paper. Fundamentals of Performance Testing
etri White Paper Fundamentals of Performance Testing The Increasing Need for Proper Performance Testing due to Increasing Software Complexity in the Enterprise There have been two significant changes in
Kevin Lee Technical Consultant [email protected]. As part of a normal software build and release process
Agile SCM: Realising Continuous Kevin Lee Technical Consultant [email protected] Agenda What is Continuous? Continuous in Context As part of a normal software build and release process Realising Continuous
Benefits of Test Automation for Agile Testing
Benefits of Test Automation for Agile Testing Manu GV 1, Namratha M 2, Pradeep 3 1 Technical Lead-Testing Calsoft Labs, Bangalore, India 2 Assistant Professor, BMSCE, Bangalore, India 3 Software Engineer,
A Symptom Extraction and Classification Method for Self-Management
LANOMS 2005-4th Latin American Network Operations and Management Symposium 201 A Symptom Extraction and Classification Method for Self-Management Marcelo Perazolo Autonomic Computing Architecture IBM Corporation
tools that make every developer a quality expert
tools that make every developer a quality expert Google: www.google.com Copyright 2006-2010, Google,Inc.. All rights are reserved. Google is a registered trademark of Google, Inc. and CodePro AnalytiX
Use Scrum + Continuous Delivery to build the right thing
August 2012 W hitepapers Use Scrum + Continuous Delivery to build the right thing PETER GFADER Introduction How often do you release your product to your end users? How often do your end users see and
Agile Development Overview
Presented by Jennifer Bleen, PMP Project Services Practice of Cardinal Solutions Group, Inc. Contact: Agile Manifesto We are uncovering better ways of developing software by doing it and helping others
Performance Testing and Optimization in Web-Service Based Applications
Performance Testing and Optimization in Web-Service Based Applications Mesfin Mulugeta [email protected] Sr. Software Performance Engineer Goals of the Presentation Brief introduction to software
JOURNAL OF OBJECT TECHNOLOGY
JOURNAL OF OBJECT TECHNOLOGY Online at http://www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2007 Vol. 6, No. 1, January-February 2007 CM Configuration Change Management John D.
Agile So)ware Development
Software Engineering Agile So)ware Development 1 Rapid software development Rapid development and delivery is now often the most important requirement for software systems Businesses operate in a fast
The Role of Agile Methodology in Project Management
Edith Cowan University Research Online Australian Information Warfare and Security Conference Security Research Institute Conferences 2010 Success of Agile Environment in Complex Projects Abbass Ghanbary
An introduction to the benefits of Application Lifecycle Management
An introduction to the benefits of Application Lifecycle Management IKAN ALM increases team productivity, improves application quality, lowers the costs and speeds up the time-to-market of the entire application
Load and Performance Load Testing. RadView Software October 2015 www.radview.com
Load and Performance Load Testing RadView Software October 2015 www.radview.com Contents Introduction... 3 Key Components and Architecture... 4 Creating Load Tests... 5 Mobile Load Testing... 9 Test Execution...
Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)
Sonatype CLM Enforcement Points - Continuous Integration (CI) i Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI) ii Contents 1
Oracle Real Time Decisions
A Product Review James Taylor CEO CONTENTS Introducing Decision Management Systems Oracle Real Time Decisions Product Architecture Key Features Availability Conclusion Oracle Real Time Decisions (RTD)
A Process for ATLAS Software Development
Atlas Software Quality Control Group A Process for ATLAS Software Development Authors : Atlas Quality Control Group M. Asai, D. Barberis (chairman), M. Bosman, R. Jones, J.-F. Laporte, M. Stavrianakou
Nexus Professional Whitepaper. Repository Management: Stages of Adoption
Sonatype Nexus Professional Whitepaper Repository Management: Stages of Adoption Adopting Repository Management Best Practices SONATYPE www.sonatype.com [email protected] +1 301-684-8080 12501 Prosperity
SAS in clinical trials A relook at project management,
SAS in clinical trials A relook at project management, tools and software engineering Sameera Nandigama - Statistical Programmer PhUSE 2014 AD07 2014 inventiv Health. All rights reserved. Introduction
EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc.
WA2088 WebSphere Application Server 8.5 Administration on Windows Student Labs Web Age Solutions Inc. Copyright 2013 Web Age Solutions Inc. 1 Table of Contents Directory Paths Used in Labs...3 Lab Notes...4
Call for Tender for Application Development and Maintenance Services
ADM Partners Reference #: 100001200 Call for Tender for Application Development and Maintenance Services Annex 2 - Agile Application Development and Maintenance Appendix A - OECD s Agile Practices and
A Practical Approach to Software Continuous Delivery Focused on Application Lifecycle Management
A Practical Approach to Software Continuous Delivery Focused on Application Lifecycle Management Everton Gomede, Rafael Thiago da Silva and Rodolfo Miranda de Barros Department of Computer Science State
EnergySync and AquaSys. Technology and Architecture
EnergySync and AquaSys Technology and Architecture EnergySync and AquaSys modules Enterprise Inventory Enterprise Assets Enterprise Financials Enterprise Billing Service oriented architecture platform
Keywords document, agile documentation, documentation, Techno functional expert, Team Collaboration, document selection;
Volume 4, Issue 4, April 2014 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com A Document Driven
Implementing Oracle BI Applications during an ERP Upgrade
Implementing Oracle BI Applications during an ERP Upgrade Summary Jamal Syed BI Practice Lead Emerging solutions 20 N. Wacker Drive Suite 1870 Chicago, IL 60606 Emerging Solutions, a professional services
Table of contents. Performance testing in Agile environments. Deliver quality software in less time. Business white paper
Performance testing in Agile environments Deliver quality software in less time Business white paper Table of contents Executive summary... 2 Why Agile? And, why now?... 2 Incorporating performance testing
CSC 408F/CSC2105F Lecture Notes
CSC 408F/CSC2105F Lecture Notes These lecture notes are provided for the personal use of students taking CSC 408H/CSC 2105H in the Fall term 2004/2005 at the University of Toronto. Copying for purposes
Software Quality Testing Course Material
Prepared by Vipul Jain Software Quality Testing Course Material Course content is designed and will be taught in such a manner in order to make a person job ready in around 10-12 weeks. Classroom sessions
ASCETiC Whitepaper. Motivation. ASCETiC Toolbox Business Goals. Approach
ASCETiC Whitepaper Motivation The increased usage of ICT, together with growing energy costs and the need to reduce greenhouse gases emissions call for energy-efficient technologies that decrease the overall
Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6
The Researches on Unified Pattern of Information System Deng Zhonghua,Guo Liang,Xia Yanping School of Information Management, Wuhan University Wuhan, Hubei, China 430072 Abstract: This paper discusses
Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note
Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note Text book of CPET 545 Service-Oriented Architecture and Enterprise Application: SOA Principles of Service Design, by Thomas Erl, ISBN
SQLFlow: PL/SQL Multi-Diagrammatic Source Code Visualization
SQLFlow: PL/SQL Multi-Diagrammatic Source Code Visualization Samir Tartir Department of Computer Science University of Georgia Athens, Georgia 30602 USA Email: [email protected] ABSTRACT: A major problem
Using Productivity Measure and Function Points to Improve the Software Development Process
Using Productivity Measure and Function Points to Improve the Software Development Process Eduardo Alves de Oliveira and Ricardo Choren Noya Computer Engineering Section, Military Engineering Institute,
[2006] IEEE. Reprinted, with permission, from [M. Ye and K. Sandrasegaran, Teaching about Firewall Concepts using the inetwork Simulator, Information
[2006] IEEE. Reprinted, with permission, from [M. Ye and K. Sandrasegaran, Teaching about Firewall Concepts using the inetwork Simulator, Information Technology Based Higher Education and Training, 2006.
Leveraging Rational Team Concert's build capabilities for Continuous Integration
Leveraging Rational Team Concert's build capabilities for Continuous Integration Krishna Kishore Senior Engineer, RTC IBM [email protected] August 9-11, Bangalore August 11, Delhi Agenda What
Agile Project Management
Agile Project Management Projekt-Kick-Off-Tage Hochschule Augsburg Martin Wagner, 15. März 2011 TNG Technology Consulting GmbH, http://www.tngtech.com Agile project management with Scrum Agenda Software
Coverity Services. World-class professional services, technical support and training from the Coverity development testing experts
Coverity Services World-class professional services, technical support and training from the Coverity development testing experts Coverity has helped over 1,100 customers around the globe assure the quality,
HP Application Lifecycle Management
HP Application Lifecycle Management Overview HP Application Lifecycle Management is a software solution expressly designed to allow your team to take control of the application lifecycle while investing
