Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

James M. Bieman

dblp:b/JamesMBieman · DBLP profile ↗
← Back
87ranked-venue papers
44as first author
0since 2021 · last 2017
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 84 · 43 first-authorApplied, interdisciplinary, general and emerging computing · 4Artificial intelligence and machine learning · 2Systems, architecture and hardware · 2 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
7 papers
Software maintenance and evolution · 48% Empirical software engineering · 27% Requirements engineering and software design · 17%

Topics — the 15 heaviest of 18, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Software maintenance and evolution › refactoring
aspect-oriented refactoring
0.112012
Aspect-Oriented Refactoring of Legacy Applications: An Evaluation · IEEE Trans. Software Eng. 2012
Software maintenance and evolution › software modularization
crosscutting concern modularization
0.112012
Aspect-Oriented Refactoring of Legacy Applications: An Evaluation · IEEE Trans. Software Eng. 2012
Requirements engineering and software design
model-driven engineering
0.112012
Repository for Model Driven Development (ReMoDD) · ICSE 2012
Software maintenance and evolution
refactoring
0.112012
Aspect-Oriented Refactoring of Legacy Applications: An Evaluation · IEEE Trans. Software Eng. 2012
Empirical software engineering
developer studies
0.112005
The FreeBSD Project: A Replication Case Study of Open Source Development · IEEE Trans. Software Eng. 2005
Empirical software engineering
mining software repositories
0.112005
The FreeBSD Project: A Replication Case Study of Open Source Development · IEEE Trans. Software Eng. 2005
Empirical software engineering › open source software
open source software development
0.112005
The FreeBSD Project: A Replication Case Study of Open Source Development · IEEE Trans. Software Eng. 2005
Empirical software engineering › software engineering research methodology
industrial case study
0.012012
Aspect-Oriented Refactoring of Legacy Applications: An Evaluation · IEEE Trans. Software Eng. 2012
Empirical software engineering › software metrics
software quality metrics
0.021998
Measuring Design-Level Cohesion · IEEE Trans. Software Eng. 1998
Measuring Functional Cohesion · IEEE Trans. Software Eng. 1994
Software testing › mutation testing
mutation operator design
0.012001
A Technique for Mutation of Java Objects · ASE 2001
Software testing
mutation testing
0.012001
A Technique for Mutation of Java Objects · ASE 2001
Software maintenance and evolution › software integration
COTS integration
0.011999
Software Architecture Classification for Estimating the Cost of COTS Integration · ICSE 1999
Requirements engineering and software design
software architecture
0.011999
Software Architecture Classification for Estimating the Cost of COTS Integration · ICSE 1999
Empirical software engineering › software metrics
cohesion metrics
0.011998
Measuring Design-Level Cohesion · IEEE Trans. Software Eng. 1998
Empirical software engineering
software effort estimation
0.011999
Software Architecture Classification for Estimating the Cost of COTS Integration · ICSE 1999

Methods — techniques the papers use, named apart from their topics

