软件项目的基础架构

时间:2020-03-06 14:20:29  来源:igfitidea点击:

我很快会领导一个新项目。我一直在思考软件项目的基本基础架构是什么。这些是我认为每个项目都应该具备的内容:

-编码样式约定

-命名约定

-标准项目目录结构(例如,Maven标准目录布局等)

-项目管理和问题跟踪(例如,trac,redmine等)

-连续集成服务器(例如,哈德逊,巡航控制等)

我不确定是否错过了什么。有人要添加吗?

解决方案

除我们之外,我将:

  • 单元测试策略
  • 整合测试策略
  • 定义的过程
  • 发布(交付)策略(如里程碑,工作包等)
  • 源代码控制分支策略

  • 版本控制系统(例如,subversion,cvs,git)

作为初步答案,请检查Joel测试:
http://www.joelonsoftware.com/articles/fog0000000043.html

只是一个开胃菜:

Do you use source control?
  Can you make a build in one step?
  Do you make daily builds?
  Do you have a bug database?
  Do you fix bugs before writing new code?
  Do you have an up-to-date schedule?
  Do you have a spec?
  Do programmers have quiet working conditions?
  Do you use the best tools money can buy?
  Do you have testers?
  Do new candidates write code during their interview?
  Do you do hallway usability testing?

  • 关于文档-如何(代码注释,高级规范),时间,数量,人员
  • 测试方式-单元/验收/用户测试
  • 代码版本控制,一些SVN / Git(或者它包含在跟踪中?)
  • 团队角色和责任-需要在项目中完成

知识管理至关重要。由于我们已经计划使用Wiki(例如Trac或者Redmine),因此也可以将其用于KM。

功能测试是任何项目的必需部分。单元测试很棒,它对于敏捷项目也很好,但是功能测试仍然是必需的。我们至少需要一个基本的测试计划。如果我们打算有多个项目或者子项目,则可以使用"测试策略"文档或者Wiki页面。
测试用例,验收测试用例等可以由用户故事或者它们的等效项来驱动,但它们仍必须以某种形式存在。

我也会把文件共享服务器也混在一起。我以为版本控制是如此基础,以至于我都不想把它放在列表中。但是它是一个不错的版本控制。

配置管理计划。我们需要对开发工作流有一个成文的方法,然后在这之间进行合并,等等。