Skip to main contentdfsdf

Mike Fuller's List: Design & Quality: Tools

    • OptimalAdvisor is a static code analysis and refactoring tool.  OptimalAdvisor can be used to:   * understand code  * indicate problems and solutions  * assess and monitor code quality  * measure code properties  * automate technical documentation  * refactor code based on the analysis  A free edition of OptimalAdvisor can be downloaded (login required). This edition does not support code refactoring or coding rule validation, but is otherwise fully functional.
    • Software developers need to understand how a software system works to introduce new behaviour, correct faults, tune the performance of the system, amongst other tasks. As a system grows in size and as it incorporates more and more libraries, frameworks and components that the developers did not themselves write, it becomes harder and harder to understand how the system does work.  The AVID tool supports the investigation of large portions of a system's execution from a software architectural view of the system. A developer is able to gain an understanding of how components in the architecture interact over an execution.
    • Learning how to develop quality software designs requires both the acquisition of theory and the practice of skills under the guidance of an expert. Unfortunately, it is often the case that there are simply too few software design experts available to effectively mentor a class of software engineering students. In most cases, a single instructor can only provide time-delayed feedback on a limited number of students' designs.  We are developing a tool, called ClassCompass, which is intended to help teach software design more effectively. The tool combines automated mentoring with guided peer and expert review of software designs. The tool is intended to be used interactively in-class or asynchronously out-of-class.
    • Classycle analyses the static class and package dependencies in Java applications or libraries. It is especially helpful for finding cyclic dependencies between classes or packages. Classycle is similar to JDepend which does also a dependency analysis but only on the package level.
    • Many maintenance tasks address concerns, or features, that are not well modularized in the source code comprising a system. The Concern Graph representation helps software developers identify and reason about these concerns. The representation abstracts the implementation details of a concern and makes explicit the relationships between different parts of the concern. The abstraction used in a Concern Graph has been designed to allow an obvious and inexpensive mapping back to the corresponding source code.
    • Copied and pasted code is usually bad. But it can be hard to find, especially in a large project. So we wrote a utility - CPD - to find it for us.
    • Exception handling structures in programs are typically complex and unmaintainable, often providing neither appropriate recovery nor appropriate information to a user when an exceptional condition arises. Our work in this area includes the development of the Jex tool to help developers analyze the flow of exceptions in Java programs, and a design approach to enable the development and reengineering of better exception structures. The Jex tool that analyzes exception flow in Java programs is available for download.
    • Many design concepts can be expressed only indirectly in source code. A single concept often results in a verbose amount of code scattered across the system structure. Explicit programming enables a developer to introduce newvocabulary into the source to capture a design concept explicitly. A vocabulary item introduced by a developer encapsulates the implementation details associated with a design concept, reducing the scattering of code needed to express the concept. A vocabulary item appears in the code where the conceptis needed; uses of the vocabulary may thus remain scattered through the code.
    • The Extended Static Checker for Java (ESC/Java), developed at the Compaq Systems Research Center (SRC), is a programming tool for finding errors in Java programs. ESC/Java detects, at compile time, common programming errors that ordinarily are not detected until run time, and sometimes not even then; for example, null dereference errors, array bounds errors, type cast errors, and race conditions.
    • JDepend traverses Java class file directories and generates design quality metrics for each Java package
    • Macker is a build-time architectural rule checking utility for Java developers. It's meant to model the architectural ideals programmers always dream up for their projects, and then break -- it helps keep code clean and consistent. You can tailor a rules file to suit a specific project's structure, or write some general "good practice" rules for your code. Macker doesn't try to shove anybody else's rules down your throat; it's flexible, and writing a rules file is part of the development process for each unique project.
    • PMD scans Java source code and looks for potential problems like:   * Empty try/catch/finally/switch blocks  * Unused local variables, parameters and private methods  * Empty if/while statements  * Overcomplicated expressions - unnecessary if statements, for loops that could be while loops  * Classes with high Cyclomatic Complexity measurements
    • Simian (Similarity Analyser) identifies duplication in Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic source code and even plain text files. In fact, simian can be used on any human readable files such as ini files, deployment descriptors, you name it.
    • SA4J is a technology that analyzes structural dependencies of Java applications in order to measure their stability. It detects structural "anti-patterns" (suspicious design elements) and provides dependency web browsing for detailed exploration of anti-patterns in the dependency web. SA4J also enables "what if" analysis in order to assess the impact of change on the functionality of the application; and it offers guidelines for package re-factoring.
    • The XRadar is an open extensible code analysis framework and report tool currently supporting all Java based systems. The XML/XSL batch-processing framework produces HTML/SVG reports of the systems current state and the development over time. It gets results from several brilliant open source projects and a couple of in house grown projects and presents the results as massive unified html/svg reports.
1 - 20 of 22 Next ›
20 items/page
List Comments (0)