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'm researching engineering approaches to software development based on the type of software, for example:

  • Custom one-off software (e.g. space shuttle software)
  • Whitebox application requiring customised (e.g. Apache Ofbiz ERP - source code is usually downloaded and customized for each implementation)
  • Blackbox application without extension points
  • Blackbox application with extension points for customisation (e.g. MS Word, SAP)
  • ...

Is there an established taxonomy of different types of software based on how the software is implemented?

share|improve this question
    
End users don't "implement" software, developers do that. Do you mean "deployed" or "used"? –  Kilian Foth Feb 3 '13 at 15:34
    
I've removed the reference to end users –  SHC Feb 3 '13 at 20:23
4  
Close voters: Software engineering & development methodologies questions are on topic (don't take my word for it, check out the FAQ). –  Yannis Rizos Feb 3 '13 at 23:28

3 Answers 3

up vote 4 down vote accepted

It isn't really a taxonomy: it's a set of orthogonal properties. Some of the most important ones are:

  • Open source vs. proprietary
  • Publicly available vs. in-house only
  • Extensible API or not?
  • Plugin support?
  • Platform (i.e. what infrastructure does it depend upon)
  • Extent of specific customisation for user / company
  • Scriptability (i.e. embeds own programming language for users)
  • Client type (web vs. desktop GUI vs. console app vs. REST API etc.)
  • Monolithic structure vs. composable components?
  • Support for distribution (clustering, redundancy failover etc.)
  • Stable vs. experimental (in development)

You can have pretty much any combination of the above.... so trying to build it into a tree structure would be fairly pointless as all the branches would need to be duplicated.

share|improve this answer
    
is this list something you have constructed yourself, or is it based on research or any other body of knowledge? –  SHC Feb 4 '13 at 11:35
    
It's my own list, based on many years of experience rather than any specific research :-) . These are the things I like to know when I'm getting my head around a new software product. –  mikera Feb 4 '13 at 11:58

This is ancient but still useful:

http://www.joelonsoftware.com/articles/FiveWorlds.html

I think there are five worlds here, sometimes intersecting, often not. The five are:

  • Shrinkwrap
  • Internal
  • Embedded
  • Games
  • Throwaway

When you read the latest book about Extreme Programming, or one of Steve McConnell's excellent books, or Joel on Software, or Software Development magazine, you see a lot of claims about how to do software development, but you hardly ever see any mention of what kind of development they're talking about, which is unfortunate, because sometimes you need to do things differently in different worlds.

share|improve this answer

There isn't a widely accepted taxonomy used in industry, but there are some academic attempts to create one. One example is by Forward and Lethbridge (ACM subscription required). Some software repositories, such as Sourceforge, provide a categorization scheme for the projects stored within them. At the very least, these schemes may provide a starting point.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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