今回はシステム開発の入門編として、最も基礎的な「システム開発とは何か?」ということについてお話します。
まず“システム”と聞いて皆さんは何を思い浮かべますか?この言葉の意味は「多くの物事や一連の働きを秩序立てた全体的なまとまり。体系。もっと狭くは、組織や制度。」というのが一般的なものです。システムキッチンを思い浮かべた方もいらっしゃるかもしれませんね。これはつまりキッチンに必要な一連の機能を、全体的にまとめた設備を指します。
ただしビジネスにおけるシステムとは一般に、各部門や従業員個人が日常業務をスムーズに処理するために構築するソフトウェアのことを指します。つまりシステム開発とはそうしたソフトウェアを開発したり、あるいはサービスとして外部に提供するためのソフトウェアを開発することをいいます。
具体的にどうやって開発するかというと“プログラミング”を用います。プログラミングとはコンピューターが理解できる言語で様々な処理を指定し、ソフトウェアを開発するための手段です。
さらにシステム開発には様々な人が関わります。ソフトウェアを使用する顧客やエンドユーザーと色々協議しながら開発するシステムの全体像やスケジュールを考えるシステムエンジニアや、実際のシステム開発を行っていくプログラマー。この他開発の規模によって様々な人が関わっています。
システム開発のプロセス
システム開発のプロセスは上流工程から下流工程へと流れていきます。上流工程ではシステムの要件を定義したり設計を行ったりと概念的な部分が強く、下流工程へ流れていくにつれて技術要素が強まっていきます。そのプロセスについて簡単に解説しましょう。
①システム企画
システム開発プロセスの始まりは「企画」です。一般的にはシステム会社に「こうこう、こういうシステムを構築して欲しい」という依頼が来るので、システム会社はそれに応じてシステム企画を作成しクライアントにプレゼンします。最初から指定され依頼が来ることもあればコンペになることもあるでしょう。
②システム要件定義
正式な依頼が成立すると次にシステム要件定義というプロセスに移ります。このプロセスは顧客やエンドユーザーにとってどういった機能が必要で、それを実現するためのシステムリソースなど細部まで定義することが大切です。
③システム概要設計
システム要件が定義できたらシステムの概要を設計していきます。概要とはつまり「UI(ユーザーインターフェース)はどういったデザインにするか?」「データベースの構造はどうするか?」「入出力できる帳票の種類は何にするか?」など、システムの基本ともなる部分を設計していくことです。
④システム詳細設計
システム概要設計で大枠が決まったら各設計をプログラムレベルまで落とし込んでいきます。各プログラムで実現する機能を定義し、大まかなタスク振り分けをすることも仕事の一つです。
⑤プログラム設計
システム詳細設計で決定した事項はさらに細かい処理手順や一つ一つの構造などを細かく設計していきます。これがプログラミング設計です。
⑥プログラムコーディング
設計に基づいてプログラムコードを記述していくことでコーディングといいます。
⑦各種テスト
システム開発のテストは4種類あります。1つ目がプログラムテスト、コーディングしたプログラムを単体で動作させて問題を検出するテストです。2つ目が結合テスト、各プログラムを連携させて機能レベルで行うテストです。3つ目がシステムテスト、各機能を連携したシステム全体をテストします。4つ目が運用テスト、エンドユーザーの実証データに基づきシステムの可用性などを評価するものです。
⑧システム運用保守
各種テストをすべてクリアして問題が無ければ晴れたシステムのリリースとなり、システム運用保守というプロセス移行します。
システム開発の手法
システム開発のプロセスについてご紹介しました。ただし、システム開発は単純にこの流れに沿って行っていくというわけではありません。それにはいくつかの手法がありそれぞれにメリットとデメリットが違います。
アジャイル開発
「イテレーション」と呼ばれる短い開発期間を設定し、各要件に優先順位を付けて開発を進めてい手法です。前述した③~⑦の開発プロセスを機能ごとに行っていく手法であり、従来のシステム開発手法に比べて素早く新しい機能をリリースできるというメリットがあります。
アジャイル開発最大の利点は「手戻りが少ない」ことです。機能ごとに開発プロセスを繰り返すために手戻りが非常に少なく、かつ修正が必要な場合も簡単に対応できます。そのため結果として労働生産性が向上します。
ただし、機能ごとに開発サイクルが回るので全体的なシステム開発にどれくらいの時間がかかるかは算出しづらい傾向にあります。
ウォーターフォール開発
上流工程から下流工程へと一連の流れでプロセスが進んでいくのが特徴の開発手法です。予めシステム開発プロジェクト全体の計画や要件を定義し、それに応じた開発を進めていくものになります。
最大の利点は「プロセスごとに明確な成果物が存在する」ことです。成果物がある程度保証できた段階で次のプロセスに移行するため、進捗管理の容易さやシステムの信頼性向上といったメリットがあります。
ただしすべてのプロセスが一連の工程で繋がっているので、下流工程で問題が発生すると手戻りが多くなってしまいます。
スクラム開発
アジャイル開発の一種なので短い開発期間を設けてシステム開発を進めていくことには変わりないのですが、スクラム開発の場合はその期間をイテレーションではなく“スプリント”と呼びます。
これはシステム開発における透明性、検査性、適応性を実現するために欠かせない手法であり、スプリントは基本的に4週間以内に設定するため短期間で品質の高いシステム開発が行えます。少数精鋭で取り組むシステム開発手法なので、開発メンバー各人が責任感を持ってチームとして自立することが可能です。
システム開発の平準化と効率化
システム開発をスムーズに進めるために欠かせないことは平準化と効率化です。平準化とは開発メンバー各人にかかっている負担を平坦にして、特定の開発メンバーに負荷がかかっている状態を避けることです。平準化することで開発メンバー1人1人の負担が最適化されるので、効率良くシステム開発プロジェクトを進めていくことができます。
効率化とは「無駄な作業は排除したり、二重作業はまとめたりして開発効率をアップしよう」という取り組みです。効率化を常に考えているシステム開発プロジェクトでは期日までに開発工程を完了させ、品質の高いシステムを開発することができます。
平準化にも効率化にもどちらもITツール活用が欠かせません。特に開発メンバー同士のコミュニケーションを促進するためのチャットツールやグループウェア。これらのツールはコミュニケーションを促進するだけでなく、システム開発に生じた問題等を即座に共有することができます。
さらにバージョン管理システムも必要です。システム開発のために作成したソースコードを組織的に管理し、かつ最新バージョンを管理したりしていつでも快適な開発環境を整えます。
いかがでしょうか?今回はシステム開発の基礎について説明しました。これからシステム開発に取り組むという方はぜひ参考にしてみてください。
まとめ
いかがでしょうか?今回はシステム開発の基礎について説明しました。これからシステム開発に取り組むという方はぜひ参考にしてみてください。
当社では、ソフトウェア開発の上流工程である基本設計・詳細設計をシステム化し、合理化・標準化を実現するCADツール「SI Object Browser Browser ER」を提供しています。
システム開発の上流工程における生産性を格段に向上させることができます。
詳しくは、SI Object Browser ER 関連資料をぜひご覧ください。
https://products.sint.co.jp/ober/resource
※SI Object Browser Designer (デザイナー)は、ソフトウェア設計書をCADツールで作成するという新発想に関して、平成27年に特許を取得しております。
- カテゴリ:
- キーワード: