The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Well-considered use of libraries within a software project

Hi all,

I have recently started working on a JAVA-project within a software team as a contractor. After a few weeks of trying to understand the problem that the team is solving and studying the code that has been written thus far, I have noticed that a lot (35+) of third party libraries (freeware, shareware and commercial) are being used.

Although I'm convinced that the use of such libraries is a good thing, I'm in doubt in this particular case (at least for a number of the libraries used).

I'm especially worried about the following topics:

1. The team will try to keep in line with the latest version for each and every library. This will take up a lot of resources on refactoring and re-integration of the new version for each of these libraries.

2. I presume that not all of these libraries are top-notch quality. Taking into account the large number we're using their quality is something that is hard to validate/check.

3. Some of the libraries offer vasts amount of functionality of which only small parts are used within the project.

3. The complexity of the solution is rising (although initial development efforst might be (slightly) less). Future developers will need to learn the set of libraries in order to understand the work done and continue the developments.

Has anyone ran into problems by using (ad-hoc) libraries? Has the use of large amounts of libraries saved projects?
Does anyone wants to share his/her thoughts on how to decide whether a library should be used?

Boris Rogge Send private email
Sunday, August 07, 2005
Good unit tests can mitigate a lot of these problems.  Writing xUnit tests on the parts of the libraries you use helps document how they work.  And when you get a new version of a library, you can run that version through the tests to see if they still pass.
Kyralessa Send private email
Sunday, August 07, 2005
Haha.  Yes, I have considered, worked with, and will be sharing information along these lines:

The slides will be made available on Wednesday or Thursday, but you can always drop me an email too.
KC Send private email
Sunday, August 07, 2005
Do you worry so much about everything? I assume the libaries are being use because they need something out of them. On the off chance they were really confused and didn't really need the functionality, then remove it, otherwise, isn't that what libraries are for?

Would you feel better, for example, if they collapsed all the libaries into one, so you couldn't tell how many there were?
son of parnas
Sunday, August 07, 2005
Don't worry about it.

Java development is easier today than it once was _because_ there are so many open-source, free, third-party libraries available.

Your situation is typical.

Should I write my own code to XML escape a string, or should I use something that many people have used, refined, and debugged? I choose the latter. So I grab it from the the net and add it to my project.
Travelling Steve Send private email
Monday, August 08, 2005
It seems to me that your concerns are reasonable, but that a solution shouldn't be too difficult to find. From what you've described, the problem is less with the libraries and more with the uncertainties. It sounds like there is insufficient documentation in the project to bring someone new to the project up to speed. (Something I *have* experienced.)

In addition to the xUnit tests mentioned by Kyralessa, consider writing some thin documentation about the libraries. Just the basics, enough so that someone new to the project can quickly figure out a) why the libraries are being used in this project; b) which ones will need to be updated; c) which ones are only being used for a small part of their functionality. Maybe a 1-page Word document or an Excel table.

You may find (will probably find, I'd guess) that of the 35+ libraries, you only need to keep up with updates on a handful. Also, if only a small bit of functionality is being used for some libraries, you may keep your eyes open for a smaller-footprint replacement.

Regarding the quality of the code, it seems to me prudent to keep an eye on the bug count from 3rd party code, and make sure the parts you use are exercised in tests. (Of course, that's true for any of the code!) Also, maybe, look to see if anyone has commented online (positively or negatively) about the most critical libraries.
EKB Send private email
Monday, August 08, 2005
Perhaps the people who have chosen then libraries found the best there was at the time, but now something else is available.

It would seem resonable to me that if you have 10 products of which you use 10% of each, you might also find several other libraries which do much more for you so that you need less libs in total.

Are the libs Open Source? are the Free or can you otherwise have influence over the parts you wish to use.  Say combine the classes you need into their own library and republish.

Thursday, August 11, 2005

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz