「ソフトウェアエンジニアリング」コースの4つの実験(「実現可能性調査とプロジェクト計画」、「要件分析」、「システム設計」、「システム実装」)の実験レポート

実験1「実現可能性調査とプロジェクト計画

実験時間:2   時間 実験場所:任意 実験日:12月15日                              

1. 実験の目的

  1. ソフトウェアプロジェクトの実現可能性調査とプロジェクト計画の基本原則と方法を理解する。
  2. 習熟: 実現可能性調査やプロジェクト計画のための Visio などのツール。

2. 実験内容

図書館管理システムにより、書籍の分類と管理が容易になり、借り手の時間を制限できるため、書籍をより効率的かつ安全に借りることができます。作業効率が向上し、操作が簡単で、データの更新とクエリを効率的に実行でき、ある程度の自動化を実現できます。図書館管理システムの主な機能は、書誌管理、図書館カード管理、本の貸し出しと返却、照会、支払いです。書誌管理は主に管理者の本人確認(書誌追加、書誌削除など)であり、図書カードの管理は登録、再発行、紛失届、停止、キャンセルの5つに分かれています。 ; 本の貸し出し・返却: 本の貸し出し、本の返却など 書籍; 照会: 図書の照会や貸出時間の支払いは、主に延滞金の計算と料金の支払いを行います。

図書館管理システムのシステムフローチャートを図1に示します。

 

システムフローチャート

システムの実現可能性調査を行い、Visioを使って図書館管理システムのシステムフローチャートを描くと同時にシステム開発計画を策定し、ガント図やタイムライン図を用いてスケジュールや段取りを記述してみましょう。

3. 実験方法:

  1. ライブラリ管理システムの開発分析のために高速アプリケーション開発モデル (RAD) を実行します。
  2. 実験内容、つまりプロジェクトのニーズに応じて、プロジェクトをモデル化して分析します。
  3. Visio ツールを使用して、図書館管理システムのシステム フロー図、ガント図、タイムライン図を作成します。
  4. ステップ 3 で作成した各モデルを使用して、プロジェクトのさらなる開発実現可能性分析と計画分析を実行します。

4. 実験手順( Visio2003 )

タイムライン図を描くための基本的な手順:

  1. Visio メイン メニューから [ファイル]/[新規]/[プロジェクト プラン図]/[タイムライン] を選択し、タイムラインを選択して図面ページにドラッグします。
  2. 形状テンプレート内のマイルストーンを選択し、図面ページにドラッグします。
  3. マイルストーンの設定ダイアログでマイルストーンの日付と日付形式を設定します。
  4. 形状テンプレートでスペーサー ブロックを選択し、図面ページにドラッグします。
  5. 間隔ブロックの設定ダイアログで、間隔ブロックの開始日と終了日、および日付形式を設定します。
  6. タイトルを設定します。
  7. 今日の時刻を設定します。
  8. 背景を設定します。
  9. 経過時間を設定します。

ガント ダイアグラムを作成するための基本的な手順は次のとおりです。

1. ガント ダイアグラムのオプションを設定します。

2. 労働時間を設定および構成します。

3. タスク名、開始時刻、終了時刻、またはタスクの期間を設定します。

4. タイトルなどを設定します。

5. 実験結果

図書館管理システムのフローチャートは次のようになります

図書館管理システムのフローチャート

 

図書館管理システムのフローチャート - 学生モジュール

図書館管理システムのフローチャート - 管理者モジュール

 

図書館管理システムのガント ダイアグラムは次のように描画されます

 

図書館管理システムのガントダイアグラム

図書館管理システム開発計画のタイムライン図が作成されます

図書館管理システム開発計画のタイムライン図

6. 実験の結論

この実験は主に図書館管理システムの開発計画を分析し、モデルを描くことでより効率的な開発を行うことを目的としており、主な成果としては5番目に示した図書館管理システムのフローチャート、ガント図、タイムライン図が挙げられます。

描画された 5 つのモデルの分析を通じて、ライブラリ管理システムの開発実現可能性と具体的な開発プロセスがさらに確認されます。プロジェクト開発における多くの予測不可能なものを予測可能なものに変えることは、プロジェクトの具体的な実装に役立ちます。

7. 実験の概要

この実験を通じて、システムフローチャート、ガント図、タイムライン図など、プロジェクトのモデル化と分析を主に学びました。各モデルに基づいて、プロジェクトの開発と実際の実装にさらに役立ちます。

この実験の過程で遭遇した主な問題は、Visio ツールの使用に慣れていないことと、多くのモデルのさまざまなコンポーネントを設計する方法がわからないため、モデルには特定の欠陥があることです。

解決策は主に、教師がアップロードしたPPTやビデオを自主学習に使用するか、Googleで検索して何度も解いてみることです。

この実験の主な欠点は、各モデルが包括的ではない可能性があること、特定のコンポーネントが欠落していること、および一部の設計が完全に計画されていない可能性があることです。問題の原因は Visio 描画ツールの使用量が少なすぎることです。今後も学習と演習を強化し、各モデルを改善していきます。

初めて Visio を使用したとき、このツールの威力を実感します。以前はEdrawアイコンを使用していましたが、画像を保存する方法はスクリーンショットを使用することであり、非常に不便で効果が得られませんでした。Visio の方が便利で、さまざまな形式で保存できます。さらに、よく知られたフローチャートや、ガント チャートなどのソフトウェア エンジニアリングの専門的な図を含む、さまざまな図を描画できます。

実験2 分析が必要

実験時間: 2   実験場所:任意の 実験日: 12 月 18 日                           

1. 実験の目的

  1. ソフトウェア プロジェクト要件分析の基本原則と方法を理解します。
  2. マスター: ユースケースモデリング手法、データフローモデリング手法、IDEF1X データモデリング手法。
  3. マスター: モデル図を描画するための Visio/EA およびその他のツール。

2. 実験内容

1. 以下の説明からデータ フロー図を描くための 4 つの要素を見つけて、Visio を使用してデータ フロー図を描いてください。

トレーニング センターはコンピューター管理システムを開発したいと考えています。その業務内容は、学生から送られてきた手紙を収集・分類した後、いくつかの異なる状況に応じて手紙を処理することです。

(1) 登録済みの場合は、登録担当者に登録データを送信し、コースファイルをチェックして満席かどうかを確認し、学生ファイルとコースファイルに登録し、レポートを発行します。財務部門、財務スタッフは学生に請求書を発行します。

(2) 受講したコースをキャンセルしたい場合は、キャンセル担当者がコース ファイル、学生ファイル、アカウント ファイルに対応する変更を加え、学生にキャンセル フォームを渡します。

(3) 支払いが完了した場合、財務担当者が口座ファイルに登録し、学生に料金領収書を渡します。

2. 以下のような簡単なコース選択システムがあり、言葉で説明すると、IDEF1X 図と UML クラス図を使用してシステムの情報モデルを記述し、Visio または EA を使用して IDEF1X 図と UML クラス図を描画します。

1) 基本的な説明: このシステムには、大学、教師、コース、学生などのエンティティがあり、その属性は次のとおりです。

大学: 大学番号、大学名、住所、連絡先番号、学部長などの基本属性。

教師: 教師番号、名前、性別、年齢、専門職名、大学などの属性。

コース: コース番号、コース名、コースの性質 (必須/選択)、単位、コース提供大学、およびその他の属性。

学生: 学生番号、名前、性別、年齢、入学時期、大学、その他の属性。

指導クラスエンティティ: 指導クラス番号、クラス教師、コース、授業期間、授業時間、授業週。

2)機能要件は次のとおりです

(1)各エンティティの基本情報の追加、削除、変更、照会といった基本情報のメンテナンスを完了できる。

(2) 授業科目の編成:教員向けの授業を一学期に編成します。教師は 1 学期に 1 つ以上のコースを教えることもできません。コースは複数の教師が教えることもできますが、異なる教師が教えるクラスは異なる指導クラスに属する必要があります。

