大規模なPHPプロジェクトの書き直しを計画するためのヒント?


13

私は、長年取り組んでいたPHPフレームワーク(MVCを使用)を完全に書き直すことにしました。これまでの私の問題は、フレームワーク自体の設計を気にせずに、アイデアを思いついてチケットとしてTracに投入し、後で追加することでした。時間が経つにつれて、これはいくつかの問題を引き起こし、書き直しが役立つと思いますが、どこで計画を始めるべきかわかりません-Tracを使いたくないことは知っています。チケットとマイルストーン-しかし、他に何が必要ですか?

私は本当にこの書き直しを徹底的に計画し、必要なすべての機能、それがどこに行くのか、そしてそれが他のすべての部分にどのように接続するのかを詳細にしたいのですが、このレベルの計画の経験はありません。何かアドバイス?役立つプログラムはありますか?私はTracにうんざりしています。

設計文書が必要になることは知っていますが、従うべきレイアウトはありますか?また、バグ追跡、チケット、マイルストーンなども必要になりますが、Trac以外では、それが何が良いのかわかりません。必要なものはもっとあると思いますが、何がわからないので、どんな助けでも感謝します。


なぜあなたはそれを書き直したいのですか?改善が必要な場所でリファクタリングしませんか?何かを一から書き直すと、新しい問題のために古い問題を排除できる可能性があります。

@Gordonは非常にひどく書かれているので、リファクタリングするよりも書き直す方が良いでしょう。
右折

書き換えは見た目よりも常に難しく、私はそれを難し​​い方法で学びました。ああ、今度は私がやっていることを知っているので、それは半分の時間がかかります(そして、以前に犯した間違いを修正またはプリエンプトしようとオーバーエンジニアするため、オリジナルよりも長くかかります)
Davy8

回答:


7

以下に、大きなプロジェクトを開発するときに行ういくつかのことを示します。

1-OpenProjなどの計画ツールを使用して、タスクとして含めるすべての機能を追加します。たとえば、現在、ユーザーがサイトに登録した後に自動的にログオンできるようにする機能に取り組んでいます。「feature-autologin」のような計画がタスクにあります。

2-私は一人の開発ショップなので、通常はある機能から次の機能に移行します。私の計画は、すべての機能が連続するように作成されています。各機能に必要な時間を見積もるのにあまり時間をかけません。私は通常、一人一人が成長するのに1日かかると考えています。さらに時間がかかる場合は、プランを更新するだけで、将来のタスクはすべてそれに応じて移動します。

3-gitを広く使用しています。各機能はブランチです。各機能を完了したら、開発ブランチにマージして、次の機能用に新しいブランチを作成します。

4-ソフトウェアのバグを見つけた場合、小さなgitブランチを作成して修正し、解決したらマージし直します。開発ブランチと現在作業中の機能ブランチの両方を必ず更新してください。ところで、バグは私のOpenProjプランの別のタスクになります。「バグ間違ったアドレス」のようなもの。そして、挿入すると、他のすべての機能がタイムラインに戻ります。

5-開発中に、新しい機能について考えた場合、単にそれを最適な計画に含めて、タイムラインを再度最適に調整します。

これがお役に立てば幸いです。あなたの前にエキサイティングなプロジェクトがあるようですね。幸運を!


10

完全に書き直そうとしている場合、PHPを使用する必要があるかどうかも検討してください。技術の変更/アップグレードは、設計/スケーラビリティ/メンテナンス性などを改善したい触媒かもしれません...


3
また、既存のフレームワークは、もう1つの使い捨てフレームワークを作成するよりも適している可能性があることを考慮してください。
S.Lott

1
@ S.Lott-使い捨てのフレームワークを作成することの何が問題なのですか?
匿名

1
@Chris Bridgett:世界には、もう1つの高度に専門化されたフレームワークは必要ないかもしれません。それは「魅力的な迷惑」になる可能性があります。楽しい時間の無駄。多くの場合、既存のフレームワークも同様に機能します。特別な目的のフレームワークでの「調整」は、多くの場合、既存の既存のフレームワークを理解していないことに起因します。多くの場合、既存のフレームワークはより安全で、信頼性が高く、高速です。多くの場合、既存のフレームワークはすでにデバッグされています。多くの場合、既存のフレームワークは他のチームメンバーがよりよく理解しています。
-S.ロット

@ S.Lott:私は自分が所有するいくつかのサイトのためにこれを書いており、そのデザインは他のフレームワークとは異なる方法でセットアップされています。また、私はしばらくの間、それをリリースする予定はありません。re:TheLQ:それは私の最初の考えの1つでしたが、PHPが.NET以外にできるWeb言語は他にありません。Pythonをお勧めしますが、cPanelサーバーでセットアップする(残念ながら多くのWebホスティングの世界を構成している)のは苦痛です。
ジョン

