Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I need to correlate requirements for a plugin/extension of an application with development best practices.

I thought there might be best practice advice that applies to plugins and extensions available but cannot find any literature. Of course best practices are often common sense, but my task involves applying a framework to describe design choices. If any resources specific to plugins/extensions are known that would be great. Otherwise, I would like, to at least find a well respected language agnostic list of software development principles.

share|improve this question

closed as not constructive by Jim G., MichaelT, gnat, Kilian Foth, Frank Shearar Mar 11 '13 at 8:23

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

add comment

1 Answer

As you're being very high level and not specifying what technologies you're using I can't point you to a definitive online source, however I wil give you some suggestions for your design.

  1. You will need a service bus of sorts. The purpose of the service bus is to allow your application and other plugins to communicate with each other.

  2. In order to be fully extensible you should provide an object to plugin instances to allow them to interact with your application. For example think of a JavaScript script manipulating the DOM and the window object.

  3. Work out whether you're going to support certain types of extensions (i.e. document helpers, toolbar addons, etc) and if so whether it is appropriate to define interfaces for individual extensions.

  4. Consider writing as much of your core functionality as possible as extensions / plugins. This will help you to iron out any kinks in your architecture.

You will then need to work out how you are going to load them, unload them and manage them.

Frameworks such as the Managed Extension Framework (MEF) in .NET, or OSGi or JPF for Java will help you with common tasks.

For the maximum level of extensibility you will need well defined interfaces that are accessible to external libraries / assemblies / packages for implementation.

share|improve this answer
OK there are some good principles here, thanks- however, what i am looking for is a good article( preferably academic, that might sum up the important principles for developing an extension\plugin for an existing application. –  user2152812 Mar 11 '13 at 1:24
Try using google with site:edu and your keywords. –  Sam Mar 11 '13 at 1:28
Thanks Sam, but i did try this already, and unfortunately could not find anything pertinenet. –  user2152812 Mar 11 '13 at 1:34
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.