(3) 学生がコースを選択する: 学生は指導要件に応じてコースを選択します。履修を選択する前に、履修選択の対象となるか(延滞していないか、過去の履修を修了して合格しているかなど)を確認してください。1人の学生が複数のコースを選択することも、1つのコースを複数の学生が受講することもできます。 、ただし、学生は同じコースを選択することはできません。コースの異なる指導クラス。学生がコースの特定の指導クラスを選択し、次に同じコースの別の指導クラスを選択した場合、システムはエラー プロンプトを表示します。数を数えます。選択した指導クラスの受講生の数; 指導クラスを選択する 定員数に限りがある; コース選択後、コース選択が不合理であると学生が判断した場合は、コース選択を中止または再選択することができます; コース選択完了後、カリキュラムを印刷する機能が提供されるべきである。

3. Visio または EA を使用して、図 2 に示すユースケース図を描画してください。

 

図 2 ユースケース図

3. 実験方法:

Visio2016ツールを使用して、データ フロー図、UML 図、IDEF1X 図を設計します。

4.実験手順(visio20 16 )

データ フロー図を作成する基本的な手順は次のとおりです。

  1. Visio を開き、「ファイル/新規/ソフトウェアとデータベース/データ フロー モデル図」に移動します。
  2. まず、モデル エクスプローラーでプロセス、データ ストレージ、インターフェイスを確立します。
  3. 次に、関連する要素を図面ページにドラッグします。
  4. 最後に、必要なデータ ストリームを追加します。
  5. 上記の手順を繰り返して、データ フロー モデリングを完了します。

IDEF1X 図を作成する基本的な手順:

  1. メインメニュー「新規/データベース/データベースモデル図」を選択します。
  2. データベース モデル図を開きます。
  3. [データベース]メニューの[オプション]をポイントし[ドキュメント]をクリックします。
  4. [全般]タブをクリックし[シンボル セット]の横にある[IDEF1X] または[リレーションシップ]をクリックして[OK]をクリックします。

ユースケース図を作成する基本的な手順は次のとおりです。

  1. Visio を開き、「ファイル/新規/ソフトウェアとデータベース/UML モデル図」に移動します。
  2. ユースケース モデルの最上位パッケージを右クリックします。
  3. [作成]→[ユースケース図]を選択します。
  4. 「モデル エクスプローラー」で空のユースケース図の名前を変更します。
  5. システム境界を、「図形」で設定したユースケース図形からユースケース図にドラッグします。
  6. アクターをモデル エクスプローラーからユース ケース図にドラッグします。
  7. ユースケースを「モデルエクスプローラー」からユースケース図にドラッグします。
  8. ユースケース図でアクターとユースケース間の関係を確立します。

5. 実験結果

実験出力データと結果を記録します。

1. 実験 1 のデータ フロー図は次のとおりです。

 

2. 実験 2 の UML 図を以下に示します。

 

3. 実験 2 の IDEF1X ダイアグラムは次のとおりです。

 

4. 実験 3 のユースケース図は次のとおりです。

 

 

 

購買担当者はシステムにログインし、注文の作成、注文のキャンセル、注文の記入、見積もりの​​確認、要求フォームの送信を行うことができます。

  顧客は注文を行うことができます。

  部門長は報告書に署名できます。

  財務担当者は、財務データのクエリ、基本価格リストの確認、販売前フォームの確認、販売前注文の確認を行うことができます。

  請求者は、文書や船荷証券などの表示可能な情報を印刷できます。

  倉庫担当者は、倉庫全体の保管および配送状況を管理し、保管オーダーの発行、保管オーダーのレビュー、データの印刷およびエクスポートなどを担当します。

  物流担当者は、注文の処理、輸送注文、保管注文などの表示可能な情報を印刷できます。

6. 実験の結論

この実験は主に、データ フロー図、UML 図、IDEF1X 図などを含むプロジェクトの要件を分析およびモデル化することを目的としています。一連のモデリングを通じて、要件をより深く理解し、プロジェクト計画の開発を促進することができます。

大きなものから小さなものまで、難しいものから簡単なものまで、これがエンジニアリングの考え方です。特にニーズを分析する場合は、最初から最後までやり遂げる必要があります。ユーザーのニーズを理解し、理解したいことを明確かつ簡潔に表現することは簡単ではありませんが、非常に重要です。ユーザーのニーズが不明確であったり、表現方法が理解できなかったりすると、必然的に不適切な製品開発につながるため、根本原因と需要の分析から始める必要があります。

7. 実験の概要

この実験を通じて、私は主に、データ フロー図、UML 図、IDEF1X やユース ケース図などのプロジェクトで一般的なモデルを描画し、モデルを通じて要件を抽象化し、気になる部分を取得することを学びました。それはプロジェクトの進行に有益です。

実験で直面した主な問題は、IDEF1X エンティティの分類方法、エンティティ間の関係をどのように定義するかなど、モデル描画の注意事項がよく理解されていないことです。解決策は主に書籍を繰り返し読み、事例分析を行うことで解決されます。続いて関係の一部をモデルに表示する方法がわかりません。主にクラスメートとのコミュニケーションで解決します。それでも解決できない場合は、先生にアドバイスを求めます。

主な改善点は、一部の要件が指定モデルで表示できないこと、今後他のモデルでの表示も検討すること、また、ユースケース図の関係性が完全に表示されていないため、さらなる最適化が必要であることです。 。すべてのユーザーのニーズを 1 つの図に示すことができないのは避けられません。説明を補助するために別の写真や写真のグループを使用することもできますが、この説明の効果は限られています。ある物事を説明するために 100 枚の写真と 1000 語を使用し、その後他のものを使用して説明を説明すると、冗長性へ。要件を説明するときは能力に注意し、表現したい問題やユーザーの真のニーズを正確に説明する正確な説明フォームを使用します。ソフトウェア エンジニアリングにおけるデータ フロー図、UML 図、IDEF1X、およびユースケース図は、そのような簡潔な表現です。


実験3 システム設計

実験時間:2   時間 実験場所:任意 実験日:12月20日                         

1. 実験の目的

  1. マスター:構造化データフロー設計技術、オブジェクト指向設計技術。
  2. マスター: ソフトウェア構造図を描くための Visio ツール。
  3. マスター: UML モデル図を描画するための EA または Visio ツール。

2. 実験内容

1. 実験 2 では、構造化設計手法を使用してトレーニング センター管理システムを設計し、Visio を使用して対応するソフトウェア構造図を作成してみます。(オプション)

2. 室内断熱システムの説明は次のとおりです。

メインスイッチが「暖房」状態にある場合、断熱システムのコントローラーはボイラーのオンとオフを切り替え、燃料流量とボイラーシステムの燃焼状態を監視し、室内への熱流を調整します。 。室内温度が ( T r -2 ) 度を下回ると、コントローラーはボイラーを起動します。ここで、T r はユーザーが設定した理想的な室温です。ボイラーの起動プロセスは次のとおりです。

( 1 ) コントローラーはボイラーのモーターに信号を送信します。

( 2 ) コントローラーはモーターの速度を監視します。モーターが通常の動作速度に達したら、点火を開始し、オイルバルブを開きます。

( 3 ) コントローラーは水温を監視し、 水温が所定値に達すると 信号を送り水循環バルブを開きます。部屋中にお湯が循環し始めます。

( 4 ) 異常が発生した場合、燃料流量インジケータと光センサーがコントローラーに信号を送信します。この時点で、コントローラーはシステムをシャットダウンする信号を送信します。

( 5 ) 室内温度が ( T r -2 ) 度に達すると、コントローラーはまずオイルバルブを閉じ、 5秒遅れてボイラーモーターを閉じます。

システムは次の制約を満たす必要があります。

(1) ボイラーの再始動は停止後5秒間遅らせなければなりません。

(2)メインスイッチを閉じた後、または油弁を閉じた後、5秒以内にボイラーを停止するように指示してください。

これに基づいてシステムを設計し、Rational Rose を使用してコントローラーの状態図を描画し、シーケンス図を使用してボイラーの起動プロセスを記述してみます。