aspect-oriented programming · 0.1repository mining · 0.1participant queries · 0.1case study · 0.1mutation analysis · 0.0architecture classification scheme · 0.0slice-based measurement · 0.0association-based measurement · 0.0glue token analysis · 0.0data slice abstraction · 0.0
YearPublicationVenuePosition
2017 Fault localization for automated program repair: effectiveness, performance, repair correctness
Fatmah Yousef Assiri, James M. Bieman
Softw. Qual. J.2
2016 Predicting metamorphic relations for testing scientific software: a machine learning approach using graph kernels
abstract
Summary Comprehensive, automated software testing requires an oracle to check whether the output produced by a test case matches the expected behaviour of the programme. But the challenges in creating suitable oracles limit the ability to perform automated testing in some programmes, and especially in scientific software. Metamorphic testing is a method for automating the testing process for programmes without test oracles. This technique operates by checking whether the programme behaves according to properties called metamorphic relations. A metamorphic relation describes the change in output when the input is changed in a prescribed way. Unfortunately, finding the metamorphic relations satisfied by a programme or function remains a labour‐intensive task, which is generally performed by a domain expert or a programmer. In this work, we propose a machine learning approach for predicting metamorphic relations that uses a graph‐based representation of a programme to represent control flow and data dependency information. In earlier work, we found that simple features derived from such graphs provide good performance. An analysis of the features used in this earlier work led us to explore the effectiveness of several representations of those graphs using the machine learning framework of graph kernels, which provide various ways of measuring similarity between graphs. Our results show that a graph kernel that evaluates the contribution of all paths in the graph has the best accuracy and that control flow information is more useful than data dependency information. The data used in this study are available for download at http://www.cs.colostate.edu/saxs/MRpred/functions.tar.gz to help researchers in further development of metamorphic relation prediction methods. Copyright © 2015 John Wiley & Sons, Ltd.
Upulee Kanewala, James M. Bieman, Asa Ben-Hur
Softw. Test. Verification Reliab.2
2014 An Assessment of the Quality of Automated Program Operator Repair
abstract
Automated program repair (APR) techniques fix faults by repeatedly modifying suspicious code until a program passes a set of test cases. Although generating a repair is the goal of APR, a repair can have negative consequences. The quality of a repair is reduced when the repair introduces new faults and/or degrades maintainability by adding irrelevant but functionally benign code. We used two APR approaches to repair faulty binary operators: (1) find a repair in existing code by applying a genetic algorithm to replace suspicious code with other existing code as done by GenProg, and (2) mutate suspicious operators within a genetic algorithm. Mutating operators was clearly more effective in repairing faulty operators than using existing code for a repair. We also evaluated the approaches in terms of two potential negative effects: (1) the introduction of new faults and (2) a reduction of program maintainability. We found that repair processes that use tests that satisfy branch coverage reduce the number of new faults. In contrast, repair processes using tests that satisfy statement coverage and randomly generated tests introduce numerous new faults. We also demonstrate that a mutation based repair process produces repairs that should be more maintainable compared to those produced using existing code.
Fatmah Yousef Assiri, James M. Bieman
ICST2
2014 Testing scientific software: A systematic literature review
Upulee Kanewala, James M. Bieman
Inf. Softw. Technol.2
2014 An optimization-based approach to lookup table program transformations
abstract
ABSTRACT Scientific programmers can improve the performance of function evaluation by precomputing and storing results in a lookup table (LUT), thereby replacing costly evaluation code with an inexpensive memory access. A code transformation that replaces computation with LUT code can improve performance; however, accuracy is reduced because of error inherent in reconstructing values from LUT data. LUTs are commonly used to approximate expensive elementary functions. The current practice is for software developers to: (i) manually identify expressions that can benefit from an LUT; (ii) modify the code by hand to implement the LUT transformation; and (iii) run experiments to determine if the resulting error is within application requirements. This approach reduces productivity, obfuscates code, and limits programmer control over accuracy and performance. We propose source code analysis and program transformation to substantially automate LUT transformations. Our approach uses a novel optimization algorithm that selects Pareto optimal sets of expressions that benefit most from an LUT, on the basis of the error and performance estimates. We demonstrate our methodology with the Mesa tool, which achieves speedups of 1.4–6.8× on scientific codes with an acceptable loss of accuracy. Our tool makes the programmer more productive and facilitates finding effective LUT transformations. Copyright © 2013 John Wiley & Sons, Ltd.
Chris Wilcox, Michelle Mills Strout, James M. Bieman
J. Softw. Evol. Process.3
2013 Using machine learning techniques to detect metamorphic relations for programs without test oracles
abstract
Much software lacks test oracles, which limits automated testing. Metamorphic testing is one proposed method for automating the testing process for programs without test oracles. Unfortunately, finding the appropriate metamorphic relations required for use in metamorphic testing remains a labor intensive task, which is generally performed by a domain expert or a programmer. In this work we present a novel approach for automatically predicting metamorphic relations using machine learning techniques. Our approach uses a set of features developed using the control flow graph of a function for predicting likely metamorphic relations. We show the effectiveness of our method using a set of real world functions often used in scientific applications.
Upulee Kanewala, James M. Bieman
ISSRE2
2013 A multiple case study of design pattern decay, grime, and rot in evolving software systems
Clemente Izurieta, James M. Bieman
Softw. Qual. J.2
2012 Repository for Model Driven Development (ReMoDD)
abstract
The Repository for Model-Driven Development (ReMoDD) contains artifacts that support Model-Driven Development (MDD) research and education. ReMoDD is collecting (1) documented MDD case studies, (2) examples of models reflecting good and bad modeling practices, (3) reference models (including metamodels) that can be used as the basis for comparing and evaluating MDD techniques, (4) generic models and transformations reflecting reusable modeling experience, (5) descriptions of modeling techniques, practices and experiences, and (6) modeling exercises and problems that can be used to develop classroom assignments and projects. ReMoDD provides a single point of access to shared artifacts reflecting high-quality MDD experience and knowledge from industry and academia. This access facilitates sharing of relevant knowledge and experience that improve MDD activities in research, education and industry.
Robert B. France, James M. Bieman, Sai Pradeep Mandalaparty, Betty H. C. Cheng, Adam C. Jensen
ICSE2
2012 Optimizing Expression Selection for Lookup Table Program Transformation
abstract
Scientific programmers can speed up function evaluation by precomputing and storing function results in lookup table (LUTs), thereby replacing costly evaluation code with an inexpensive memory access. A code transform that replaces computation with LUT code can improve performance, however, accuracy is reduced because of error inherent in reconstructing values from LUT data. LUT transforms are commonly used to approximate expensive elementary functions. The current practice is for software developers to (1) manually identify expressions that can benefit from a LUT transform, (2) modify the code by hand to implement the LUT transform, and (3) run experiments to determine if the resulting error is within application requirements. This approach reduces productivity, obfuscates code, and limits programmer control over accuracy and performance. We propose source code analysis and program transformation to substantially automate the application of LUT transforms. Our approach uses a novel optimization algorithm that selects Pareto optimal sets of expressions that benefit most from LUT transformation, based on error and performance estimates. We demonstrate our methodology with the Mesa tool, which achieves speedups of 1.4-6.9× on scientific codes while managing introduced error. Our tool makes the programmer more productive and improves the chances of finding an effective solution.
Chris Wilcox, Michelle Mills Strout, James M. Bieman
SCAM3
2012 Using Cell Phones for Mosquito Vector Surveillance and Control
Saul Lozano-Fuentes, Sudipto Ghosh 0001, James M. Bieman, D. Sadhu, Lars Eisen, Fadi Wedyan, E. Hernandez-Garcia, J. Garcia-Rejon, D. Tep-Chel
SEKE3
2012 Aspect-Oriented Refactoring of Legacy Applications: An Evaluation
abstract
The primary claimed benefits of aspect-oriented programming (AOP) are that it improves the understandability and maintainability of software applications by modularizing crosscutting concerns. Before there is widespread adoption of AOP, developers need further evidence of the actual benefits as well as costs. Applying AOP techniques to refactor legacy applications is one way to evaluate costs and benefits. We replace crosscutting concerns with aspects in three industrial applications to examine the effects on qualities that affect the maintainability of the applications. We study several revisions of each application, identifying crosscutting concerns in the initial revision and also crosscutting concerns that are added in later revisions. Aspect-oriented refactoring reduced code size and improved both change locality and concern diffusion. Costs include the effort required for application refactoring and aspect creation, as well as a decrease in performance.
Michael Mortensen, Sudipto Ghosh 0001, James M. Bieman
IEEE Trans. Software Eng.3
2009 The Effectiveness of Automated Static Analysis Tools for Fault Detection and Refactoring Prediction
abstract
Many automated static analysis (ASA) tools have been developed in recent years for detecting software anomalies. The aim of these tools is to help developers to eliminate software defects at early stages and produce more reliable software at a lower cost. Determining the effectiveness of ASA tools requires empirical evaluation. This study evaluates coding concerns reported by three ASA tools on two open source software (OSS) projects with respect to two types of modifications performed in the studied software CVS repositories: corrections of faults that caused failures, and refactoring modifications. The results show that fewer than 3% of the detected faults correspond to the coding concerns reported by the ASA tools. ASA tools were more effective in identifying refactoring modifications and corresponded to about 71% of them. More than 96% of the coding concerns were false positives that do not relate to any fault or refactoring modification.
Fadi Wedyan, Dalal Alrmuny, James M. Bieman
ICST3
2009 Performance analysis of security aspects by weaving scenarios extracted from UML models
C. Murray Woodside, Dorina C. Petriu, Dorin Bogdan Petriu, Jing Xu 0024, Tauseef A. Israr, Geri Georg, Robert B. France, James M. Bieman, Siv Hilde Houmb, Jan Jürjens
J. Syst. Softw.8
2009 In this issue
James M. Bieman
Softw. Qual. J.1
2009 Welcome to Rachel Harrison, the new Editor-in-Chief of the Software Quality Journal
James M. Bieman
Softw. Qual. J.1
2009 Generating input data structures for automated program testing
abstract
Abstract Automatic test data generation usually concerns identifying input values that cause a selected path to execute. If a given path involves pointers, then input values may be represented in terms of two‐dimensional dynamic data structures such as lists or trees. Thus, it is very important to identify the shape of the input data structure describing how many nodes are required and how nodes are connected each other. The approach presented in this paper makes use of the points‐to information for each statement in the selected path for the shape generation. It also converts each statement into a static single assignment (SSA) form without pointer dereferences. The SSA form serves as a system of constraints to be solved to yield input values for non‐pointer types. An empirical evaluation shows that shape generation can be achieved in linear time in terms of the number of pointer dereference operations. Copyright © 2008 John Wiley & Sons, Ltd.
Insang Chung, James M. Bieman
Softw. Test. Verification Reliab.2
2008 Testing Consequences of Grime Buildup in Object Oriented Design Patterns
abstract
Evidence suggests that as software ages the original realizations of design patterns remain in place, and participants in design pattern realizations accumulate "grime" - non-pattern-related code. This research examines the consequences that grime buildup has on the testability of general purpose design patterns. Test cases put in place during the design phase and initial implementation of a project can become ineffective as the system matures. The evolution of a design due to added functionality or defect fixing increases the coupling and dependencies between many classes that must be tested. We show that as systems age, the growth of grime and the appearance of anti-patterns increase testing requirements. Early recognition and removal of grime and anti-patterns can potentially improve system testability.
Clemente Izurieta, James M. Bieman
ICST2
2008 A test driven approach for aspectualizing legacy software using mock systems
Michael Mortensen, Sudipto Ghosh 0001, James M. Bieman
Inf. Softw. Technol.3
2008 In this issue
James M. Bieman
Softw. Qual. J.1
2008 In this issue
James M. Bieman
Softw. Qual. J.1
2008 In this issue
James M. Bieman
Softw. Qual. J.1
2008 In this issue
James M. Bieman
Softw. Qual. J.1
2008 Election software exposed
James M. Bieman
Softw. Qual. J.1
2007 How Software Designs Decay: A Pilot Study of Pattern Evolution
abstract
A common belief is that software designs decay as systems evolve. This research examines the extent to which software designs actually decay by studying the aging of design patterns in successful object oriented systems. Aging of design patterns is measured using various types of decay indices developed for this research. Decay indices track the internal structural changes of a design pattern realization and the code that surrounds the realization. Hypotheses for each kind of decay are tested. We found that the original design pattern functionality remains, and pattern decay is due to the "grime ", non-pattern code, that grows around the pattern realization.
Clemente Izurieta, James M. Bieman
ESEM2
2007 In this issue
James M. Bieman
Softw. Qual. J.1
2007 In this issue
James M. Bieman
Softw. Qual. J.1
2007 In this issue
James M. Bieman
Softw. Qual. J.1
2006 Testing During Refactoring: Adding Aspects to Legacy Systems
abstract
Moving program code that implements cross-cutting concerns into aspects can improve the maintainability of legacy systems. This kind of refactoring, called aspectualization, can also introduce faults into a system. A test driven approach can identify these faults during the refactoring process so that they can be removed. We perform systematic testing as we aspectualize commercial VLSI CAD applications. The process of refactoring these applications revealed the kinds of faults that can arise during aspectualization, and helped us to develop techniques to reduce their occurrences
Michael Mortensen, Sudipto Ghosh 0001, James M. Bieman
ISSRE3
2006 In this issue
James M. Bieman
Softw. Qual. J.1
2006 Editorial: What makes a software failure a page-one story?
James M. Bieman
Softw. Qual. J.1
2006 In this issue
James M. Bieman
Softw. Qual. J.1
2006 In this issue
James M. Bieman
Softw. Qual. J.1
2006 Editorial: Free/open source software, silver bullets, and mythical months
James M. Bieman
Softw. Qual. J.1
2005 Cost-Benefit Trade-Off Analysis Using BBN for Aspect-Oriented Risk-Driven Development
abstract
Security critical systems must perform at the required security level, make effective use of available resources, and meet end-users expectations. Balancing these needs, and at the same time fulfilling budget and time-to-market constraints, requires developers to design and evaluate alternative security treatment strategies. In this paper, the authors presented a development framework that utilizes Bayesian belief networks (BBN) and aspect-oriented modeling (AOM) for a cost-benefit trade-off analysis of treatment strategies. AOM allows developers to model pervasive security treatments separately from other system functionality. This eases the trade-off by making it possible to swap treatment strategies in and out when computing return on security investments (RoSI). The trade-off analysis is implemented using BBN, and RoSI is computed by estimating a set of variables describing properties of a treatment strategy. RoSI for each treatment strategy is then used as input to choice of design.
Siv Hilde Houmb, Geri Georg, Robert B. France, James M. Bieman, Jan Jürjens
ICECCS4
2005 In This Issue
James M. Bieman
Softw. Qual. J.1
2005 In This Issue
James M. Bieman
Softw. Qual. J.1
2005 Editorial: Can Users Read Developers Minds?
James M. Bieman
Softw. Qual. J.1
2005 In This Issue
James M. Bieman
Softw. Qual. J.1
2005 Editorial: Is Anyone Listening?
James M. Bieman
Softw. Qual. J.1
2005 The FreeBSD Project: A Replication Case Study of Open Source Development
abstract
Case studies can help to validate claims that open source software development produces higher quality software at lower cost than traditional commercial development. One problem inherent in case studies are external validity - we do not know whether or not results from one case study apply to another development project. We gain or lose confidence in case study results when similar case studies are conducted on other projects. This case study of the FreeBSD project, a long-lived open source project, provides further understanding of open source development. The paper details a method for mining repositories and querying project participants to retrieve key process information. The FreeBSD development process is fairly well-defined with proscribed methods for determining developer responsibilities, dealing with enhancements and defects, and managing releases. Compared to the Apache project, FreeBSD uses 1) a smaller set of core developers - developers who control the code base - that implement a smaller percentage of the system, 2) a larger set of top developers to implement 80 percent of the system, and 3) a more well-defined testing process. FreeBSD and Apache have a similar ratio of core developers to people involved in adapting and debugging the system and people who report problems. Both systems have similar defect densities and the developers are also users in both systems.
Trung T. Dinh-Trong, James M. Bieman
IEEE Trans. Software Eng.2
2004 Editorial: Aspect-Oriented Technology and Software Quality
Roger T. Alexander, James M. Bieman
Softw. Qual. J.2
2004 In This Issue
James M. Bieman
Softw. Qual. J.1
2004 Editorial: The Role of Prognostication in Software Design
James M. Bieman
Softw. Qual. J.1
2004 In This Issue
James M. Bieman
Softw. Qual. J.1
2004 In This Issue
James M. Bieman
Softw. Qual. J.1
2004 In This Issue
James M. Bieman
Softw. Qual. J.1
2003 In This Issue
James M. Bieman
Softw. Qual. J.1
2003 Editorial: The Illusive Nature of Quality
James M. Bieman
Softw. Qual. J.1
2003 In This Issue
James M. Bieman
Softw. Qual. J.1
2002 Syntactic Fault Patterns in OO Programs
abstract
Although program faults are widely studied, there are many aspects of faults that we still do not understand, particularly about OO software. In addition to the simple fact that one important goal during testing is to cause failures and thereby detect faults, a full understanding of the characteristics of faults is crucial to several research areas. The power that inheritance and polymorphism brings to the expressiveness of programming languages also brings a number of new anomalies and fault types. In prior work we presented a fault model for the appearance and realization of OO faults that are specific to the use of inheritance and polymorphism. Many of these faults cannot appear unless certain syntactic patterns are used. The patterns are based on language constructs, such as overriding methods that directly define inherited state variables and non-inherited methods that call inherited methods. If one of these syntactic patterns is used, then we say the software contains an anomaly and possibly a fault. We describe the syntactic patterns for each OO fault type. These syntactic patterns can potentially be found with an automatic tool. Thus, faults can be uncovered and removed early in development.
Roger T. Alexander, A. Jefferson Offutt, James M. Bieman
ICECCS3
2002 Mutation of Java Objects
abstract
Fault insertion based techniques have been used for measuring test adequacy and testability of programs. Mutation analysis inserts faults into a program with the goal of creating mutation-adequate test sets that distinguish the mutant from the original program. Software testability is measured by calculating the probability that a program will fail on the next test input coming from a predefined input distribution, given that the software includes a fault. Inserted faults must represent plausible errors. It is relatively easy to apply standard transformations to mutate scalar values such as integers, floats, and character data, because their semantics are well understood. Mutating objects that are instances of user defined types is more difficult. There is no obvious way to modify such objects in a manner consistent with realistic faults, without writing custom mutation methods for each object class. We propose a new object mutation approach along with a set of mutation operators and support tools for inserting faults into objects that instantiate items from common Java libraries heavily used in commercial software as well as user defined classes. Preliminary evaluation of our technique shows that it should be effective for evaluating real-world software testing suites.
Roger T. Alexander, James M. Bieman, Sudipto Ghosh 0001, Bixia Ji
ISSRE2
2002 Fault Detection Capabilities of Coupling-based OO Testing
abstract
Object-oriented programs cause a shift in focus from software units to the way software classes and components are connected. Thus, we are finding that we need less emphasis on unit testing and more on integration testing. The compositional relationships of inheritance and aggregation, especially when combined with polymorphism, introduce new kinds of integration faults, which can be covered using testing criteria that take the effects of inheritance and polymorphism into account. This paper demonstrates, via a set of experiments, the relative effectiveness of several coupling-based OO testing criteria and branch coverage. OO criteria are all more effective at detecting faults due to the use of inheritance and polymorphism than branch coverage.
Roger T. Alexander, A. Jefferson Offutt, James M. Bieman
ISSRE3
2002 In This Issue
James M. Bieman
Softw. Qual. J.1
2002 Editorial: Risks to Software Quality
James M. Bieman
Softw. Qual. J.1
2002 In This Issue
James M. Bieman
Softw. Qual. J.1
2002 Editorial: Why Good Software Goes Bad
James M. Bieman
Softw. Qual. J.1
2002 In This Issue
James M. Bieman
Softw. Qual. J.1
2002 Software reliability growth with test coverage
abstract
"Software test-coverage measures" quantify the degree of thoroughness of testing. Tools are now available that measure test-coverage in terms of blocks, branches, computation-uses, predicate-uses, etc. that are covered. This paper models the relations among testing time, coverage, and reliability. An LE (logarithmic-exponential) model is presented that relates testing effort to test coverage (block, branch, computation-use, or predicate-use). The model is based on the hypothesis that the enumerable elements (like branches or blocks) for any coverage measure have various probabilities of being exercised; just like defects have various probabilities of being encountered. This model allows relating a test-coverage measure directly with defect-coverage. The model is fitted to 4 data-sets for programs with real defects. In the model, defect coverage can predict the time to next failure. The LE model can eliminate variables like test-application strategy from consideration. It is suitable for high reliability applications where automatic (or manual) test generation is used to cover enumerables which have not yet been tested. The data-sets used suggest the potential of the proposed model. The model is simple and easily explained, and thus can be suitable for industrial use. The LE model is based on the time-based logarithmic software-reliability growth model. It considers that: at 100% coverage for a given enumerable, all defects might not yet have been found.
Yashwant K. Malaiya, Michael Naixin Li, James M. Bieman, Richard M. Karcich
IEEE Trans. Reliab.3
2001 Coupling of Design Patterns: Common Practices and Their Benefits
abstract
Object-oriented (OO) design patterns define collections of interconnected classes that serve a particular purpose. A design pattern is a structural unit in a system built out of patterns, not unlike the way a function is a structural unit in a procedural program or a class is a structural unit in an OO system designed without patterns. When designers treat patterns as structural units, they become concerned with issues such as coupling and cohesion at a new level of abstraction. We examine the notion of pattern coupling to classify how designs may include coupled patterns. We find many examples of coupled patterns; this coupling may be "tight" or "loose", and provides both benefits and costs. We qualitatively assess the goodness of pattern coupling in terms of effects on maintainability, factorability, and reusability when patterns are coupled in various ways.
William B. McNatt, James M. Bieman
COMPSAC2
2001 OO Design Patterns, Design Structure, and Program Changes: An Industrial Case Study
abstract
A primary expected benefit of object-oriented (OO) methods is the creation of software systems that are easier to adapt and maintain. OO design patterns are especially geared to improve adaptability, since patterns generally increase the complexity of an initial design in order to ease future enhancements. For design patterns to really provide benefit, they must reduce the cost of future adaptation. The evidence of improvements in adaptability through the use of design patterns and other design structures consists primarily of intuitive arguments and examples. There is little empirical evidence to support claims of improved flexibility of these preferred structures. In this case study, we analyze 39 versions of an evolving industrial OO software system to see if there is a relationship between patterns, other design attributes, and the number of changes. We found a strong relationship between class size and the number of changes-larger classes were changed more frequently. We also found two relationships that we did not expect: (1) classes that participate in design patterns are not less change prone-these pattern classes are among the most change prone in the system, and (2) classes that are reused the most through inheritance tend to be more change prone. These unexpected results hold up after accounting for class size, which had the strongest relationship with changes.
James M. Bieman, Dolly Jain, Helen J. Yang
ICSM1
2001 Multi-View Software Evolution: A UML-based Framework for Evolving Object-Oriented Software
abstract
It is well-known that uncontrolled change to software can lead to increasing evolution costs caused by deteriorating structure and compromised system qualities. For complex systems, the need to carefully manage system evolution is critical. In this paper we outline an approach to managing evolution of object-oriented (OO) software. The approach is based on a goal-directed, cyclic process, in which OO models are transformed and quantitatively evaluated in each cycle. Evaluation criteria guide developers in choosing between alternative transformations in each cycle. The process, transformations, and evaluation techniques can be used to develop systems from a set of baseline models.
Robert B. France, James M. Bieman
ICSM2
2001 Extending the UML to Support Evolution Management
abstract
Summary form only given. The authors are currently developing a model-driven, repository-based approach to system evolution management. The primary domain of interest is the telecommunication IT system area, but the techniques are applicable to organizations with integrated systems of systems. The approach is model-driven in the sense that data and object-oriented (OO) models (expressed in the Unified Modeling Language (UML)) are used to represent system implementations at various levels of abstractions (business requirements, system requirements, logical and physical design).
Robert B. France, James M. Bieman, Ray Trask
ICSM2
2001 A Technique for Mutation of Java Objects
abstract
Mutation analysis inserts faults into a program to create test sets that distinguish the mutant from the original program. Inserted faults must represent plausible errors. Standard transformations can mutate scalar values such as integers, floats, and character data. Mutating objects is an open problem, because object semantics are defined by the programmer and can vary widely. We develop mutation operators and support tools that can mutate Java library items that are heavily used in commercial software. Our mutation engine can support reusable libraries of mutation components to inject faults into objects that instantiate items from these common Java libraries. Our technique should be effective for evaluating real-world software testing suites.
James M. Bieman, Sudipto Ghosh 0001, Roger T. Alexander
ASE1
1999 Software Architecture Classification for Estimating the Cost of COTS Integration
abstract
The use of commercial-off-the-shelf (COTS) products creates a software integration problem, whether a single COTS software component is being integrated into a software system, or the whole system is being built primarily from COTS products. This integration may require considerable effort and affect system quality. A good estimate of integration cost can help in the decision of whether or not to use a COTS solution, the selection of the best COTS products, and determine the amount and type of glueware that needs to be built. In this paper, we introduce a set of variables that have the potential to estimate the integration cost. We present a classification scheme of software architectures with respect to the integration of COTS products. The scheme is based on inter-component interactions within software architectures. The classification scheme allows the comparison of integration costs of different COTS products relative to different software architectures.
Daniil Yakimovich, James M. Bieman, Victor R. Basili
ICSE2
1999 A quantitative framework for software restructuring
abstract
Many existing software systems can benefit from restructuring to reduce maintenance cost and improve reusability. Yet, intuition-based, ad hoc restructuring can be difficult and expensive, and can even make software structure worse. We introduce a quantitative framework for software restructuring. In the framework, restructuring decisions are guided by visualized design information and objective criteria. The design information can be extracted directly from code to restructure existing or legacy software. Criteria for comparing alternative design structures include measures of design-level cohesion and coupling. Restructuring is accomplished through a series of decomposition and composition operations which increase the cohesion and/or decrease the coupling of individual system components. An example and a case study demonstrate the framework. The framework ensures that restructuring results in measurable improvements in design quality. Copyright © 1999 John Wiley & Sons, Ltd.
Byung-Kyoo Kang, James M. Bieman
J. Softw. Maintenance Res. Pract.2
1998 Program slices as an abstraction for cohesion measurement
Linda M. Ott, James M. Bieman
Inf. Softw. Technol.2
1998 Using design abstractions to visualize, quantify, and restructure software
Byung-Kyoo Kang, James M. Bieman
J. Syst. Softw.2
1998 Measuring Design-Level Cohesion
abstract
Cohesion was first introduced as a software attribute that, when measured, could be used to predict properties of implementations that would be created from a given design. Unfortunately, cohesion, as originally defined, could not be objectively assessed, while more recently developed objective cohesion measures depend on code-level information. We show that association-based and slice-based approaches can be used to measure cohesion using only design-level information. An analytical and empirical analysis shows that the design-level measures correspond closely with code-level cohesion measures. They can be used as predictors of or surrogates for the code-level measures. The design-level cohesion measures are formally defined, have been implemented, and can support software design, maintenance and restructuring.
James M. Bieman, Byung-Kyoo Kang
IEEE Trans. Software Eng.1
1996 Design-Level Cohesion Measures: Derivation, Comparison, and Applications
abstract
Cohesion was first developed to predict properties of implementations created from a given design. Unfortunately, cohesion, as originally defined, could not be objectively assessed, while more recently developed objective cohesion measures depend on code level information. We show that association based and slice based approaches can be used to measure cohesion using only design level information. Our design level cohesion measures are formally defined, can be readily implemented, and can support software design, maintenance, and restructuring.
Byung-Kyoo Kang, James M. Bieman
COMPSAC2
1996 Using fault injection to increase software test coverage
abstract
During testing, it is nearly impossible to run all statements or branches of a program. It is especially difficult to test the code used to respond to exceptional conditions. This untested code, often the error recovery code, will tend to be an error prone part of a system. We show that test coverage can be increased through an "assertion violation" technique for injecting software faults during execution. Using our prototype tool, Visual C-Patrol (VCP), we were able to substantially increase test branch coverage in four software systems studied.
James M. Bieman, Daniel Dreilinger, Lijun Lin
ISSRE1
1996 Using Design Cohesion to Visualize, Quantify, and Restructure Software
Byung-Kyoo Kang, James M. Bieman
SEKE2
1996 Guest editors' corner software engineering for distributed computing
James M. Bieman, Pradip K. Srimani
J. Syst. Softw.1
1995 Measurement of language-supported reuse in object-oriented and object-based software
James M. Bieman, Santhi Karunanithi
J. Syst. Softw.1
1995 Competencies of exceptional and nonexceptional software engineers
Richard T. Turley, James M. Bieman
J. Syst. Softw.2
1995 Algebraic Specifications and Sequencing: A Defect Detection Method
abstract
Abstract One class of program defects results from illegal sequences of otherwise legal operations in software implementations. Explicit statement of sequencing constraints, however, is not a common activity when specifying software even when using formal specification methods. This paper shows that constraints on program execution sequences can be derived directly from algebraic specifications. Results include heuristic methods for generating sequencing constraints and a generalization of these methods into automatable rules. The heuristics can be integrated into a specification methodology such as Larch. Engineers can use the generated sequencing constraints to detect sequencing defects in software even before dynamic testing begins. The method can be used to increase the reliability of software that is specified using algebraic methods.
Kurt M. Olender, James M. Bieman
Softw. Test. Verification Reliab.2
1994 The relationship between test coverage and reliability
abstract
Models the relationship between testing effort, coverage and reliability, and presents a logarithmic model that relates testing effort to test coverage: statement (or block) coverage, branch (or decision) coverage, computation use (c-use) coverage, or predicate use (p-use) coverage. The model is based on the hypothesis that the enumerables (like branches or blocks) for any coverage measure have different detectability, just like the individual defects. This model allows us to relate a test coverage measure directly to the defect coverage. Data sets for programs with real defects are used to validate the model. The results are consistent with the known inclusion relationships among block, branch and p-use coverage measures. We show how the defect density controls the time-to-next-failure. The model can eliminate variables like the test application strategy from consideration. It is suitable for high-reliability applications where automatic (or manual) test generation is used to cover enemerables which have not yet been tested.>
Yashwant K. Malaiya, Michael Naixin Li, James M. Bieman, Richard M. Karcich, Bob Skibbe
ISSRE3
1994 Improving Software Testability with Assertion Insertion
abstract
Executable assertions can be inserted into a program to find software faults. Unfortunately, the process of designing and embedding these assertions can be expensive and time consuming. We have developed the C-Patrol tool to reduce the overhead of using assertions in C programs. C-Patrol allows a developer to reference a set of previously defined assertions, written in virtual C, bind assertion parameters, and direct the placement of the assertions by a pre-processor.
Hwei Yin, James M. Bieman
ITC2
1994 Measuring Functional Cohesion
abstract
We examine the functional cohesion of procedures using a data slice abstraction. Our analysis identifies the data tokens that lie on more than one slice as the "glue" that binds separate components together. Cohesion is measured in terms of the relative number of glue tokens, tokens that lie on more than one data slice, and super-glue tokens, tokens that lie on all data slices in a procedure, and the adhesiveness of the tokens. The intuition and measurement scale factors are demonstrated through a set of abstract transformations.>
James M. Bieman, Linda M. Ott
IEEE Trans. Software Eng.1
1993 Using algebraic specifications to find sequencing defects
abstract
One class of program defect results from illegal sequences of otherwise legal operations in software implementations. Expressions that specify the correct sequences can be written in the Cecil sequencing constraint language. Programs can then be checked at compile time by the Cesar analysis system. Explicit statement of sequencing constraints, however, is not a common activity when specifying software even when using formal specification methods. In this paper, we describe methods to derive constraints on program execution sequences from algebraic specifications. We provide heuristic methods for generating these constraints from the specifications and generalize the methods into automatable rules. Using these generated constraints, we can then detect sequencing defects in software before dynamic testing begins.
Kurt M. Olender, James M. Bieman
ISSRE2
1993 Editor's corner : Applying specification, verification, and validation techniques
James M. Bieman, Pradip K. Srimani
J. Syst. Softw.1
1992 Effects of software changes on module cohesion
abstract
Program slices are used to model module cohesion. For the authors purposes, a slice is a projection of program text that includes only the data tokens relevant to one output. The authors define six cohesion metrics in terms of these slices, and evaluate the effects of classes of module changes on these metrics. They find that the effects on cohesion metrics are notably more predictable when the changes result from adding code rather than from moving code.>
Linda M. Ott, James M. Bieman
ICSM2
1992 Designing for Software Testability Using Automated Oracles
abstract
Software testing often requires massive numbers of test cases that must be manually inspected for correctness. This paper demonstrates the use of software “test oracles” to automate the process of checking the correctness of program output. The Prosper system, implemented by the authors, can be used to define test oracles and monitor the runtime behavior of software. An effective method to design software for testability must include the concurrent development of test oracles.
James M. Bieman, Hwei Yin
ITC1
1992 Rapid Evolutionary Development: Requirements; Prototyping and Software Creation, by Lowell Jay Arthur, Wiley, 1992 (Book Review)
James M. Bieman
Softw. Test. Verification Reliab.1
1990 A philosophy for software measurement
Albert L. Baker, James M. Bieman, Norman E. Fenton, David A. Gustafson, Austin Melton, Robin W. Whitty
J. Syst. Softw.2
1989 Prosper: A Language for Specification by Prototyping
Jacek Leszczylowski, James M. Bieman
Comput. Lang.2
1988 The software process model
abstract
The authors define a software process model (SPM). The SPM is a model of evolution of the full set of documents produced in a software project. It is a general model for software development using any development approach, providing a framework for measuring, analyzing, and understanding the software development process. The authors use the model to characterize formally research in software measures and metrics. Data obtained from two software projects are presented in the SPM format.>
David A. Gustafson, Austin Melton, Ying-Chi Chen, Albert L. Baker, James M. Bieman
COMPSAC5
1988 A standard representation of imperative language programs for data collection and software measures specification
James M. Bieman, Albert L. Baker, Paul N. Clites, David A. Gustafson, Austin Melton
J. Syst. Softw.1