我总是单独编程,我还是学生,所以我从未与其他人编程,我以前甚至都没有使用版本控制系统。
我正在开展一个项目,现在需要了解程序员如何在公司的一个软件上协同工作。
软件是如何编译的?它来自版本控制系统吗?是个别程序员吗?这是周期性的吗?是有人决定建造什么的吗?是否有任何测试可以确保它“有效”?
一切都会。
答案 0 :(得分:54)
答案 1 :(得分:11)
我也是一名学生,他最近完成了一个软件工程课程,整个学期由一个巨大的小组项目组成。首先我要说的是,我们可以和3个人一起完成整个学期12个人的工作。与人合作是一件艰难的事情。沟通是关键。
绝对利用存储库。每个人都可以远程访问所有代码,并添加/删除/更改任何内容。但是关于颠覆的最好的部分是,如果有人破坏了代码,你可以恢复到早期版本并评估那里出了什么问题。沟通仍然是关键,知道你的队友在做什么,这样就没有冲突。不要坐在你的代码上,快速,有意义地提交到存储库是最有效的。
**我还推荐一个bug跟踪器,比如Redmine。您可以为每个人设置帐户,并为人员分配具有不同优先级的任务,还可以跟踪并查看是否有人处理了某些问题,或者是否有更多问题出现。
而且,如前所述,单元测试将有很大帮助。祝你好运!希望这有助于: - )
答案 2 :(得分:8)
重要的是:
最后,您需要愿意共同努力实现该计划。这往往是困难的部分。
答案 3 :(得分:7)
通常,最好不要将构建工件检入存储库。存储库将包含源代码树,构建配置等 - 由人类编写的任何内容。软件工程师将检查其代码的副本到本地文件系统并在本地构建。
将单元测试作为构建过程的一部分运行也是一种好习惯。通过这种方式,开发人员可以立即知道他的更改是否使任何单元测试无效,并且有机会在检查更改之前修复它们。
您可能希望查看版本控制系统(Subversion,CVS,Git等之一)的文档以及构建系统(例如,在Java中有Ant和Maven)。
答案 4 :(得分:5)
答案 5 :(得分:3)
你所询问的事情没有标准。相反,存在惯例,这些惯例在很大程度上取决于组织的规模和成熟度。如果你是一个小型组织,比如几个程序员,那么对于进行编码,构建和测试的各个开发人员来说,事情可能会有些不正常。
在大型组织中,可能有专门的构建工程师和流程。这种组织通常会定期进行正式构建,例如每天一次,使用任何已签入的源代码。该过程通常还包括BVT(构建验证测试)和一些回归测试。开发人员将检查存储库中的代码,在本地处理自己的部分,然后将其签入。
在像微软或谷歌这样的大型组织中,他们将拥有一个完全专注的小组和完整的实验室,它将建立在或多或少的基础上,使每次运行的结果都可用。这些组织有非常正式的流程和程序,包括检查的内容和时间,代码审查流程等等。
答案 6 :(得分:2)
简短的回答 - “这取决于”。
目前,我正在自己创建一个项目,所以我是构建/使用VCS的人。我知道其他地方你有团队通过 shudder 电子邮件一起工作。或者使用VCS的大型(+5)团队。
在这方面,我强烈建议至少学习一些VCS,而Joel Spolsky对Mercurial有一个很好的介绍tutorial。 Bazaar(我个人的选择)是相似的,然后Git是相似的下一个最接近的,但可能比任何一个(至少是ATM)更受欢迎。之后你就拥有相对较弱的SVN。
实际上,Joel talks关于你的大多数问题 - 我建议阅读他所拥有的10年档案 - 这些都是非常有用的信息,而且大部分都与你当前和未来的情况有关。
答案 7 :(得分:2)
没有使用软件开发的烹饪书,但一般来说版本控制系统应该是构建系统的核心,即使您在一个只有开发人员的项目中工作。即使在这种情况下,能够恢复版本和阅读版本日志是非常受欢迎的帮助修复错误。这不是版本控制系统的唯一功能,但仅此一点就可以证明安装,配置和维护版本控制系统。
构建可以由每个开发人员在添加新代码时完成,也可以由“构建服务器”定期完成。最后一种方法需要更多设置,但有助于更快地发现构建错误。
答案 8 :(得分:1)
正确的编程是一项深刻的事情,可以从经验中获益匪浅。配对编程就像运行多个意识处理器一样......一个人可以忽略另一个人看到的东西,只要他们进行沟通就可以带来很大的进步。
答案 9 :(得分:1)
首先,团队使用存储库(可以是专业版本控制,或者只是一堆被认为是“实时”的目录,但是修订控制系统是事实上的标准)。此外,项目管理策略的方式取决于您的工作方式(瀑布,敏捷等)。如果您在迭代中工作,则构建自我维护的组件/插件/模块/库,并执行单元测试,直到其签名完成为止。作为一个团队,您在一个团队中工作,这意味着您不会同时在任何地方处理整个项目。相反,您可以在项目领域内执行任务。在某些情况下,您必须修复不属于您的代码,但这通常发生在发生奇怪的行为时。基本上,您正在测试您开发的部件。
让我举个例子给你。你是一群建筑工人。建筑师提出了建筑计划,工头看起来需要建造什么,然后雇用建筑师。泥瓦匠做墙壁,检查它们的强度并很好地粘合它们。电工完成了建筑物内的所有布线,因此电流可以流动。每个人都有自己的工作。有时,电工可能想与泥瓦匠讨论是否可以雕刻某些墙壁,但总是与工头一起。
我希望这对你有所帮助!
答案 10 :(得分:0)
通常,源代码控制系统包含源代码,通常没有二进制文件。如果你想构建并运行它,你可以检查代码并在本地机器上构建它。
有些地方每晚运行以确保一切正常。甚至可能存在一些在服务器端运行的自动化测试。如果构建或其他任何内容失败,则会自动通知某人。
答案 11 :(得分:0)
使用源代码控制方法的一个很好的介绍是Eric Sink的Source Control HOWTO http://www.ericsink.com/scm/source_control.html
在他的例子中,他使用SourceGear Vault,因为他编写了所有这些,但这些方法可以应用于其他版本控制系统。
答案 12 :(得分:0)
这也是人们应该研究开源项目的一个很好的理由。
在大型OpenSource项目中工作的主要开发人员(如Chromium,Mozilla Firefox,MySQL,Popular Gnu Software)都是专业人士。他们拥有丰富的经验,这些项目经过多年的发展,有来自数百名专业人士的想法。
在这些OpenSource项目中可以找到其答案中提到的所有内容(计划,版本控制系统,问题跟踪器,通知系统,构建系统,测试套件)。
如果你真的想亲身体验,我强烈建议你去看一些流行的&大型OpenSource项目然后从任何项目中获取Source(使用Version Control)并将其构建为自己。
PS:我也是一名学生,参与OpenSource项目是我一生中做过的最好的事情。相信我!你也会有同感。