3. 実験方法:

  1. 実験方法は主に Visio ツールを使用してソフトウェア構造図、状態図、シーケンス図を描画することです。
  2. 実験の原則は、トピックとグラフィックの要件に従って描画することです。
  3. 実験手法は Visio 描画です。
  4. 実験計画は、まずトピックの要件に従ってトピック内の要件をマークし、次に描画するグラフィックスの注意事項を記録し、その後、初稿を描画します。初稿が描画された後、重要なポイントを確認します。グラフィックスを調整し、最後にグラフィックス表示を最適化します。

4. 実験手順

ソフトウェア構造図を作成する基本的な手順は次のとおりです。

1. まず関数/サブルーチンを追加します。

2. 条件付き呼び出しを追加します。

3. 次に、呼び出し接続を追加します。

4. 最後に、コールラインのデータフローまたはフラグフローを追加します。

EAがUML 図を構築するための基本的な手順は次のとおりです。

1. EA を開始し、新しいモデルを作成して、モデルを保存します。

2. 特定のビューでモデルを作成します。

5. 実験結果

実験出力データと結果を記録します。

実験2におけるトレーニングセンター管理システムのソフトウェア構成図は以下のとおりです。

コントローラーの状態図は次のようになります。

 

 

ボイラー起動処理のシーケンス図を以下に示します。

 

6. 実験の結論

実験データと結果を分析して説明し、実験結果と結論を示します。

この実験は主に、ソフトウェア構造図、状態図、シーケンス図などを含むプロジェクトのシステム設計を目的としており、一連のモデリングを通じてプロジェクトの実装プロセスをより深く理解し、プロジェクト計画の策定に役立てます。

    実験結果のスクリーンショットについては、5 番目のポイントを参照してください。「メインスイッチが加熱」状態にある場合、保温システムのコントローラーはボイラーのオンとオフを切り替え、燃料流量とボイラーシステムの燃焼状態を監視し、熱流量を調整する責任があります。室内温度が ( T r -2 ) 以下に低下すると、コントローラーはボイラーを始動します」 このプロセスがわかりやすく説明されています。同時に、実現の形と手順も示されます。一目で分かり、その後のステップの実現や、その後の人材の育成・活用が容易になります。上流と下流を接続することは、エンジニアやデザイナーが直面しなければならない命題です。この命題をうまく処理することによってのみ、私たちは信頼され、責任を負うことができます。

7. 実験の概要

この実験を通じて、プロジェクトを体系的に設計し、システム全体を抽象化し、その後のプロジェクトの展開に役立つ、気になる内容を抽出する方法を主に学びました。ソフトウェア アーキテクチャ図は主にプロジェクトの主要なフレームワークを示し、プロジェクト全体の分析と計画に役立ちます。アクティビティ図とシーケンス図は主にシステムのさらなる分析に役立ち、実際の開発に役立ちます。システム。一言で言えば、メリットがたくさんあります。

実験で遭遇した問題は主に、グラフィックの構成要素が十分に明確ではないことですが、これは書籍やネットワーク資料を参照することで解決できます。また、一部の内容が明確に表現できないことは、授業後にクラスメートとコミュニケーションをとることで解決できます。

この実験の欠点は、主にグラフ内の関係がよく理解できていないことと、ところどころに誤差がある可能性があることです。


実験4 システム実装

 

実験時間:2   時間 実験場所:任意 実験日:12月25日                           

1. 実験の目的

  1. マスター: システム実装のための関連テクノロジーと関連ツール。

2. 実験内容

1. 図 3 に示すコース管理オブジェクト クラス図を実装してみます。Java を使用してコードを記述し、Eclipse で実装し、JUnit フレームワークを使用して特定の Java クラスをテストします。

 

図 3 クラス図

2. Web サイトの場合は、Selenium、SilkTest、または SilkPerformer を使用して、機能テストとパフォーマンス テストをそれぞれ実行します。(オプション)

