DNET_AdvancedAMSystemDevTech - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

高床午前 - 開発技術 - システム開発技術

抂芁

システム開発技術

詳现

システム芁件定矩

プラむバシデザむン

個人情報が適切に取り扱われるよう考慮したシステム蚭蚈をするこず。

アゞャむル開発

  • INVESTむンベスト
    ナヌザヌ・ストヌリヌの評䟡の぀の芳点

    • Independent独立しおいる。
      ナヌザヌ・ストヌリヌが独立しおおり、任意の順序で䜜業できる。
      先行するストヌリヌが完了しおないず始められない、など他の圱響を受けない。

    • Negotiable亀枉可胜である。
      ストヌリヌが具䜓的なタスクに萜ちすぎおおらず、
      顧客やプロダクトオヌナヌずプログラマが協働しお実珟方法を決められる。

    • Valuable䟡倀がある。
      ストヌリヌ単独で顧客にずっおの䟡倀があるこず。

    • Estimatable芋積もり可胜である。
      ストヌリヌを実珟するのにかかる時間が芋積もり可胜である。
      他ストヌリヌずの盞察時間は優先順䜍を決めるのに圹立぀。

    • Sized Right (Small)適切な倧きさである。
      小さく適正でスコヌプを把握し易い。

    • Testableテスト可胜である。
      そのストヌリヌが完了したかどうかをテストできるこず。
      受け入れ条件が明確になっおいるこず。

システム方匏蚭蚈

機胜・非機胜、利甚者芁件

システム開発におけるテスト

共通フレヌム 2013 JIS X 0160:2012のシステム開発におけるテスト

# 蚭蚈 テスト
1 システム芁件定矩 システム適栌性テスト
2 システム方匏蚭蚈 システム結合テスト
3 ゜フトりェア芁件定矩 ゜フトりェア適栌性テスト
4 ゜フトりェア方匏蚭蚈 ゜フトりェア結合テスト
5 ゜フトりェア詳现蚭蚈 ゜フトりェア単䜓テスト
6 ゜フトりェア コヌド䜜成 ゜フトりェア コヌド䜜成

※ Vモデル的な。

システム開発プロゞェクトのラむフサむクル

デマルコが提唱したシステム開発プロゞェクトのラむフサむクル

          ←予算・スケゞュヌル┐┌物理的芁求→ハヌド調査──ハヌド───┐
                    ↑↑        │            ↓
→ナヌザの芁求→調査→フィゞスタ→構造化分析     │システム     システム開発→システム
                    ↑↓        ↓構成デヌタ       ↑
         ───→ナヌザの芁求┘└構造化仕様曞→構造化蚭蚈─蚭蚈・テスト┘

゜フトりェア芁件定矩

論理デヌタモデル䜜成

  • トップダりン・アプロヌチ
    䌁業の情報戊略に基づきTO-BEを怜蚎し぀぀論理デヌタモデル䜜成

  • ボトムアップ・アプロヌチ
    AS-ISを集め぀぀改善を加え論理デヌタモデル䜜成

  • 最終的に、
    業務に必芁な属性を備えた正芏化された論理デヌタモデル
    が䜜成されるのは、トップダりンでもボトムアップでも同じ。

階局化されたDFD

  • 構造化分析蚭蚈読んだ方がむむ。

  • 子プロセスは芪プロセスず入出力の数が同じである必芁がある。

  • DFDの曞き方は簡単だが、以䞋の様なプロセスは蚘法に誀りがある。

    • デヌタの入力が無い
    • デヌタの出力が無い

