The discrete time TOOLBUS—a software coordination architecture
Science of Computer Programming
An open graph visualization system and its applications to software engineering
Software—Practice & Experience - Special issue on discrete algorithm engineering
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Component Software: Beyond Object-Oriented Programming
Component Software: Beyond Object-Oriented Programming
Software Reflexion Models: Bridging the Gap between Design and Implementation
IEEE Transactions on Software Engineering
Software release management for component-based software
Software—Practice & Experience
ICSR-7 Proceedings of the 7th International Conference on Software Reuse: Methods, Techniques, and Tools
Automatic Clustering of Software Systems Using a Genetic Algorithm
STEP '99 Proceedings of the Software Technology and Engineering Practice
Using Clustering Algorithms in Legacy Systems Remodularization
WCRE '97 Proceedings of the Fourth Working Conference on Reverse Engineering (WCRE '97)
The Build-Time Software Architecture View
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Bunch: A Clustering Tool for the Recovery and Maintenance of Software System Structures
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
A Framework for Experimental Evaluation of Clustering Techniques
IWPC '00 Proceedings of the 8th International Workshop on Program Comprehension
Software Components Capture Using Graph Clustering
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
Using Automatic Clustering to Produce High-Level System Organizations of Source Code
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
Package-Based Software Development
EUROMICRO '03 Proceedings of the 29th Conference on EUROMICRO
Structural Evolution of an Open Source System: A Case Study
IWPC '04 Proceedings of the 12th IEEE International Workshop on Program Comprehension
The Evolution of Source Folder Structure in actively evolved Open Source Systems
METRICS '04 Proceedings of the Software Metrics, 10th International Symposium
Journal of Systems and Software
Automated software license analysis
Automated Software Engineering
Developing Product Lines with Third-Party Components
Electronic Notes in Theoretical Computer Science (ENTCS)
An infrastructure for composing build systems of software product lines
Proceedings of the 15th International Software Product Line Conference, Volume 2
Toward evolving self-organizing software systems: a complex system point of view
IEA/AIE'11 Proceedings of the 24th international conference on Industrial engineering and other applications of applied intelligent systems conference on Modern approaches in applied intelligence - Volume Part II
The evolution of Java build systems
Empirical Software Engineering
Shake before building: replacing make with haskell
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Reuse between software systems is often not optimal. An important reason is that while at the functional level well-known modularization principles are applied for structuring functionality in modules, this is not the case at the build level for structuring files in directories. This leads to a situation where files are entangled in directory hierarchies and build processes, making it hard to extract functionality and to make functionality suitable for reuse. Consequently, software may not come available for reuse at all, or only in rather large chunks of functionality, which may lead to extra software dependencies. In this paper, we propose to improve this situation by applying component-based software engineering (CBSE) principles to the build level. We discuss how existing software systems break CBSE principles, we introduce the notion of build-level components, and we define rules for developing such components. To make our techniques feasible, we define a reengineering process for semiautomatically transforming existing software systems into build-level components. Our techniques are demonstrated in two case studies where we decouple the source tree of Graphviz into 46 build-level components and analyze the source tree of Mozilla.