3. 実験方法の要件:

  1. 学生はプレビューレポートを完了し、実験内容を理解した後にのみ、コンピュータ実験のために研究室に入ることができます。実験は 1 人のグループで行われ、学生は独立して実験を完了します。
  2. 学生は問題を分析し、問題を解決するプロセスの説明に慣れます。コンピュータ実験の過程を記録することが義務付けられており、学生は講師の承認を得た後にのみ研究室を離れることができます。
  3. 実験終了後は実験報告書を提出してください。
  4. 実験プロセスは講師によって監督され、講師の手配と監督に従います。
  5. pycharm ツールと Python コードを使用してコース管理システムを実装します。
  6. Python の doctest や Unittest などのテスト ツールを使用して、システム内のコードをテストします。

4. 実験手順

1. [ウィンドウ] メニューの [設定] を入力し、Java サポートを選択します。

    1. インストールされている JRE を検出します。
    2. ワークベンチのオプションを設定します。
    3. 新しいプロジェクト オプションを設定します。
    4. Javaエディタをセットアップします。

2. [ファイル] -> [新規] -> [プロジェクト] を選択し、ポップアップ ウィンドウから [Java] -> [Java プロジェクト] を選択して、[次へ] をクリックします。

3. プロジェクト名を入力し、プロジェクトが保存されるファイル ディレクトリを決定し、「完了」をクリックすると、Java パースペクティブの「エクスプローラー」に作成されたプロジェクトが表示されます。

4. 新しく作成したプロジェクトを選択します。

5. ツールバーの「Java クラスの作成」ボタン (C マーク付き) をクリックします。

