【プロジェクト戦闘:核酸検出プラットフォーム】第1章 リバースエンジニアリング

序章

プロジェクト戦闘シリーズを作成する準備をし、適度な難易度と適切な規模の代表的なプロジェクトをいくつか選択し、それらをさまざまな角度と深さから分析します。多くの初心者は、実践的なプロジェクトがないと不満を漏らしており、学校/機関で使用されている不適切な生徒管理、図書館管理、電子商取引モール、その他のプロジェクトについては何も目新しいものはありません。最近、仕事の都合で大学に実戦プロジェクトをまとめて持ち込んだのですが、その実戦プロジェクトを通じて経験も積めたので、今回は実戦プロジェクトを整理してみました。初心者の方の参考になれば幸いです。

このシリーズでは、あまりにも多くのテクノロジーのさまざまな使用方法を紹介するのではなく、プロジェクトが経験したすべての作業をゼロから紹介することに重点を置いています。多くの場合、あまり有用なテクノロジーは選択されません。例:MyBatisとでMyBatisPlus使用することを選択しますMyBatis。これは、初心者がいくつかのツールを披露するのではなく、問題を解決するための思考と基本的なスキルにもっと注意を払ってほしいと考えているためです。基本的な機能が使い果たされたら、より便利なツールを探すことを検討してください。

誰もが経験したことがある核酸検査ですが、今や核酸検査は核酸検査プラットフォームと切り離せないものになっていますが、プログラマーはこのプラットフォームをどのように実現するのか考えたことがあるでしょうか。

ボランティアとして核酸検査に参加することに興味があり、このプラットフォームについてはある程度理解しています。このプロジェクトは機能的には複雑ではありません。関連するデータベース テーブルは 20 もありませんが、ビジネス ロジックは連動しています。

同時に、それは複数の目的と複数の役割を伴います。初心者は、マルチターミナル プロジェクトの設計について表面的な概念しか持っていない可能性があります。

需要という観点から見ると、単純な追加、削除、変更、クエリではなく、ページ間に関連性があることが多いので、それほど退屈ではありません。

同時実行性が必要ない場合、プロジェクトは非常にシンプルになるため、初心者が練習するのに非常に適しています。

redis同時実行性を考慮すると、マイクロサービスやその他の最適化に非常に適しており、詳細な最適化も可能です。

さまざまな観点から見て、このプロジェクトは非常に優れた教材であると言えます。

そこで、このシリーズの最初のプロジェクトでは、リバースエンジニアリングの考え方を取り入れて「核酸検出プラットフォーム」を作りました。

プロジェクト戦闘:核酸検出プラットフォーム 第1章 リバースエンジニアリング

ここに画像の説明を挿入

この章の目的

プロジェクトのニーズ分析を完了する

ポイント:目に見える機能から目に見えない機能を推測する

プロジェクト概要

テスト プロジェクト プラットフォームは、Neusoft によって開発されたテスト プラットフォームであり、関連するトレーニング ビデオもインターネット上にあります。要件を明確に理解するには、トレーニング ビデオを注意深く見る必要があります。

https://www.bilibili.com/video/av596102734/?vd_source=cd85f68bf727f315e1776859a5694e1f

また、コレクターAPPを紹介する公式アカウント記事もあります

https://mp.weixin.qq.com/s/USOiDdhrOy0zxK3WjAH1kQ

このビデオは比較的初期のトレーニングビデオですが、実際にアップグレードされ、人物情報の収集と検出のための QR コードのスキャンに対応し、作業効率が大幅に向上しました。

ビデオを通して、このプロジェクトにはプラットフォームを使用する次のタイプの人々 (または役割) が関与していることがわかります。

  1. コレクター:APP核酸検査情報を収集するタスクを完了することによって
  2. 積み替え担当者:APP積み替えプロセス中に必要な情報収集タスクを完了することによって
  3. テスター: プラットフォームを通じてテスト結果を送信します
  4. 一般ユーザー (一般人): プラットフォームを通じて核酸検査結果を照会する 現在のアップグレード後も、一般ユーザーは引き続きプラットフォームを通じて核酸検査コードを生成し、核酸検査中に情報を収集し、核酸検査収集ポイントを照会する必要があります。公式アカウントやその他のプラットフォーム

需要分析

ソフトウェア開発を学ぶ学生なら最初にソフトウェアを解析する必要があることは知っていますが、このプロジェクトはリバースエンジニアリングによって開発されており、要件の一部はインターネットで検索した情報からすでに入手できているので、それらを整理するだけで済みます。より重要なのは、以下のフローチャートです。

リバースエンジニアリングとは何ですか?

この質問に対する答えは百度にありますが、少しわかりにくく、言葉としては高尚に聞こえますが、平たく言えば模倣です。そうです、リバース エンジニアリングは多くの分野で非常に不名誉なことであり、模倣や盗作と呼ばれることが多いのですが、ソフトウェア業界では、リバース エンジニアリングは学習改善や需要分析に不可欠なスキルであり、習得する必要があります。

ビジネスプロセス

トレーニングビデオのフローチャート

このフローチャートによれば、核酸検査の全体的な流れがわかりますが、私たち一般人は、少なくとも採取担当者、移送担当者、検査機関の手を経て、安全であることを証明する必要があります。また、全職員を対象とした核酸検査は都度数回実施されており、その度に多大な人的資源、物的資源、財政的資源が費やされており、信頼できる情報システムがなければ、情報のアップロードや配信だけで対応が困難になる可能性があります。人々は狂っている。

ただし、プラットフォーム全体のユーザーには、コレクターであれ積み替え担当者であれ、20 歳の若者や 50 歳以上の叔父や叔母など、多数の人々が関与しており、APP の設計ではシステムを考慮する必要があります。使いやすさ。したがって、このプラットフォームの機能は複雑ではなく、使いやすいものでなければなりません。いずれにせよ、需要分析では機能を列挙する必要がありますが、データからわかる目に見える機能を見てみましょう。

機能リスト:要求分析に非常に簡単かつ効果的な手法で、経験豊富な技術者であれば機能リストを見るだけでシステムの大まかな構造を把握できます。脳では、システム全体が瞬時に開発(ナオブ)されます。若手エンジニアは、関数をリストする方法を頻繁に練習する必要があります。

目に見える機能

ここでいう可視機能とは、研修資料や記事、アプリダウンロード後に表示されるインターフェースから抽出した機能ポイントを指し、大まかに以下の内容が含まれます。

回収スタッフ

  • 登録:収集担当者は多岐にわたるため、収集担当者の登録を容易にするために登録機能が公開されており、ボランティアと医療関係者は区別されています。

  • ログイン:

  • 収集ポイントを選択してください

    • 大規模な収集ポイントを選択する
    • 正規化されたスキャン サイト コード
  • ボックスコードをスキャンしてボックスを開けます

  • 試験管コードをスキャンして試験管を開きます

  • スキャンID

  • シールチューブ

  • 箱に封をします

  • パスワードの変更: この機能はプロセスでは使用できませんが、APPプロセス内では使用できます。

  • パスワードを忘れる

インターネットで見られる情報はこれらのコンテンツのみであり、これらは最初の大きなコンテンツにすぎず、他に機能はありませんので、それを補うしかありません。

プロセス全体のブレインストーミング

私たちが見てきたプロセスと機能はプラットフォーム全体のほんの一部であり、トレーニング ビデオのフローチャートは明らかに不完全であり、取得担当者に関連する部分のみを示しています。「この時点で質問したい場合は質問する必要があります。多くのことは当たり前のことのように見えますが、実際には裏で誰かがいます。例えば、核酸採取を行うとき、担当者は試験管をスキャンします」コードを入力して積み替えボックスのコードをスキャンします。ここで問題が発生します。

  • 試験管コードや箱コードのバーコードはどのようにしてできたのでしょうか? バーコードを印刷するときにプラットフォームと関係がありますか、またバーコードの印刷の責任者は誰ですか。

