2007 · 15 citations · 13 references
ComputingComputer ScienceDesign AutomationFormal MethodsSoftware EngineeringModel-driven Software EngineeringObject-oriented DesignSoftware ArchitectureSoftware DesignSoftware ModelingSoftware TestingCoverage CriteriaDesign PrinciplesModel-based TestingModularityObject-oriented Design ModelsOption Value AnalysisOption Value TheoryTesting
Modularity is one of the most important properties of a software design, with significant impact on changeability and evolvability. However, a formalized and automated approach is lacking to test and verify software design models against their modularity properties, in particular, their ability to accommodate potential changes. In this paper, we propose a novel framework for testing design modularity. The software artifact under test is a software design. A test input is a potential change to the design. The test output is a modularity vector, which precisely captures quantitative capability extents of the design for accommodating the test input (the potential change). Both the design and the test input are represented as formal computable models to enable automatic testing. The modularity vector integrates the net option value analysis with well-known design principles. We have implemented the framework with tool supports and tested aspect-oriented and object-oriented design patterns in terms of their ability to accommodate sequences of possible changes. The results showed that previous informal, implementation-based analysis can be conducted by our framework automatically and quantitatively at the design level. This framework also opens the opportunities of applying testing techniques, such as coverage criteria, on software designs
13
Consistency in networks of relations
Alan K. Mackworth · Artificial Intelligence · 1977 · 2.4K citations
Software abstractions: logic, language and analysis
Choice Reviews Online · 2007 · 1.5K citations
W. P. Stevens, G. J. Myers, Larry L. Constantine · IBM Systems Journal · 1974 · 1.2K citations
Design pattern implementation in Java and aspectJ
Jan Hannemann, Gregor Kiczales · 2002 · 575 citations
Computing, Computer Science, Design +16