ファームウェア/組み込みシステムソフトウェアの開発にアジャイル手法を採用する方法は?


17

アジャイル手法をどのように適用するかは、大規模で複雑な組み込みシステムソフトウェア(100人以上のエンジニア)に本当にあるのかといつも思っていました。ファームウェア開発には、アジャイルを実行するのを難しくするいくつかの独自の特性があります(つまり、ハードウェアは開発サイクルの後半まで利用できません。製品がリリースされると、ファームウェアを簡単に更新できませんなど)。

この種の開発の標準は、厚手のドキュメントと厳しいピアレビューです。2〜3個の署名なしで変数の名前を変更するなどの簡単なコード修正を取得することはできません。(少し誇張しますが、これは典型的なことです。さらに、多くの人がショートカットを採用しており、特に厳しい市場の締め切りに直面して、プロジェクトマネージャーはそれらを承認します。)

ファームウェア開発プロジェクトにアジャイル手法を採用する方法に関するヒントやガイドラインを聞きたいです。


完成したハードウェアは開発サイクルの後半まで利用できないことを理解していますが、プロトタイプまたはデバッグ用のハードウェア、開発ボード、または少なくともテスト用のベンダーのシミュレーターはありませんか?または、ここからゼロから始めていますか?
ケビンフェルメール

3
私は自分の組み込みジョブについてアジャイル開発者と話していました。「6〜8週間ごとのリリース!?!?」彼は言った。「それは本当に長い時間です」。「いいえ、あなたは私を誤解しました」と私は言いました、「6〜8 ヶ月です
-AShelly


2
100人以上の組み込みエンジニアがいる製品にはどのような種類がありますか?
ペムダス

@reemrevnivek-通常、使用可能な以前のプロジェクトからの評価ボードがあります。時々、それらは新製品に十分似ています。それでも、実際に最終デバイスでファームウェアを実行するときにすべてのテストが評価ボードで合格していても、ほとんどの場合、ハードウェアの担当者が最後に追加することを決定したか、または初めに私たちに言及しなかった
....-ホピア

回答:


10

2つのテクニックが重要だと思います。

  • ハードウェア用の完全なシミュレーターまたはテスト環境を開発し、実際のハードウェアがあるかのようにソフトウェアを開発できるようにします。ここでskiしたり、近道をしたりしないでください。優れたシミュレーター開発することで成果が得られます。

  • シミュレーターに対して多数の単体テストを作成します

これらを実行し、シミュレーターとユニットテストがハードウェアでどのように機能するかを正確に把握できると人々が確信したら、他のアジャイルテクニック(短い反復、容赦ないリファクタリングなど)を採用するのが簡単になります。 。


また、チップメーカーにシミュレータコードの関連部分を提供させます。
rwong

競合他社がすでに出荷したこれらのものを手に入れるまでに
ビル

100人以上のエンジニアがいる場合、競合他社が出荷するよりも短い時間で確実に使用可能なシミュレータを作成できます。競合他社がハードウェアを受け取るまでソフトウェアをテストする方法がない場合は、特にそうです。
クリストファージョンソン

はい、シミュレーターが重要です。したがって、システムをテスト可能なコンポーネントにどれだけ効率的に分割できるかに基づいて、システム全体を最初から設計します。さて、それらすべての人々をアジャイルにするよう説得する方法は別の質問です........-
hopia

@billそれはありそうです。しかし、それはおそらく彼らがテストされていない劣った製品を出荷したことを意味し、OPの製品はそれらを水から吹き飛ばします。まあ、少なくともそれはそうあるべきです。
フリオ

2

複数のサプライヤが関与する開発プロセスに対するアジャイルの影響は、企業がJITに移行したときに何が起こるかと比較できます。

JITを配信するには、会社の各サプライヤーがJITを配信する必要があります。

function deliversJIT( company ) { 
    return company.isJIT() && map( deliversJIT, company.suppliers() );
}