同様の問題は次のとおりです。

  • 収集ポイントには大量のデータがありますが、これらのデータはどのようにして得られるのでしょうか?
  • 登録すると、州、市、地区、通り、病院機関が自動的に表示されますが、これらのデータはどのようにして得られるのでしょうか?
  • 検査機関と採取担当者との関係はどうなっているのでしょうか?登録時にバインドする必要があるのはなぜですか?
  • 転送担当者の役割は何ですか?
  • 試験機関の受信担当者は、ボックスコードを受信するという 1 つの操作だけを行うようです。次に、テスト結果のデータもテスト機関によってアップロードされ、どのようにアップロードされたか、誰がアップロードしたか
  • 検査結果はエクセルでアップロードされていますが、任意のエクセルフォームを使用できますか?
  • テストにはコストが発生しますが、そのコストは誰が負担し、誰が受け取るのか、またコストはどのように計算されるのでしょうか?
  • 検査結果が陽性だった場合はどうなりますか? あらゆるレベルの政府職員は、自分たちが陽性反応を示したことをどのようにして知るのでしょうか?

このような問題は考えてみればたくさん考えられますが、これらの問題はアジャイル開発に当てはめればユーザーストーリーであり、プラットフォームが解決すべき問題とも言えます。

また、一部の問題については、システムの実行方法を検討するだけでなく、ソフトウェア システムがオフライン作業モードと組み合わせてどのように動作するかを設計する必要もあります。たとえば、次のとおりです。

  • 回収箱のコードや試験管のコードは何気なく印刷されていますか? これらのコードは印刷時にすでにデータベースに生成されていますか?

これらの思考と脳の補完の後、完全なソリューションが得られます。これには、ソフトウェア部分だけでなく、オフライン ワークフローも含まれる必要があります。したがって、フローチャートは次のようになります。

ブレーンストーミングのフローチャート

注: フローチャートを見るときは、その横にある要件の説明にも注意する必要があります。

目に見えない機能

脳の形成過程をまとめると、次のような目に見えない機能が得られます。

送迎スタッフ

  • 登録、転送担当者にも多くのボランティアが参加する必要がある、登録機能も必要である
  • ログイン
  • 封印後にボックスコードをスキャンします
  • 検査の確認

試験機関の受け入れ担当者

  • ログインするには、試験機関の専門性が高く、試験機関の職員である必要がありますが、一部の登録機能が公開されていない場合があるため、プラットフォームの運営者または試験機関によって割り当てられます。プラットフォーム事業者の責任で割り当てを補うことができます
  • 積み替えボックスのコードをスキャンします
  • 受信確認

試験機関の試験結果アップロード担当者

このタイプの担当者は、受付担当者と同じカテゴリに分類される可能性がありますが、バーコードの印刷や EXCEL テスト結果のアップロードなどの機能をコンピュータで使用する方が良いことを考慮すると、このタイプの担当者は分離する必要があります。

  • ログインとテスト結果のアップロードはより重要な機能である必要があり、ログインが必要であり、アカウントが登録されていてはなりません。とても重要なことだから。
  • EXCELテスト結果をアップロードする アップロードするEXCELファイルは決まったフォーマットになっており、適当にアップロードしたものは認識できません。というのも、データのエクスポート・ダウンロードのアップロードテンプレート機能や、EXCELのアップロード機能がパソコン上で利用される可能性が高いはずだからです。したがって、EXCEL テスト結果のアップロードは、受信者が使用する機能ではない可能性があります。
  • データアップロードテンプレートをダウンロードする
  • 検査記録の照会・統計については検査機関に手数料がかかることを知っておく必要があるが、この手数料は政府が負担しており、政府との精算に便利な検査数を集計するレポート機能が必要である。

プラットフォームオペレーター

事故がなければ、プラットフォームは 1 つの都市に展開されるはずであるため、プラットフォーム全体の運用管理を担当する組織が存在する必要があり、この運用者は特定の政府部門を担当する必要があります。従来のタイプの人員ではオペレーターの機能の一部が外れています。

  • ログイン
  • 保守試験機関、保守試験機関受付担当者、データアップロード担当者
  • メンテナンス回収拠点
  • ポジティブアラーム、この機能は間違いなく存在します、理由は聞かないでください
  • データ統計、検査機関による検査数のカウント、お金に関係する、理由は問わない

非機能要件

多くのエンジニアは、要件調査の段階でこの要件を無視します。機能要件はコードを移動する作業負荷を決定しますが、プロジェクトの貴重な作業量は、多くの場合、非機能要件によって決まります。例えば:

  • プラットフォームは、同時に 200,000 人がオンラインで使用できるようにする必要があります
  • クラッシュが発生した場合、サーバーは 30 分以内に復旧する必要があり、端末は引き続き作業を収集でき、サーバーがオンラインになった後、データは自動的に同期されます。