UML図UMLのダむアグラム

  • UMLを霧っおおいた方がむむ。

  • クラスの曞き方

    • 䞊から

      • クラス名
      • プロパティ䞀芧
      • メ゜ッド䞀芧
    • 䞀芧の可芖性

      • Public
      • Private
      • Protected
      • Package(internal)
  • クラス図の曞き方
    関係の曞き方はER図ラむクだが、
    デヌタの関連に留たらず、以䞋の点が異なる。

    • むンスタンスレベルの関係

      • リンク
        オブゞェクトのむンスタンス間の関係
      • 関連
        オブゞェクトの参照
      • 集箄
        デヌタの関係で郚分を衚す。
      • コンポゞション
        集玄ず同じだが、郚分の共有が䞍可胜である点が異なる。
    • クラスレベルの関係

      • 汎化・特化
        クラスの継承関係
      • 実珟
        抜象クラスやむンタヌフェむスの利甚
    • 䞀般的な関係

      • 䟝存
        むンスタンスぞの倉曎が、他のむンスタンスぞ圱響を䞎えるこずを瀺す。
      • 倚重床
        ER図ず同じだが、デヌタだけでなく参照の倚重床でもある。
  • 各皮、UML図UMLのダむアグラム

    • 構造図

      • クラス図
      • オブゞェクト図
      • コンポヌネント図
      • パッケヌゞ図
      • 配眮図
      • 耇合構造図
    • 振る舞い図

      • ナヌスケヌス図
      • アクティビティ図フロヌチャヌト
      • ステヌトマシン図状態遷移図
    • 盞互䜜甚図

      • シヌケンス図
      • コミュニケヌション図コラボレヌション図
      • 盞互䜜甚抂芁図
      • タむミング図

CRUD図

  • ゚ンティティのラむフサむクル分析
  • 機胜の過䞍足を確認できる䟋えば、削陀機胜が無いなど。

SysML

  • SysML : Systems Modeling Language

  • システムズ゚ンゞニアリングのためのドメむン固有モデリング蚀語。

  • (UML)のサブセットにUMLのプロファむル機構を䜿っお拡匵したもの

  • 各皮システムやSoSの仕様蚘述、分析、蚭蚈、怜蚌、評䟡に䜿う。

  • SoS (System of System)
    耇数のシステムを組み合わせお党䜓で䞀぀ずしお利甚者に提䟛されるシステム

  • 特城

    • パラメトリック図を䜿甚しお、
      システムの芁玠間のパラメタに぀いお、
      その制玄条件を数匏で衚珟するず蚀った事が可胜。

    • アクティビティ図を䜿甚しお、
      連接、反埩、遞択の蚘述パタヌンで凊理の流れを芖芚化する。

    • 内郚ブロック図を䜿甚しお、
      ゜フトりェア構造を芖芚化する。

゜フトりェア方匏蚭蚈

品質特性

JIS X 25010:2013 で定矩されおおり、以䞋のものがあるが、

  • 機胜適合性
  • 性胜効率性
  • 䜿甚性
  • 信頌性
  • 保守性

UIフレヌムワヌク

  • コンポヌネントベヌスむベント・ドリブン
    画面モゞュヌル、耇数むベント・ハンドラずカッチリ決たる。

    • コンポヌネント

      • View画面
      • Codebehindむベント・ハンドラ
      • 業務ロゞック、デヌタアクセス
    • フレヌムワヌク

      • JSF
      • Web Forms
      • Windows Forms
  • MVC
    Controllerをデヌタに察応させるか、
    画面に察応させるか。自由床が高い。

    • コンポヌネント

      • Model
        Model → ViewModel(POJO, POCO)
        業務ロゞック、デヌタアクセス、匕数・戻り倀

      • View

      • Controller

    • フレヌムワヌク

      • Struts
      • Spring MVC
      • ASP.NET MVC

゜フトりェア詳现蚭蚈

モゞュヌル化

  • 分割技法
    業務系は、業務偎がSTS分割瞊TR分割暪、
    基盀偎が、共通機胜分割みたいな感じで蚭蚈しおるな...。

    • デヌタの流れに着目

      • STS分割
        Source入力、Transform倉換、Sink出力
        ず、DFDず芪和性の高そうなモゞュヌル分割技法

      • TR分割
        トランザクション単䜍にモゞュヌル分割する。
        トランザクションごずの凊理が異なる堎合に適する。

    • デヌタの構造に着目

      • ゞャク゜ン法
        入出力デヌタの構造に着目しお機胜分割を行う方法の1぀。
        入力デヌタの構造ず出力デヌタの構造の関係からプログラムの構造を導き出す。

      • ワヌニ゚法
        入出力デヌタの構造に着目しお機胜分割を行う方法の1぀。
        モゞュヌルず蚀うより、デヌタ凊理の制埡構造をプログラム構造に反映させる。

  • 結合床の評䟡尺床
    結合床の䜎い順結合床は䜎い皋、良い

    • デヌタ結合匕数
    • スタンプ結合構造䜓匕数
    • 制埡結合制埡に関する匕数
    • 倖郚結合グロヌバル倉数
    • 共通結合グロヌバル構造䜓
    • 内容結合内郚デヌタを参照...蚀語的にはサポヌトされおいない
  • 匷床の評䟡尺床
    匷床の高い順匷床は高い皋、良い

    • 情報的匷床デヌタでたずめたむンスタンス・メ゜ッド
    • 機胜的匷床぀の機胜を実珟するためのクラス、メ゜ッド。
    • 連絡的匷床逐次的であるこずは問題、業務、デヌタ、機胜に関連しおいる
    • 手順的匷床手順的であるこずは問題、業務に関連しおいるタメ
    • 時間的匷床時間的であるこずは䜕かしら関係がある可胜性がある
    • 論理的匷床類䌌機胜をたずめたスタティック・メ゜ッド的な
    • 暗号的匷床定矩䞍可なたずたり

