私は CS の学生で、今年はコンパイラ プロジェクトがあります。
3 人のパートナーとプロジェクトを管理する方法を知りたいです。
コンパイラには多くのレベルとプロセスがあることを知っており、これらの機能を利用してプロジェクトを管理したいと考えています。
開始するために提供できるヒント/ポインター/リソースに感謝します。
私は CS の学生で、今年はコンパイラ プロジェクトがあります。
3 人のパートナーとプロジェクトを管理する方法を知りたいです。
コンパイラには多くのレベルとプロセスがあることを知っており、これらの機能を利用してプロジェクトを管理したいと考えています。
開始するために提供できるヒント/ポインター/リソースに感謝します。
コンパイルしているものを実際に指定していないため、具体的な推奨事項を作成するのは少し困難です。
何か斬新なことをしているなら、私は数週間前にいくつかの具体的な考慮事項を含むブログ投稿を書きました:
http://www.plsadventures.com/2009/09/why-programming-language-design-is-hard.html
コンパイルしている言語が既存の言語である場合は、適切なテスト コーパスの生成に取り組み、テスト駆動開発を使用して進行状況を管理することを検討します。
おっしゃったように、ほとんどのコンパイラには比較的個別の明らかなコンポーネントがいくつかあります。これらのコンポーネントを接続するインターフェースを文書化することを検討します。たとえば、ある人がレクサーを作成し、別の人がパーサーを作成している場合、どこかに書き留めたトークンのリストがあることを確認してください。解析および/または抽象構文ツリーの形式を定義して書き留めて、最適化またはコード生成に取り組んでいる人が同じページにいるようにする必要があります。
とりわけ、テストはこの種の統合に本当に役立ちます。ほとんどの場合、これらのコンポーネントを個別に構築し、それらを組み合わせることができるはずです。
Git や Mercurial などの DCVS を使用する必要があります。これにより、変更を簡単にマージしながら、それぞれが個別に開発できます。
次に、テスト ケースを定義して、必要な機能と、その機能が機能することをどのように確認するかを把握する必要があります。
チームの各メンバーが互いに足を踏み入れることなく作業できるように、重複しすぎないプロジェクトのさまざまな領域を把握するのに役立ちます。