Takunojiのプログラミング・プレイグラウンド(遊び場)

「プログラミングのススメ」と学習した結果身につくもの、アイディアを実現するために何をしたら良いか?の答えが出せるようになります。

UML Design(設計)2〜開発工程(プロセス)〜

イントロダクション

前回は、UMLって何よ?に対する疑問を解決する内容に関して記載しました。そして、サーバーには大雑把に3種類ある事を記載しました。 大雑把に、以下のようなことを記載しています。

  1. UMLは世界共通で使える設計図(ユースケースズなど)である
  2. UMLで使用できる図の種類
  3. オブジェクト指向について
  4. サーバーの種類(大雑把に3つあります)

そんなわけで、次は開発工程に関して記載しようと思います。

開発工程(プロセス)

開発工程は以下のような流れで行います。

  1. 要件定義: どんなものを作るのか、要件を決めます。 2.設計: どのように作成するか、またどんな環境で動かすのか要件を満たすために必要なことを整理、実行手順を明確にします。今回のUMLはこの部分で活躍します。開発環境の構築と開発した資源(プログラムや、作成したドキュメント(アプリケーションの使い方など)、運用方法などを決定します。結構幅いです。。。
  2. 開発: 皆さんご存知、プログラムでガリガリコーディングしていく工程です、この工程では、テスト環境の構築、プログラムの作成、テストの実施も含まれます。大規模開発ではプログラムの作成するチームを分ける〜進捗管理〜問題管理など、色々とややこしいこともやらなくてはいけません。なぜか?「大規模でやるからにはたくさんの人員が必要だから」です。
  3. 品質検査: 設計工程で品質の確認方法→「〜くらいのものができていることを確認する方法」のように品質を担保するための方法を明確にしているので、テストを行うとき(結合テスト以降、総合テストなど)に品質の確認も行います。

    開発方法の種類

    以下の方法があります。2019年の日本での流行としては「アジャイル開発」という方法が流行っていますが、如何せん、うまく機能していない「暗黒の時代」がありました。 しかし、時代の流れもあり、開発がスムーズかつ「人にやさしく」なってきたのでコンプライアンスに関して(国からのお達し(法律)で企業が)うるさくなっていますので定時で帰宅できるようになってきたということです。時期にもよりますがね。。。 そんなわけで、大雑把に以下のような開発手法があります。

  4. ウォーターフォール: 上流工程から順番に進めていく手法です。「要件定義」「外部設計」「内部設計」「開発」「テスト」と単純に実行していきます。この方法では正確性がとても重要で、計画などにミスがあったときには戻っと初めから。。。なんてことになるのですが、現実はそんな風に行かないので現代風ではないと思います。

  5. スパイラル開発: 繰り返して開発していく手法のことです、他の言葉との細かい差はどうでも良いと思っているのですが、アジャイルなどとは違うようです。自分の知っている方法としては、バージョンXXと決めて小さな範囲で設計〜開発〜テストを繰り返していく方法のことですが、この違いについて記載するのは時間の無駄だと思うので記載しません。「こんな言葉もあるんだな」程度で良いと思います。

開発手法

ちょっと調べてみたけど、結局は呼び名が違うだけで肝心な中身の記載が曖昧なものが多いように思いました。 大切なのは「プロジェクトを成功させるために何が必要でどんな手法でやれば安全に行けるだろうか?」に対する答えだと思います。 なので「アジャイル」とか「ウォーターフォール」なんて言葉はあまり役に立たないかもしれません。。。(自分の考えでは、意味がないように思えます。)

じゃーどーするか?

これが大切なことです。世間にはいろんな手法が提案されていてその方法に関してもドキュメントや実績などの情報が沢山あります(ネット上に。。。)なのでこの中かから適切な手法とそれに対する理解をしてから「実践」すればより安全なプロジェクト運用」が可能なのではないでしょうか?ちなみにこれも「アジャイル」のうちに入るようです。 最近でもないけれど「仕様」と「要件」 に関して詳しい人間が沢山いる現場であるならば「テスト駆動型」で開発をするべきだと思います。手順は以下の通り

  1. 仕様を決めて、この通りに動くアプリケーション(モジュール)のテストから作成していきます。
  2. テストを実行して網羅できるプログラムができたら実装する工程は完了です。
  3. 結合〜総合テスト

こんな風になります。古い手法だと以下のようにやっています。

  1. 仕様書を見ながら実装
  2. 単体テストクラスを作成
  3. 単体テストクラスを実行
  4. テストが網羅できたら実装完了
  5. 結合〜総合テスト

作業レベルではこんな感じの手順になります。 手間の数が見た目からして違います。

まとめ

大雑把にこのような開発手法があるのでそれぞれにやり方を理解して、プロジェクトに臨むのが良いと思います。
実際に個人でやる場合、チームで、会社で。。。それぞれにそれぞれのやり方があるので、よく検討してみてください。
でわでわ。。。