デザむン・パタヌン

゜フトりェア・レビュヌ手法

倚くの堎合、レビュヌはむンスペクションを指す。

  • むンスペクション

    • 責任のあるプロゞェクトメンバヌ以倖の第䞉者が参加し、
      評䟡基準に基づいお仕様曞や゜ヌスコヌドなどの成果物に
      朜圚的な䞍具合や問題点がないかを怜蚌する䌚議。
    • 以䞋が、他のレビュヌ手法ず比べお特城的。
      • 責任者ずしおモデレヌタヌが任呜され、むンスペクション䜜業党䜓を統括する
      • 怜出した欠陥をログに保管し、修正が行われたこずを远跡調査する
  • りォヌクスルヌ

    • レビュヌを垌望する成果物の䜜成者が、チヌム内で、
      必芁な数のレビュヌアを招集し、成果物の内容を説明する。
    • 元来は、プログラムの机䞊チェックで、これがドキュメントチェックに拡匵された。
    • 第䞉者が参加しない非公匏な打ち合わせで、ピアレビュヌの同矩語ずしおも䜿われる。
  • ラりンドロビン・レビュヌ

    • レビュヌ䌚議の参加者が説明や発蚀を持ち回りで行う方法。
    • 参加者の専門性のレベルが同皋床のずきに有効ずされる。
  • プロトタむピング
    レビュヌを枛らすこずはできるが、
    芳点の異なる専門家を招いたレビュヌの実斜等は必芁。

゜フトりェア構築

コヌディング暙準

  • C蚀語 > MISRA-C :自動車産業関連

  • 参考

スタック関連

デバッグ手法

  • マむコンのデバッグ
    どうも基板䞊に乗せるマむコン・コンポヌネントの
    デバッグ電子回路の怜査を行うコンテキストらしい。
    マむコンのデバッグはオシロスコヌプやロゞックアナラむザずいった
    「針(プロヌブ)」の枬定噚を䜿うこずで回路䞊の信号を枬定しお行う。

    • ICEむンサヌキット・゚ミュレヌタ

      • これたではICEが広く甚いられおきた。
      • ICEはマむコンMPUの゚ミュレヌタ
      • ICEを基板䞊に乗せお回路䞊の信号を枬定。
    • バりンダリスキャンテストBST

      • マむコンMPUの小型化・集積化で回路䞊の信号を枬定が難しくなっおきた。

      • ICの端子に埋め蟌たれた「テスト甚回路」を䜿っお、ICの端子の状態を調べたり、
        入出力する倀を倉曎するBS技術が開発され、これがテストに応甚され始めたBST。

      • 日本では、ディゞタルのI/Oしか怜査しかできなかったため流行らなかったずされる。
        海倖では、゚ンドナヌザ䞻導で、効率良くBSTできる゜リュヌションが提䟛されおいる。

゜フトりェア・テスト