ご覧になったことがありますか、このような要件が 1 つだけでも、すべての機能要件開発の作業負荷に匹敵する可能性があります。

そこでプログラマーは、もし幸運にも将来需要調査を行うことができたら、非機能需要調査を行う必要があると尋ねました。

調査方法は実は非常に簡単で、非機能需要調査のアンケートを用意して一つ一つ質問するだけですが、もちろん顧客とのコミュニケーションの中で、投資額(時間、資金)について聞かれることもあります。これらのニーズに対応するためのアイデアを念頭に置いておく必要があります。後で時間があれば、非機能要件調査アンケートの記事を書きます。興味のある友人は迷わないでしょう。

このプロジェクトには、次のような非機能要件があると思います。

  • インターフェースはクリーンでエレガントで、エンターテイメントデザインはありません
  • 都市内のすべての国民の核酸の正常な使用をサポートできます。(人口は100万人から数千万人まであり、ほぼ桁違いです)
  • ページのインパクト速度は 1.5 秒以内です。(あそこに集まっているんです。APP一度に数秒なんてあり得ません。反応は速いはずです)
  • 安定したパフォーマンス、高可用性、APP端末もサーバーも簡単にクラッシュせず、12 時間以上継続して実行できます。なぜ 12 時間なのかというと、核酸検査担当者は日中働いているため、少なくともシステムが安定していることを確認する必要があります。日中は正常に動作し、問題が発生した場合は、核酸収集中断後のシステムを維持します。(大変な仕事ですか?プログラマーはこうやって残業します)
  • サーバーがクラッシュした場合でも、コレクターはAPP引き続き動作し、サーバーが回復すると自動的に同期されます。
  • サーバークラッシュの復旧時間は30分を超えません(時間が長すぎる、APP端末に蓄積されたデータが多すぎる、一度問題が発生して大量のデータが失われると、この問題は非常に厄介です)
  • ほとんどの Android スマートフォンの通常の使用をサポートできます
  • セキュリティの観点からは、少量のジャンク データは収集側で許可されますが、テスト結果は絶対に安全であり、盗まれたり改ざんされたりすることはできません。居住者の身元情報および電話情報は厳重に秘密として保管し、漏洩してはなりません。

そうですね、考えられるニーズはこれくらいです。この要件は決して低いとは言えませんが、それは不可能であり、非常に多くの人が関与するプラットフォームでは、安定性とセキュリティに対する非常に高い要件が必要になります。

ただし、ジュニアハンドトレーニング事業であれば、当面は検討しない、あるいは一部を検討するということになります。

技術的な困難の分析

フリーランサーや上司の場合、プロジェクトを受ける際には、プロジェクトの技術的な難易度を評価し、見積価格と工期を決定する必要があります。したがって、このステップはより重要であると言うべきです。

機能的な観点から見ると、プロジェクト リスト全体に問題はなく、データベースの CRUD に加えて、次の技術的な点のみがあります。

  • バーコードの印刷は、特に B/S モードで自分で行うのは非常に困難ですが、WEB 印刷には という非常に便利なものがありますlodup有料ではございますが、デモプログラムとしてご利用いただくことも可能です。
  • コードをスキャンすると、この点は検索すればわかりますし、これをサポートするクラス ライブラリも多数ありますが、実際、コードをスキャンするとコードを文字列に変換するだけで、ロジックは非常に単純です。
  • EXCELのインポートとエクスポート、まあ、有名なPOIはそれを扱うことができますし、POI最適化フレームワークを使用することも可能ですEasyExcel
  • 携帯電話認証コードにはサードパーティの携帯電話認証コード プラットフォームが必要ですが、それらはすべてAPIインターフェイスを提供しており、それは難しくありません。

OK 全体として、同時実行性と安定性の量を考慮しなくても、このプロジェクトはそれほど難しくなく、難しい部分を完了できる対応するサードパーティ コンポーネントがあります。興味のある学生は、私に3回連絡して、一緒に核酸検査プラットフォームの謎を解き明かしましょう。

おすすめ

転載: blog.csdn.net/aley/article/details/127938623