独自のプロジェクト管理システムの開発を開始した方法とその結果について

...庭には2013年の暑い夏の真ん中がありました。 X社は、管理に関する基本的な理解と、PHPおよび関連するmysql、html、css、jsのさらに基本的な知識を備えた、若くてややグリーンなシステム管理者を獲得しました。







その会社はファッショントレンドと「ISUP」(プロジェクト管理情報システム)の概念で飽和していました。ただし、彼らが導入しなかった場合、ミルクリバーが流れ、ボタンを押すだけですべての注文が明確、効率的かつ完全に実行されると信じていました。







しかし、X社のいくつかの機能に関連して、箱から出した「標準」システムは一部または不幸にも適合せず、その瞬間からこの物語は始まりました...









以前のように



物語

会社の経営陣が注文=プロジェクトという決定をいつどのように行ったかはわかりませんが、「プロジェクト管理」の原則に取り組んでいますが、システム管理者になるまでに、会社が働くための条件付きルールのセットがすでにありました。 この作品の最も注目すべき機能は、一般的なものがまったくないことでした。うーん、それを「プロジェクト(注文)のデータベース」とそのステータスと呼びましょう。







新しい注文が到着すると、マネージャーは特定のプレートでGoogledoxに登りました。注文番号が含まれ、「手動自動インクリメント」メソッドを使用して新しいプロジェクト番号が作成されました。これは次回プロジェクトが2倍にならないようにプレートにも入力されました 次に、プロジェクトの名前、番号、一般に識別に必要なデータを含むフォームが印刷されました。 「登録段階」の後、プロジェクトには個人フォルダーが与えられ、部門ごとにさらに進んでいきました。構成、作業、期限、サプライヤーに関する情報を記載した印刷されたリーフレットの数は、常にプロジェクトフォルダーに重量と量を追加することを余儀なくされました。 プロジェクトの完了後、またはクライアントが拒否した後、フォルダーは非常に適切に供給されることがあり、通常のキャビネットとして機能するアーカイブに送信されました。







経営陣は、戦略的に重要な2つのタスクを設定しました。





  1. 適切なプロジェクト管理システムを見つける
  2. 特定のプロジェクトの状態とその理由について透明性と明確な理解を得る










状況の分析と最初の「ハロー世界」



経営者は、紙の交換システムには多くの不便があることを明確に理解していました。保管スペースの平凡な不足からプロジェクトのシート(フォルダー)の緊急損失まで、プロジェクトの遅延または失敗さえも伴いました。 注文の増加に伴い、これらの不便は「昨日」に解決策を必要とする重大な問題に変わりました。







その結果、MS Projectに基づいて「ISUP」という名前で巨大なものを作成することが決定されました。 プロジェクトの「ライフサイクル」の過程で発生するはずだったビジネスプロセスの説明とともに、膨大な(約150〜200ページ)ドキュメントが作成されました。







この実装の値札は、6桁の合計の領域でした:サーバー+ソフトウェア。 すべてのライセンス。 金額はいくぶん小さく、すべての購入は1日間の仕事ではなかったため、何らかの形で現在の状況を緩和することにしました。 そのため、次のアイデアが実現されました。スプレッドシートが作成され、プロジェクトの名前、進行した段階、段階の責任者、完了/失敗の日付が示されました。 テーブルは個々の人によって更新され、各部門にあった同様のプレートから情報を収集しました。 この「決定」のおかげで、状況はほぼ安定し、「ジャム」の数は減少しましたが、「決定」とともに、正当化または発明された言い訳のために部門テーブル内の常に最新の情報という形ではなく「ボーナス」が発生しました。魚なしとがんは魚です。







時間が経ちましたが、プロジェクトの実装はさまざまな理由で遅くなり、「決定」からの「ボーナス」はますます重要で苦痛になりました。 そして、「明るいアイデア」が頭に浮かびました-MySqlで小さなタブレットを作成したらどうなるでしょうか。







画像






たとえば、PHPで特定のインターフェイスを接続すると、悪くないプロジェクトのリストが表示されます。最も重要なことは、すべてのユーザーが同時に利用できるようになり、誰もが責任のあるデータを変更しても、悪用はありません誰かが既にスプレッドシートを開いているスプレッドシートで、何も保存できません。 安くて陽気な! 彼の部門長とのいくつかの協議の後、アイデアは「トップ」に知られるようになりました。 言われ、同意され、行われた。







アクセスについての未解決の質問があり、誰が今どこでプロジェクトを行うべきですか? その結果、「リスト」は機能で大きくなりすぎています。







当時の現在の指示からのスクリーンショットのカップル
画像

画像







この瞬間から、IT部門の長とその下のシステム管理者が文字通りひざの上に、そして数日で「多く」を行った場合、リーダーは6桁の額を突く豚に費やす必要があるのではないかと思い始めました。



一般に、その瞬間から、カルテブランシュは、プロジェクトの「ISUP」の下で開発されたビジネスプロセスに基づいた独自のプロジェクト管理システムの開発のために与えられました。







仕組みと仕組み



別のコンピューターが独自のシステムに割り当てられ、apache + php + mysqlが発生しました。



システムの中には、機能的なスタイルで書かれた普通のサイトがありました。

mysql_connectを介した接続。 幸いなことに、そのコードはすでに失われているため、その方法を示す例がなくても実行できます。