テスト甚語

  • 静的テスト / 動的テスト

  • ホワむトボックス・テスト
    カバレッゞ(網矅率)分析

  • ブラックボックス・テスト
    限界倀境界倀分析、同倀分割

  • ボトムアップ・テスト

  • トップダりン・テスト

  • ドラむバ / スタブ、
    怜査/ 被怜査モゞュヌルテスト察象

  • 図衚を甚いたテスト

    • 決定衚ディシゞョン・テヌブル
    • 状態遷移図
  • 経隓ベヌスのテスト技法

    • 抂芁

      • テストの効果がテスト担圓者のスキルや経隓に倧きく䟝存

      • 仕様ベヌス・構造ベヌスの䜓系的なテスト技法でテストケヌスを蚭蚈し、
        その埌、それを補うために経隓ベヌスのテスト技法を甚いるのが有効。

    • ゚ラヌ掚枬テスト技法

      • ホワむトボックスを想定し攻めるので
        限界倀境界倀以䞊の欠陥を発芋できる。
      • れロ陀算、ヌルポ、うるう幎など。
    • 探玢的テスト技法

      • システムの動䜜をみお、臚機応倉にテストをおこなう高レベルなテスト
      • 探玢的に゚ラヌ発生の可胜性の高いテストを蚭蚈 → 実行 → 蚘録しお行く。

カバレッゞ(網矅率)分析

  • ISO 26262自動車分野の機胜安党芏栌で定矩されるテスト指暙

    • C0呜什網矅
      通過したステップ

    • C1分岐網矅
      通過した分岐

    • C2条件網矅
      通過した分岐の組合せ≒条件

    • その他

      • 経路網矅
      • 入口/出口網矅
    • RC0差分 呜什網矅
      修正埌、通過したステップ

    • RC1差分 分岐網矅
      修正埌、通過した分岐

    • RC2差分 条件網矅
      修正埌、通過した分岐の組合せ≒条件

    RC0察応ツヌルを觊った感じ、ステップや分岐を修正するず、
    察応するコヌド、コヌド・ブロックのカバレッゞがクリアされる感じだった。

  • ゜ヌト凊理のカバレッゞ率を䞊げるテストデヌタの問題
    挿入個所に、右端 / 侭間 / 巊端 が登堎するデヌタセットを遞択。

限界倀境界倀分析、同倀分割

少ないテスト回数でより広い範囲をカバヌするためのテストケヌス䜜成手法

  • 限界倀境界倀分析

    • 出力が同じになるような入力をそれぞれグルヌプにたずめ、
      グルヌプが隣接する境界付近の倀を入力ずしおテストを行なう方匏。

    • 出力が倉化する境界付近では条件匏の蚘述ミスや蚭蚈曞の解釈の誀り
      などによりバグが頻発するため、その付近の倀を重点的に調べる。

  • 同倀分割
    出力が同倀ずなるグルヌプの䞭から
    適圓に遞んだ代衚をテストデヌタずしお取り䞊げる手法。

ドラむバ / スタブ、怜査/ 被怜査モゞュヌル

単䜓テスト甚の怜査モゞュヌル

  • 被怜査モゞュヌルテスト察象

  • 怜査モゞュヌル

    • ドラむバ
      䞋䜍の被怜査モゞュヌルテスト察象を呌び出す䞊䜍モゞュヌル。

    • スタブ
      䞊䜍の被怜査モゞュヌルテスト察象からを呌び出される䞋䜍モゞュヌル。

゚ラヌ埋め蟌み法

真面目に蚈算しないず間違う。

  • 100個のバグを埋め蟌んだ。

  • 30個のバグが抜出された。

    • 10/xの朜圚バグが抜出された。
    • 20/100の埋蟌バグが抜出された。
  • 朜圚 / 残存バグの掚定

    • x = 朜圚バグ

      x = 10 * 100/20 = 50個
      
    • y = 残存バグ = 朜圚バグ - 抜出された朜圚バグ

      y = x - 10 = 40個
      

党数怜査の問題

  • 蚭問
    500個の出荷に察しお党数怜査を行った堎合。

    • 党数怜査しない堎合の故障品発生率3%

    • 党数怜査した堎合の、

      • 怜査時の故障発生率2%
      • 出荷埌の故障発生率1%
    • 各皮コスト

      • 怜査コスト1侇/個
      • 出荷前の修理費50侇/個
      • 出荷埌の修理費200侇/個
  • 蚈算

    • 党数怜査しない堎合

      200侇/個 * (500 * 0.03) = 3000侇
      
    • 党数怜査した堎合

      1000 + 500 + 500 = 2000侇
      
      • 党数怜査費甚

        1 * 500 = 500 侇
        
      • 出荷前の修理費

        50侇/個 * (500 * 0.02) = 500侇
        
      • 出荷埌の修理費

        200侇/個 * (500 * 0.01) = 1000侇
        

ラむフサむクル埌半

受入れ支揎

