Find White Papers
Home
About Us
List Your Papers
    
> Electric Cloud > Solving the Dependency Problem in Software Builds

Solving the Dependency Problem in Software Builds

White Paper Published By: Electric Cloud

In this whitepaper, John Graham-Cumming, Founder and Chief Scientist at Electric Cloud, Inc. will provide time-saving tips for automating and optimizing dependencies between files in a software build. Three main types of dependencies will be discussed: those that exist between source and object files (that are used to regenerate objects when source changes), those that exist between objects (for example, used to drive a linker), and dependencies at the module or project level.



Tags : 
electric cloud, software build, gnu make, dependency management, automatic source, c++, automation, pattern rule

Electric Cloud
Published:  Nov 04, 2009
Type:  White Paper
Length:  13 pages


Solving the Dependency Problem in
Software Builds Time-Saving Tips for Handling Dependencies in Make
John Graham-Cumming Chief Scientist Electric Cloud, Inc. September, 2005

Executive Summary
Make is a tool that controls the generation of executables and other non-source files of a program from the program's source files. Dependencies between files in a build are a critical part of Make; without them Make doesn't know what to build or when to rebuild items. Accurate dependencies are the cornerstone of a successful build, and yet are all too often missing or broken, which results in wasted time or, worse, in corrupt or incorrect object code.
In this whitepaper, John Graham-Cumming, Founder and Chief Scientist at Electric Cloud, Inc. will provide time-saving tips for automating and optimizing dependencies between files in a software build. Three main types of dependencies will be discussed: those that exist between source and object files (that are used to regenerate objects when source changes), those that exist between objects (for example, used to drive a linker), and dependencies at the module or project level.
For source/object dependencies in particular, instead of generating dependencies manually, there are simple techniques for generating dependencies automatically, saving time and reducing errors and rework. This paper provides specific guidance, complete with examples, for automating dependency generation, and describes some of the challenges left unsolved by traditional freeware/open source dependency management techniques.
The paper is technical and aimed at someone with familiarity with a flavor of Make. Experienced users of GNU Make should find the worked examples of interest.

Solving the Dependency Problem in Software Builds © 2006 Electric Cloud Inc. All rights reserved. v.2006.02