6. ポップアップ ウィンドウにクラス名を入力し、関連するプロパティを設定します (たとえば、 public static void main(String[] args) を選択し、「完了」をクリックすると、Java 編集ウィンドウが自動的に開きます。

7. [ウィンドウ] メイン メニューで [設定] を選択します。

8. ポップアップ メニューから Java メニューを開き、[クラスパス変数] をクリックします。

9. [新規] をクリックし、ポップアップ ダイアログ ボックスで junit.jar のパス情報を設定し、[OK] をクリックします。

5. 実験結果

実験出力データと結果を記録します。

先生のクラス:

 

もちろんクラス:

管理者クラス:

生徒のクラス:

6. 実験の結論

実験データと結果を分析して説明し、実験結果と結論を示します。

注: プログラムがある場合はプログラムのソース コードが必要です。グラフがある場合は、スクリーンショットと対応するテキストの説明と分析が必要です。

コードは以下のように表示されます。

#include <iostream>

using namespace std;



class Teacher

{

    /*

    封装老师的相关信息

     */

public:

    void __init__(struct self,int name,int age,char admin)

    {

        self.name = name;

        self.age = age;

        self.__assets = 0;

        self.create_time = time.strftime('%Y-%m-%d %H:%M:%S');

        self.create_admin = admin;

    }



    void gain(struct self,int cost)

    {

        /*

        增加资产

        :param cost: 增加的数量

        :return:

         */

        self.__assets += cost;

    }

    void decrease(struct self,int cost)

    {



        /*

        减少资产

        :param cost: 减少的数量

        :return:

         */

        self.__assets -= cost;

    }

} ;



class Course

{

    /*

    课程相关信息

     */

public:

    void __init__(struct self,char course_name,int cost,int teacher_obj,char admin)

    {



        self.course_name = course_name;

        self.cost = cost;

        self.teacher = teacher_obj;

        self.create_time = time.strftime('%Y-%m-%d %H:%M:%S');

        self.create_admin = admin;

    }



    string have_lesson(struct self)

    {

        /*

        课程上课,自动给相关联的任课老师增加课时费

        :return: 课程内容返回给上课者

         */

        self.teacher.gain(self.cost);



        int content = random.randrange(10, 100);

        char r = time.strftime('%Y-%m-%d %H:%M:%S');

        string temp = "课程:%s;老师:%s;内容:%d;时间:%f" % (self.course_name, self.teacher, content, r);

        return temp;

    }

    void absence(self)

    {

        /*

        教学事故

        :return:

         */

        self.teacher.decrease(self.cost * 2);

    }

} ;



class Admin

{



    void __init__(struct self)

    {



        self.username = None;

        self.password = None;

    }

    int login(struct self,char user,char pwd)

    {

        /*

        管理员登陆

        :param user:

        :param pwd:

        :return:

         */

        if (self.username == user && self.password == pwd)

            return 1;

        else

            return 0;

    }



    void register(struct self,char user,char pwd)

    {

        /*

        管理员注册

        :param user:

        :param pwd:

        :return:

         */

        self.username = user;

        self.password = pwd;



        path = os.path.join(settings.BASE_ADMIN_DIR, self.username); //管理员目录

        pickle.dump(self, open(path, 'xb'));     //将管理员对象写入文件

    }

} ;



class Student

{

    /*

    学生相关信息

     */

    void __init__(struct self)

    {

        self.username = None;

        self.password = None;



        self.course_list = [];

        self.study_dict = {};

    }

    void select_course(struct self,char course_obj)

    {

        /*

        学生选课

        :param course_obj:

        :return:

         */

        self.course_list.append(course_obj) ;//将课程对象添加进课程列表

    }



    void study(self, course_obj)

    {

        /*

        学生上课

        :param course_obj:

        :return:

         */

        class_result = course_obj.have_lesson();  //获取学生上课信息



        if( course_obj in self.study_dict.keys())  //key:课程对象 value:上课信息列表,是列表格式



            self.study_dict[course_obj].append(class_result) ; //将上课信息列表添加进上一次的列表中

        else

            self.study_dict[course_obj] = [class_result, ] ;  //创建该课程对象的键值对

    }



    void login(struct self,char user,char pwd)

    {

        /*

        学生登陆

        :param user:

        :param pwd:

        :return:

         */

        if( self.username == user && self.password == pwd)

            return 1;

        else

        return 0;

    }



    void register(struct self,char user,char pwd)

    {

        /*

        学生注册

        :param user:

        :param pwd:

        :return:

         */

        self.username = user;

        self.password = pwd;



        path = os.path.join(settings.BASE_STUDENTS_DIR, self.username);  //学生目录

        pickle.dump(self, open(path, 'xb')); //将学生对象写入学生目录

    }

};

上記のクラスはC++で定義されており、コードのチェックを行うことで、考えられるバグをできるだけ早く取り除くことで、後段のバグ解決にかかるコスト(時間コスト、人件費など)を削減することができます。

7. 実験の概要

今回の実験では主にC++関連の技術を使ってクラスを定義する方法を学びましたが、実験中に最初に直面した問題は、実験内容にあるUML図のコードをどのように実装すればよいのか分からないことでした。時間を決めてクラスメートと話し合って実験を進めます。

私たちが日常的に使用している教育行政システムはこのようにして構築されており、非常に有益であることがわかりました。教育管理システムでは、私のすべてのクリックやスライドが機能の実行に相当します。

プログラムは人間を理解できませんが、プログラムは人間に役立つことができます。このような複雑なシステムを一つ一つ積み上げたプログラム。逆に言えば、このような大規模で複雑なシステムはプログラマーによって一つ一つ構築されます。家を建てるようなものです。

実験での改善点は主にプロジェクトのコードの最適化が必要で、クラス定義はできたもののシステムとしては実現できていないのが残念です。

実現可能性調査、需要設計、システム設計、システム実現に至る 4 つの実験は、互いに密接に統合されていますが、互いに異なり、階層ごとに進行します。一通り終えた後は、さまざまなチャートの書き方や表現方法を学び、システムの設計や実装についても正確に把握・理解することができました。これは今後の勉強や人生に役立つものであり、今後ソフトウェアエンジニアリングの業界には携わることはありませんが、この学期の出会いや出会いは私の残りの人生に役立つものとなります。先生と、ソフトウェア エンジニアリング システムに貢献してくれたソフトウェア エンジニアリングの科学者たちに感謝し、私は深く感動し、ショックを受けました。

ソースドキュメント、
プライベートチャット、有料。

https://nyzhhd.github.io/zsmをよろしくお願いします icon-default.png?t=MBR7

おすすめ

転載: blog.csdn.net/m0_51738372/article/details/128678963