ハードウェアエンジニアは8ソフトウェア設計のスキルを知っておく必要があります

     嵌入式系统设计不仅要了解硬件还应该了解它与软件之间的相互影响和作用。硬件设计需要一定的设计范例,这点对于软件设计却不那么适用。如何从单纯的硬件设计过渡到硬软结合的设计,在你着手开发软件时需注意以下八个软件设计技巧。

  
制御フローチャートの1デザイン

        あなたは助けるが、エンジニアはソフトウェアにこの手順を開発する際にコードを書くために開始することはできません。この考え方は、単に模式的には、PCBを描くしようとして開始するように完了していない前に。コードを書く衝動を抑制するために、ソフトウェアを開発するために始めたとき、それは、構造設計ソフトウェアのフローチャートに置き換える必要があり、それは非常に重要です。これは明らかに、所望のように設計された様々なハードウェア・コンポーネントをリストする回路図のように、各ソフトウェア開発に必要なコンポーネントのフローチャートを提示することができます。全体として、プログラムを作るために行うことができます大幅に良く組織され、また、長い開発サイクルは、このように退屈なデバッグを減らし、時間を節約する努力をデバッグを占めて減少するであろう。

2.ステートマシンの制御プログラム

        プロセス・ステート・マシンは、20世紀の最高のソフトウェアの発明の一つです。アプリケーションは、一般的に、各状態は、特定のプログラム分岐を制御する、異なる複数の状態に分割されています。ステートマシンは、異なる励起によって制御状態に応じて内部状態及び遷移を含みます。ステートマシン設計ソフトウェアを使用したメカニズムが理解しやすくかつ容易モジュラー保守性ソフトウェアの開発を可能にします。どこでも例のステートマシン理論とアルゴリズム。

3.グローバル変数を使用しないでください

        最後の関数型プログラミングでは、プログラマは関数を使用してプログラムを書き、彼らの唯一の目標は、プログラムの構造や再利用プログラムに関係なく、可能な限り速く実行することです。グローバル変数のスコープ変数を使用してこのような手順のスタイルは、不注意なリスクを修正するための他の機能を引き起こします。このような変数は、占領し、何回も書き換えています。今日では、オブジェクト指向プログラミング、メンバ変数は、アクションの最小範囲内で定義され、再カプセル化された複合値および乱用を回避します。グローバル変数の使用を最小限にするために提案され、それが記述するためにC言語のキーワード「のextern」を使用して、必要です。

4.モジュラーデザインコンセプトを最大限に活用

        あなたが配信を遅らせ、予測期間を超えた可能性が最も高いプロジェクトのエンジニアの一部を依頼した場合、その答えは、ソフトウェアのサイクルことでなければなりません。ソフトウェアは、開発し、維持するために、多くの場合、複雑で困難である場合は特に1つのファイル内のプロジェクトのアプリケーション、またはファイルのいくつかの緩い構造。コードの再利用やソフトウェアの保守を容易にするためとソフトウェアの複雑さを軽減することを強くお勧めしますレベルのプログラミング言語は、モジュールの性質を果たし、ユーティリティ関数は、プログラム構造の独立したモジュールとして分離しました。この方法は、共通の機能が含まれており、一般的な宣言は、それが簡単ではないだけでは、コードの品質を向上させることができ、テストの後の段階で時間コストを節約し、他のコードで再利用することができ、定義では、プログラマが作成してみましょう。

 5.割り込みサービス・イベント

        割り込みサービスイベントは、簡潔なプロセッサ割り込みプログラムが周辺処理トリガーの中断を要求するためのメカニズムを支持して実行されている保たれています。プロセッサ割り込み要求が実行される具体的な状態で中断されたプログラム(スタックに次の命令のセグメントアドレス、オフセットアドレス及びプログラムステータスレジスタ、時にはいくつかのスタックレジスタの値)を保存し、オーバーヘッドの多くを必要とサービスルーチンを中断し、その後(スタックレジスタを回す)ブレークポイントの回復を続け、それは非常に高速なプロセッサのオーバーヘッドですが、これはまだ検討する必要があるが。一般的には、メインプログラマは常に実行時間を中断したいとの競合を避けるために最小限に抑えています。これは、割り込みサービス・イベントが短く、シンプルでなければならないことを意味します。あなたは割り込みルーチン内の関数を呼び出すことはできません。また、あなたが割り込みイベントを処理する必要がある場合は、割り込みサービスルーチンは、例えば、バッファにロードデータは、フラグが設定され、最小要件を満たし、かつ読書に対処するためのメインプログラムを聞かせする必要があり、今回は特に複雑であるか、長い時間がかかりますデータ。作業サイクルこうしたプロセッサのほとんどは、割り込み処理プログラムではありません。

 プロセッサ6.サンプルコードを使用します

        ハードウェア設計のための試験装置、延伸前のボードに標準テスト回路のヘルプエンジニアが回路の特性を理解しています。同じことは、ソフトウェア設計、半導体メーカーの試験サンプルプログラムエンジニアは、各部分がどのように機能するかを体験を提供するために、マイクロプロセッサの各部分の通常の機能に適用することができます。したがってソフトウェアの組織構造は、設計における事前及び問題に予測することができます。完了の最初の数時間に比べて製品の設計における潜在的な障害物がより科学的かつ合理的な問題を特定、事前に決定します。これは、コードは通常、モジュール式の製造業者によって供給され、必要な変更は、直接、実際のソフトウェアを使用することは困難であるやるされていないことは注目に値します。

の複雑さの制御機能

        「それは単純な馬鹿をしてください」という意味エンジニアリングデザインの「KISS」と呼ばれることわざは、あります。タスクまたは機能は非常に複雑であり、簡単で効果的な方法は、いくつかのシンプルなサブタスクにそれを打破するために、最も複雑なタスクのいくつかに対処する上で、間違って行くではない困難であるすべての細部に注意を払うことは困難です。複雑な関数を記述するためにエンジニアが一度に理解することができるとき、あなたは明らかに検討する価値があり、元のデザインのアイデアを示すことができない、一定期間後にプログラムを維持する必要があるかもしれません。以下のような機能の複雑さを測定するための技術がたくさんあります「サイクルの複雑さ。」経験は、サイクル機能の複雑さが10より良い以下でなければならないことを教えてくれる。

8.詳細なドキュメント

        ソフトウェア開発の焦点での激しい競争の中で簡単に作成およびデバッグコードに限定して書かれた文書を無視します。時には、文書を書くために必要な圧力の下で、開発者向けドキュメントは、通常、書き込みの開発に焦点を当てたプロジェクトの最後の部分に配置されました。しかし、コードにドキュメントを書くこと、キーを比較するとき、まだ比較的明確であり念頭に取るべきであるので、その後の開発や自分の時間のコメントを読んですぐにデザインをリコールすることができます。

おすすめ

転載: blog.51cto.com/14355585/2407421