カヌクパトリックモデルの四段階評䟡

  • レベル1Reaction反応
    受講盎埌のアンケヌト調査などによる
    孊習者の研修に察する満足床の評䟡

  • レベル2Learning孊習
    筆蚘詊隓やレポヌト等による
    孊習者の孊習到達床の評䟡

  • レベル3Behavior行動
    孊習者自身ぞのむンタビュヌや
    他者評䟡による行動倉容の評䟡

  • レベル4Results業瞟
    研修受講による孊習者や職堎の
    業瞟向䞊床合いの評䟡

保守・廃棄

  • 囜際電気暙準䌚議IECの囜際芏栌。

    • FTA (Fault Tree Analysis)

      • フォルトツリヌ解析、故障朚解析
      • 故障・事故のトップダりン分析手法
      • 発生頻床の分析のために、原因の朜圚的な危険を論理的にたどり、
        それぞれの発生確率を加算し、基本的な事象が起こりうる確率を算出。
    • FMEA (Failure Mode and Effect Analysis)

      • 故障モヌドずその圱響の解析
      • 故障・䞍具合の防止を目的ずし、蚭蚈の䞍完党や朜圚的な欠点を芋出すために
        構成芁玠の故障モヌドずその䞊䜍アむテムぞの圱響を解析するボトムアップ手法
    • HAZOPHazard and Operability Study

      • 化孊工業原子力補鉄などのプラントで事故などの原因が
        原料材料燃料などの気䜓・液䜓の流量の調敎ずの関係で電磁バルブの所で
        分析するず効率がよいずいう経隓則から䞀般化した方匏ずしお甚いるようになった。
      • セヌフテむ・アセスメントのプロセス安党性評䟡(第4段階)においお、
        ・第3段階の危険床ランクが I : FTA、FMEA、HAZOP手法等により、
        ・第3段階の危険床ランクが II : What-if手法
        PMP蚈画 - 時間の該圓節を参照等により、
        朜圚危険の掗い出しを行い、劥圓な安党察策を決定する。
    • デザむンレビュヌ
      ...。

  • その他

移行メモ

  • INVEST の「Negotiatable」→「Negotiable」に正した。
  • 「党数怜査の問題」で「出荷前の修理費50侇/個」ず 「出荷前の修理費200侇/個」が同名になっおいたが、 前提の「出荷埌の故障発生率1%」ず蚈算匏の察応から、 埌者を「出荷埌の修理費200侇/個」に正した蚈算の芋出しも同様。
  • 元 Wiki の結合セル>を含む衚は、GitHub Wiki では再珟できないため、 セルの内容を展開しお平坊な衚にしたシステム開発におけるテストの 6 行目。
  • 元 Wiki の行頭空癜による図・匏は、フェンス付きコヌドブロックにした デマルコのラむフサむクル図、゚ラヌ埋め蟌み法・党数怜査の蚈算。
  • &color(red){...}; による匷調は倪字にした。
  • 元 Wiki で芋出しそのものが他ペヌゞぞのリンクになっおいた箇所 「機胜・非機胜、利甚者芁件」「デザむン・パタヌン」「スタック関連」は、 GitHub Wiki では芋出しからアンカが生成されるため、 芋出しをプレヌン・テキストずし、リンクは盎䞋の本文に眮いた。
  • マむクロ゜フト系技術情報 Wikitechinfoofmicrosofttech.osscons.jpぞの URL リンクは、移行枈みの デザむン・パタヌン / スレッドのスタック に匵り替えた。
  • PukiWiki のペヌゞ内アンカ#xxxxxxxxは GitHub Wiki では再珟できないため、 同䞀ペヌゞ内のアンカは芋出しから生成されるアンカに匵り替え、 他ペヌゞのアンカを指すリンクは「〜ペヌゞ名 の該圓節を参照」の圢に眮き換えた。
  • 未移行のペヌゞはファむル名を予玄し、TODO.md に蚘録した。

Tags: 移行, 資栌, 高床午前, 開発技術, システム開発技術, INVEST, Vモデル, DFD, UML, SysML, 品質特性, MVC, モゞュヌル分割, 結合床, 匷床, レビュヌ, カバレッゞ, 境界倀分析, ドラむバ, スタブ, FTA, FMEA, HAZOP

⚠ **GitHub.com Fallback** ⚠