1
@ S.Lott投稿以来、Symfony、CakePHP、CodeIgniterを読んでいますが、これらを使用できない最大の理由は、すべてがMVCに盲目的に固執し、再利用性を無視しているように見えることです。私の現在の(そして将来、書き直した場合)デザインは、MVCが単一のフォルダー(「モジュール」フォルダー)にあり、ユーザーが望むビュー(example.module.view.phpという名前)とテーマがありますフォルダー。デザイナーは、既存のビューをオーバーライドする独自のテーマを作成できます。これは私にとって非常に重要であり、主要なフレームワークのどれも、多くのハッキングなしでこれを行うとは思えません。
ジョン

10

代わりに大幅にリファクタリングすることをお勧めします

ここで予想される問題:

私は本当にこの書き直しを徹底的に計画し、必要なすべての機能、それがどこに行くのか、そしてそれが他のすべての部分にどのように接続するのかを詳細にしたいのですが、このレベルの計画の経験はありません。何かアドバイス?役立つプログラムはありますか?私はTracにうんざりしています。

本当に難しいものです。基本的には、すべてのさを備えたウォーターフォールモデルです。ここに、「大規模な書き換え」アプローチの問題に関するいくつかの事例証拠があります。結論は次のとおりです。おそらく、問題を正しく予測できず、最初から書き換えたい別の混乱に陥ることになります。あなたが悪いからではなく、一発で何か大きなものを得ることは不可能だからです。

あなたの代わりにリファクタリングを開始するときは、することができ、個々のチケットを書いて、あなたはプロジェクトを継続して使用することができます。ここでのコツは、全体的な設計を改善する小さな変更を特定することです。

たとえば、MVCはありませんが、したいということです。最初のステップとして、単一のPHPファイルを取得し、通常の混乱を想定してソートし、上部にすべてのdbアクセス、計算などがあり、下部に「テンプレート」(各ファイルの最初のチケット)。2番目のステップとして、これらすべてのテンプレート部分を関数にカプセル化し、パラメーターを渡すことができます。(さらに多くのチケット)。できた?おめでとうございます、MVCでVを完成しました。


それを考慮に入れます、ありがとう。また、物事を片付けるために-私は現在MVCを使用しています。
ジョン

@Jon:はい、また、私の例ではフレームワークのない典型的なページを想定しています。しかし、必要な変更を加えて、私の答えはそれによって無効にされないと思います。私が言及しなかった点:リファクタリングは楽しいです。合計がらくたが美しいものになるのを見るのは非常にやりがいのあることです:)
ケプラ

3

既存のフレームワークの使用を検討してください。CakePHP、Zend Framework、CodeIgniter、SymfonyはPHPの既知のものです。彼らが数百または数千のユーザーのニーズを満たせば、彼らはあなたのニーズに応えることができると確信しています。

PHP以外のものを学習/使用する場合は、Django(Python)とRails(Ruby)が従来のWebアプリケーションのほとんどの主要なフレームワークです。

もちろん、フレームワークの作成経験が必要な場合を除き、市場での価値ははるかに低い(既存のサポートされているフレームワークの使用方法をよく知っているのではなく)。


1

使用しているのは、スケジュールトラッカーとしてのRedmineです。ITはこれらの各アイテムを非常にうまく処理し、tracよりもはるかにユーザーフレンドリー(私の意見では)です。

書き直しに関しては、最初に登場する可能性のあるすべての機能/新しい拡張機能を決して予想しないことを理解することが重要です。そのため、アプリケーションを可能な限り柔軟に記述してください。PHPにあるMVCフレームワークの多くを使用すると、これを活用できます。ただし、これらのフレームワークの一部は、DBアーキテクチャに最初から柔軟性がない場合(ケーキ)に穴を開けます。できる限り抽象的なものを作ることに集中し、ハードコーディングされたものを見るたびに、それが何のためであり、なぜDBに保存できないのかを自問します。

本当にDBの設計は、非常に多くの質問や問題に答えるのに役立ち、アプリケーションがどのように相互作用するかについての主な重要性を見ています。そのため、データの保存方法とDBの構造を分析するのにかなりの時間を費やすことをお勧めします。


1

問題追跡ソフトウェアとして、JIRAは優れていますが、非常に高価です。私が使用しているもう1つの優れたツールはEventumです。それは無料です。

しかし、最も重要な部分は、あなたが必要なものの良いアイデアを持つことです。まず、アプリケーションの要件を収集し、必要なものについて全体的な感覚を持ち、可能な限り完全にする必要があります。

それに基づいて、ソフトウェア要件を作成します。これは、アプリケーションの一部となるモジュール、それらの機能とサブ機能、オブジェクト、クラス、それらのインターフェイスなどを記述する技術的なアプローチです。

知っていれば、アプリケーションの複雑さと必要なコード行をよく理解できるので、見積もりを立ててスケジュールを作成できます。スケジュールと期限を設定することが重要です。

それが役に立てば幸い


Jiraは10人未満のユーザーにとって非常に安価です。費用は10ドルで、10ドルは慈善団体に寄付されます。
-sixtyfootersdude
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.