同様に、アジャイル手法に従って複雑な製品を開発する場合、チェーン内のすべてのサブグループがそのように機能する必要があります。

「インクリメンタル」開発(15年前のトレーサーブレットとも呼ばれます)の観点からは、これは「コア」がすぐにドライバーにリリースされ、基本的なドライバーがインテグレーターに利用可能になり、GUIが単一のボタンと編集ボックスを同時に使用して開発します。

ハードな部分は、ハードウェアデザイナーに、前向きな確固たるエンジニアリングの分野から来て、私たちのティンカラー社会に参加するよう説得することです。

2番目に難しいのは、ハードウェアプリントを3週間前に注文する世界でインクリメンタル開発を可能にする方法を見つけることです。私はエミュレータを考えています、fpgaはここにあります。私はハードウェアではありませんが。

漸進的なハードウェア開発をやめたい場合は、JITチェーンの境界のように、アジャイルチームが前進できるようにするバッファリングメカニズムを予測できます。

盲目にならないようにしましょう。アジャイルは、重いプロセスにも対処する必要があります!次のスプリントで、JavaコードベースをPythonに「リファクタリング」するようにアジャイルチームに依頼しないでください。いくつかのパーツが本当に安定しているからこそ、アジャイルの動きをそれらの上で踊ることができます。


基礎となるものが徹底的に設計/実行されているため、アジャイルのみが可能なため+1。
ビル

1

アジャイル宣言:http : //agilemanifesto.org/

「プロセスとツールを介した個人と相互作用」

  • もっと会いましょう。紙を押してください。

「包括的なドキュメントよりも機能するソフトウェア」

  • プロトタイプおよび構築技術は、早期に頻繁に急増します。

  • 仕様へのこだわりを作り続けるのではなく、ユーザーの本当の問題を解決してください。これは進化的解決策を意味します。二度と構築できないので、正しく構築しなければならないという考えは間違っています。繰り返しを計画します。マーケティングおよびロールアウト戦略の一部にします。

「契約交渉よりも顧客とのコラボレーション」

  • ハイパーコンプレックスの変更管理プロセスは、顧客に「いいえ」と言うだけの方法です。

  • すべての要件を事前にロックダウンしてから変更管理を課すことも、「いいえ」と言う別の方法です。

  • すでに複数のリリースを計画している場合は、要件を後のリリースに簡単に延期できます。顧客が組み込みソフトウェアを備えたデバイスを入手すると、次のリリースの優先順位が変更されます。

「計画に従った変更への対応」

  • 複雑な統合には複雑な計画が必要ですが、全体的な「プログラム」(またはプロジェクトのシーケンス)を具体的にキャストするのは早すぎません。

完全にアジャイルな方法論(つまり、スクラム)は、組み込みシステムには意味がない場合があります。

しかし、アジャイルマニフェストは、単純な混乱を許さずに変更を可能にする方法を提供します。


0

組み込みシステムでのスクラムに関する私の問題は、特に初期段階で行うべき多くのタスクがあり、それは実証できないことです。開発ボード、OSなし、ディスプレイなし、シリアル通信なしなどから始めました。6スプリントのディスプレイはありませんでした。

最初の4つのスプリントは、次のとおりです。

これらのタスクのほとんどは、ユーザーストーリーにはあまり適していません。実際、システム全体への唯一のインターフェイスは、スプリント3に組み込まれているシリアルデバッグメニューでした。シリアルメニューでさえ、エンドユーザーではなく内部使用を目的としていました。

もちろん、記述する各クラスにはユニットテストが関連付けられており、ユニットテストフレームワークを使用してすべてのテストの実行を自動化します。

「開発者として...」のような「ユーザーストーリー」というフレーズを書くことになりました。これは満足できませんが、ターゲットプロセス(www.targetprocess.com)を使用する場合、バックログアイテムの概念はありません。タスクまたは雑用。

他の人がこれらの状況をどのように処理したか聞いてみたいです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.