Introduction
It's ironic that Make, which was designed to solve the "I've changed something; now what do I rebuild?" problem, introduces a nightmare of updating the dependencies between files in a build. In fact, Make has transformed the original problem such that it requires giving Make exact information about the dependencies - something the build manager didn't have in the first place!
This whitepaper looks at solutions to the dependency problem in Make (focusing on GNU Make because of its wide platform coverage and popularity) and identifies outstanding problems in dependency management.
The paper is technical and aimed at someone with familiarity with a flavor of Make. Experienced users of GNU Make should find the examples of interest.
Why do Dependencies Matter?
Dependencies are Make's bread and butter; without them Make doesn't know what to build or when to rebuild items. In its simplest form, a dependency is a relationship between an object file and a source file (e.g. foo.o: foo.c means foo.o is built from foo.c). Accurate dependencies are the cornerstone of a successful build. If a Makefile contains incomplete dependencies, then objects that need updating may be left untouched, and if it contains over-specified dependencies, too much work may be performed which will produce slow builds.
Additionally, if the build manager wants to speed up the build process by using parallel Make to run jobs on a multi-processor machine, accurate dependencies are vital. Without them, a parallel build may appear to terminate correctly while producing corrupt or incorrect object code. That can happen if build steps occur in the wrong order; without good dependencies a library file might get created before one of the objects it contains is remade.
Finally, every developer needs good dependencies to get fast, accurate incremental builds. The last thing a developer wants is to touch a single source code file and find that many other unrelated files are being built, wasting time, because of bad dependency information.
Types of Dependencies
This whitepaper discusses three main types of dependencies: those that exist between source and object files (that are used to regenerate objects when source changes), those that exist between objects (for example, used to drive a lin... [download for more]

Browse Technology Topics

Data Center

Virtualization, Cloud Computing, Infrastructure, Design and Facilities, Power and Cooling, Green Computing  
    

Data Management

Application Integration, Analytical Applications, Business Intelligence, Configuration Management, Database Development, Data Integration, Data Mining, Data Protection, Data Quality, Data Replication, Database Security, EDI, SOAP, Service Oriented Architecture, Web Service Management, Data Warehousing  
    

Enterprise Applications

Application Integration, Application Performance Management, Best Practices, Business Activity Monitoring, Business Analytics, Business Integration, Business Intelligence, Business Management, Business Metrics, Business Process Automation, Business Process Management, Call Center Management, Call Center Software, Change Management, Corporate Governance, Customer Interaction Service, Customer Relationship Management, Customer Satisfaction, Customer Service, EBusiness, Enterprise Resource Planning, Enterprise Software, EProcurement, Extranets, Groupware Workflow, HIPAA Compliance, IP Faxing, IT Spending, Marketing Automation, Performance Testing, Product Lifecycle Management, Project Management, Return On Investment, Risk Management, Sales & Marketing Software, Sales Automation, Server Virtualization, Simulation Software, Supply Chain Management, System Management Software, Total Cost of Ownership, Video Conferencing, Voice Recognition, Voice Over IP, Workforce Management, Incentive Compensation, Spend Management, Manufacturing Execution Systems, International Computing  

Human Resource Technology

Human Resources Services, Payroll Software, Time and Attendance Software, Workforce Management Software, Financial Management, Employee Monitoring Software, Employee Training Software, Recruiting Software/Services, Employee Performance Management, ELearning, Benefits Management, Expense Management  
    

IT Career Advancement

Cisco Certification, Microsoft Certification, Linux Certification, Network Security Certification, Software Development Certification  

IT Management

Employee Performance, ITIL, Productivity, Project Management, Software Compliance, Sarbanes Oxley Compliance, Service Management, Desktop Management  
    

Knowledge Management

Collaboration, Collaborative Commerce, Contact Management, Content Delivery, Content Integration, Content Management System, Corporate Portals, Customer Experience Management, Document Management, Information Management, Intranets, Messaging, Records Management, Search And Retrieval, Search Engines, Secure Content Management, SLA  

Networking

Active Directory, Bandwidth Management, Convergence, Distributed Computing, Ethernet Networking, Fibre Channel, Gigabit Networking, Governance, Grid Computing, Infrastructure, Internetworking Hardware, Interoperability, IP Networks, IP Telephony, Local Area Networking, Load Balancing, Migration, Monitoring, Network Architecture, Network Management, Network Performance, Network Performance Management, Network Provisioning, Network Security, OLAP, Optical Networking, Quality Of Service, Remote Access, Remote Network Management, Server Hardware, Servers, Small Business Networks, TCP/IP Protocol, Test And Measurement, Traffic Management, Tunneling, Utility Computing, VPN, Wide Area Networks, Green Computing, Cloud Computing, Power and Cooling, Data Center Design and Management, Colocation and Web Hosting  
    

Platforms

AS/400, Domino, Linux, Microsoft Exchange, Oracle, PeopleSoft, SAP, Siebel, Solaris, Tivoli, Unix, Web Sphere, Windows, Windows Server  

Security

Access Control, Anti Spam, Anti Spyware, Anti Virus, Application Security, Auditing, Authentication, Biometrics, Business Continuity, Compliance, DDoS, Disaster Recovery, Email Security, Encryption, Firewalls, Hacker Detection, High Availability, Identity Management, Internet Security, Intrusion Detection, Intrusion Prevention, IPSec, Network Security Appliance, Password Management, Patch Management, Phishing, PKI, Policy Based Management, Security Management, Security Policies, Single Sign On, SSL, Secure Instant Messaging, Web Service Security, PCI Compliance, Vulnerability Management  
    

Software Development

.NET, C++, Database Development, Java, Middleware, Open Source, Software Outsourcing, Quality Assurance, Scripting, SOAP, Software Testing, Visual Basic, Web Development, Web Services, Web Service Security, XML  

Storage

Backup And Recovery, Blade Servers, Clustering, IP Storage, ISCSI, Network Attached Storage, RAID, Storage Area Networks, Storage Management, Storage Virtualization, Email Archiving, Data Deduplication  
    

Wireless

802.11, Bluetooth, CDMA, GPS, Mobile Computing, Mobile Data Systems, Mobile Workers, PDA, RFID, Smart Phones, WiFi, Wireless Application Software, Wireless Communications, Wireless Hardware, Wireless Infrastructure, Wireless Messaging, Wireless Phones, Wireless Security, Wireless Service Providers, WLAN  
Search