views:

324

answers:

8

Hi,

I'd be leading a new project soon. And I've been pondering over what are the basic infrastructure for a software project. These are the stuff that I think every project should have:

-Coding style conventions

-Naming conventions

-Standard project directory structure(eg maven standard dir layout, etc)

-Project management and issue tracking(eg trac, redmine, etc)

-Continuous Integration server(eg, hudson, cruise control, etc)

I'm not sure if I missed out anything. Would anyone like to add?

+1  A: 

In addition to yours I will put:

  • Unit Test Strategy
  • Integration Test Strategy
  • Defined Process
  • Release (delivery) strategy (like milestones, working packages and so on)
  • Source control branching strategy
m_pGladiator
+3  A: 
  • revision control system (eg. subversion, cvs, git)
Vertigo
+4  A: 

As a preliminary answer, check out the Joel test: http://www.joelonsoftware.com/articles/fog0000000043.html

Just an appetizer:

  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?
JXG
+1  A: 
  • What about documentation - how (comments in code, high-level specs), when, amount, who
  • How you will test - unit/acceptance/user testing
  • code versioning, some SVN/Git (or is it included in trac?)
  • team roles and responsibilities - need to be done in ocntext of your project
Jakub Kotrla
A: 

Knowledge management is crucial. As you already plan to use wiki (like Trac or Redmine) you could use it for KM as well.

Ilya Kochetov
A: 

Functional testing is a mandatory part of any project. Unit testing is great and it works well for Agile projects but the functional testing is still necessary. You need at least a basic Test Plan. If you plan to have multiple projects or sub-projects a Test Strategy document or Wiki page would be good. Test Cases, Acceptance Test Cases etc could be driven by your User Stories or their equivalents but they still have to exist in some form.

Ilya Kochetov
A: 

I would throw a file sharing server into the mix too. I thought version control was so basic, that I didn't even bother to put it there in the list. But its a good point version control.

liangzan
A: 

Configuration Management Plan. You need to have a documented approach to your development workstreams, how you will be merging between then, etc.

Ben