残念ながら、明らかな理由により最近の例を示すことはできませんが、趣味として、gitで小さなプロジェクトを作成しました(記事の最後にリンクがあります)。いくつかの機能を備えていない企業は、その実装も表示できません。



ただし、プロジェクトの実装については、gitaで説明します。





システムベースはmysqlで実行されます。



システム全体がイデオロギー的にプロジェクトを中心に「回転」します。 プロジェクトには一意の番号がありますが、プロジェクトを繰り返すことができる場合、つまりクライアントが同じサービスを再度注文する場合はどうなりますか? このため、番号は別のテーブルtbl_project_numに配置されます。このテーブルでは、繰り返しの数と回数







画像






また、プロジェクトでは、「デフォルト」の設定でそれを作成した人がいます-マネージャー。 マネージャー-特定の役割を持ち、特定のグループのメンバーであるユーザー。 役割はグループに集まります:



画像






実際、役割は専門であり、グループは部門です。







画像






さらに、各プロジェクトはステージに断片化されており、一度にアクティブにできるステージは1つだけですが、各ステージには、特定のシーケンスの有無に関係なく起動されるタスクがいくつあってもかまいません。これらのタスクは、ステージのステータスに関係しません。 このようなもの:









画像



受け取った合計:ステージを含むプロジェクト、およびプロジェクトステージに基づいて任命されたタスク。







プロジェクトの計画についても言及したいと思います。



画像



プロジェクト全体を計画し、半自動モードで起動できます。「プロジェクトをさらに転送する」ボタンをクリックする必要があり、ステージが期限切れの場合は理由を記述する必要もあります。 私はすぐに「すべてが1つのボタンであるべきだ」というリーダーシップの願いを思い出したいのですが、実際には99%のケースではそのように機能しません-常に何らかの「しかし」があります。 私たちの場合、これは会社のビジネスプロセス/プロジェクトの種類の特性によるものですが、ここで行うことはありません...







複数のプロジェクトが存在するか、タスクに関するメッセージが送信されたため、イベントログが作成されました。システムの類似物では、次のようになります。



画像



操作の原則は非常に簡単です。タスク、プロジェクト、タスクに関するコメント、プロジェクトでの通信のエントリを作成/変更するためのトリガーは、一般に、アラートを受信する必要がある場所で、データベースで「ハング」します。 特定のテーブルのデータベースに対してトリガーが起動されると、記録が書き込まれます。







画像






そして、それをジャーナルに表示したり、メールで送信したりすることができます(gitで実装したメールをまだ実装していないため、クラウンを使用します)。さらに、サブスクリプションを設定し、メールに送信するものと、どこでも無視するものを(でgitの実装はまだ実装されていません)。







実際、ここでは、個々のモジュールが実装された方法と理由に関する一連の記事を展開できます。 しかし、インターフェイスとその理由を説明するために、私は決してデザイナーではなく、私の意見は非常に主観的です。 ここで、PHPでの実装についてもう少し触れたいと思います。







システム全体は、MVCを使用してphpで記述されています(そして、それがない場合はどこですか?)。 誰かが彼らの最初のフォーラムを見た、誰かがゲストブックを見た、そして私はここにいる-私は小さくて軽いエンジンを見た。 「キラーフィット」、他のエンジンに関連して-いいえ。 他の場所と同様の機能:モジュールの作成、プラグインの作成機能、MVCを使用せずにモジュールを作成する機能-いくつかの注意事項はありますが、通常のスクリプト-クラスの使用は引き続き存在します:テンプレートエンジン、データベースの操作、構成など 個別のビルドを作成して使用できます。実際、設定で設定を切り替えたり、サイトへのセッションで設定を変更したりすることで、既製のサイトを作成できます。 箱から出してすぐにクラウンを操作することは可能ですが、これは実際には別の話です。







合計



すべてはいたずらと「スプレッドシートの一時的な交換」から始まり、プロジェクトに関連するファイルを保存したり、タスクやプロジェクトに対応したりするプロジェクト管理および計画システムに導入されました。 特定のオペレーティングシステムに縛られることなく、家の隅のようにシンプルで、ソースコードが「手元」にあり、状況によっては必要に応じてホームNASでも起動できます。 しかし、これは歌詞です。



システム要件:







  1. phpで動作するapache / nginx / webserver
  2. PHP 7
  3. MySQL 5.x + / MariaDB 10.x +
  4. 〜10 MBの空きディスク容量(ファイルストレージを除く)


おおよその実装は、記事の最後にあるリンクから表示/ダウンロードできます。

結果として得られるシステム(戦闘、gitに配置される類似物)を最高とは言えませんが、システム要件が魅力的であり、オープンソースでも無料であることを認めなければなりません。

現時点では、GitHubの趣味は趣味であり、得られた経験の一部を解決しています。定義により1人が山を移動する可能性は低いことは明らかですが、そのような状況で誰かを助けなければ、少なくとも方向性を与えるでしょう。



それが有用であることが判明した場合、私は非常に嬉しいです。 同時に、私は謝罪します:





私は批判を正当化することを非常に嬉しく思います。







サードパーティのリソース





PS :記事がモデレートされている場合、私は本当に挨拶し、前の部門長に感謝したいと思います-彼は間違いなく指示とテキストのスクリーンショットから私を認識します。 彼がいなかったら、彼が実際に私に教えたことを、いやいやながらも学ばなかっただろう。








All Articles