システム開発とは?業務内容~効果的な進め方まで徹底解説
IT技術が発達している現代、システム開発に興味を持つ方も多いです。 しかし、実際に何を開発するのか、どんなお仕事なのか詳しく知っているという方は、IT系職種についていないとなかなかいませんよね。 そこでこの記事では、 ・システム開発の概要 ・職種の例 ・必要なスキル ・システム開発を実際にするときのポイント について、ご紹介しています。 まずはこの記事で、システム開発について、基本的な知識を身につけましょう。
2020年10月22日
IT技術が発達している現代、システム開発に興味を持つ方も多いです。 しかし、実際に何を開発するのか、どんなお仕事なのか詳しく知っているという方は、IT系職種についていないとなかなかいませんよね。 そこでこの記事では、 ・システム開発の概要 ・職種の例 ・必要なスキル ・システム開発を実際にするときのポイント について、ご紹介しています。 まずはこの記事で、システム開発について、基本的な知識を身につけましょう。
IT技術が発達している現代、システム開発に興味を持つ方も多いです。
しかし、実際に何を開発するのか、どんなお仕事なのか詳しく知っているという方は、IT系職種についていないとなかなかいませんよね。
そこでこの記事では、
・システム開発の概要
・職種の例
・必要なスキル
・システム開発を実際にするときのポイントについて、ご紹介しています。
まずはこの記事で、システム開発について、基本的な知識を身につけましょう。
システム開発とは
システム開発とは、「業務を効率化させるための仕組みを作成すること」です。
そのため、システム開発の定義としては、パソコンやソフトウェアを使っているかどうか、は関係ありません。
しかし現代においては、「システム開発」はソフトウェアなどITを使った業務効率化の仕組みの作成を指すことが多いです。
例えば、複数店舗を経営している会社が、在庫を一括管理するためのツールの作成、といったものがシステム開発の例に当たります。
システム開発の2つのスタイル
ウォ―ターフォール型開発
ウォ―ターフォール型開発は、一番メジャーな開発手法です。「要件定義」から始まり、「リリース」まで時系列で作業を進めていきます。各工程が完了し承認されないと、次の工程には進みません。各工程ごとに成果物を残していく手法が、ウォーターフォール型開発です。
【メリット】
・メジャーな手法のため、プロジェクトに関わる人間に一から説明する必要がない
・この手法を経験している人材が多く、プロジェクトマーネジャーを確保しやすい
・各工程ごとに区切り、承認後に次の工程に進むため、工程ごとの成果物が確実に残り、進捗管理しやすい
【デメリット】
・想定外のニーズにより手戻りが発生した場合、予算超過や納期ずれにつながりやすい
アジャイル型開発
優先順位の高い部分からシステム開発できるのが、アジャイル型開発です。「アジャイル(Agile)」という言葉には、もともと「素早い」「頭の回転が速い」といった意味があり、そういったところから従来と比較して短期間で開発できるこの手法をアジャイル型開発と呼んでいるのです。
【メリット】
・顧客の優先順位の高い部分、もしくは要件が決まった順に開発に着手できる
・構築するシステムの全体像が決定していない状態でも、開発できる
・短期での納品が可能
【デメリット】
・計画性に欠けているため、大規模の開発には向いていない
システム開発の主な流れ
システム開発は、以下のステップを踏んで行われます。
・要件定義
・外部設計
・内部設計
・プログラミング
・単体テスト
・結合テスト
・システムテスト
・運用テスト
・システム移行
・運用・保守
以下、それぞれのステップを簡単に説明します。
要件定義
最初のステップ「要件定義」は、実装すべき機能を明確にすることです。
システムの依頼主からの「業務を効率化したい」といった抽象的な希望をどうシステムを解決するか、といったことを決めます。
要件定義は、システム開発において最重要な部分の一つ。
というのも、全体の方向性を決めるフェーズであるためです。
方角を間違えたらいつまでたっても目的地にたどり着けないように、要件定義のミスは納期の遅れや、予算の増加につながります。
外部設計
第2のステップ「外部設計」は、システムの外見、つまりインターフェースやシステムの流れを決める部分です。
自動販売機で例えると、缶が並んでいる外面のデザインなどを設計する段階、と言えるでしょう。
このデザインで使いやすいか、自販機で言えば一眼でどの缶が暖かい、冷たいか、がわかるデザインか、といったことを考えます。
使いやすさはシステムの定着度につながる要素です。
誰も使いにくい道具を、好き好んで使おうとは思いませんよね。
したがって外部設計は、クライアントにとっての使いやすさを考えるフェーズになります。
内部設計
第3のステップ「内部設計」は、システムの内面を設計する部分です。
自動販売機で言えば、何円入れたらボタンが点灯するようにする、といった仕組みを設計する段階にあたります。
ここはシステム会社だけで考えることが多いです。
今後のメンテナンスのしやすさを考慮して、シンプルな仕組み、構成を考えるのが重要なフェーズです。
プログラミング
第4のステップ「プログラミング」は、プログラムを設計し、それを実際に組み上げる部分です。
家の建築でいうと、家の設計と実際に木材などを使って家を建てるフェーズに当たります。
一つのシステムにおいて、作るべきプログラムは一つとは限りません。
システムをいくつかのプログラムに分け、それぞれを設計、プログラミングをする必要があります。
またこの時に、次の「単体テスト」で確認するべき項目も決めておきます。
単体テスト
第5のステップ「単体テスト」は、開発者が、システムがパーツごとにちゃんと動くか、を確かめる段階です。
パーツごとにテストすることで、問題が発生したときの原因がわかりやすくなります。
プログラミングから単体テストへは、一度移ったらそれで終わり、というわけではありません。
ある一つのパーツを作成→テスト→別のパーツを作成…と、二つのステップを行ったり来たりする場合が多いです。
総合テスト
第6のステップ「結合テスト」は、単体テストを終えたパーツを複数合わせて、それらがちゃんと動くか、を確かめる段階ステップです。
結合テストは、IT(Integration Test)、JT(Joint Test)などとも呼ばれることも。
システム開発においてはそれぞれのパーツが問題なく動いても、結合してもちゃんと動く、とは限りません。チームメンバーそれぞれが優秀でも、チームワークやチームでの成績がいいとは限らない、というのと似たようなものですね。
単体テストと同じく、結合テストにおいても、事前にチェックしておくべき項目を決めておきます。
システムテスト
第7のステップ「システムテスト」は、システム全体が決めた通りに動いているか、を確認するテストです。
システムテストは本番とほぼ同じ状況の中で行われます。
システムテストはさらに、
・確認テスト
・評価テスト
・負荷テスト
などに分けられます。
運用テスト
第8のステップ「運用テスト」は、最後に行われるテストです。これまでのテストとは違い、テストをするのは開発者ではありません。
システムを依頼した顧客自身がシステムを操作して、結果を確認します。
システム移行
第9のステップ「システム移行」は、テストが完了したシステムを、開発環境から実際の稼働環境へ移すステップです。
システム移行は「本番リリース」、「カットオーバー」などとも呼ばれます。
システム移行が行われるのは、主に休日や夜間。なぜなら日中のシステム移行は、業務に支障をきたす場合があるためです。
運用・保守
最後のステップ「運用・保守」は、システムを実際に動かし、適宜メンテナンスをするステップです。
運用がシステムの稼働状況を監視するのに対して、保守は、修正などのためにシステムに変更を加えるもの。
しかし「運用・保守」のどちらでもシステムの安定稼働が目的なのは同じです。
次では、このようなシステム開発に関わる職種の例とそれぞれの業務内容をご紹介します。
システム開発に関わる職種の例とそれぞれの業務内容
システム開発には、何種類もの職業の人が関わります。
ここではシステム開発に関わる主な職種として、
・エンジニア
・プログラマ
・プロジェクトマネージャー
の3つをご紹介します。
エンジニア
第1の職種「エンジニア」とは、技術者のことです。IT業界に関わるエンジニアは「ITエンジニア」とも呼ばれます。
エンジニアにも何種類かありますが、システム開発に関わるエンジニアは「システムエンジニア(SE)」と呼ばれます。
システム開発においてシステムエンジニアは、システムの設計から開発、そしてテストまでを計画し、進める存在。
クライアントの要望を汲み取り、仕様を決定するポジションです。
したがって、システムエンジニアの責任は重大です。
ちなみにシステムエンジニア以外のITエンジニアとしては、
・ネットワークエンジニア
・サーバサイドエンジニア
・フロントエンドエンジニア
などが挙げられます。
プログラマ
第2の職種「プログラマ(PG)」は、システムエンジニアがつくった設計に基づいて、システムを実際に作る、つまりプログラミングをする人たちを指します。
家づくりにおいて、実際に家を建てる大工さんのような存在ですね。
プロジェクトマネージャー
第3の職種「プロジェクトマネージャー」は、その名の通りプロジェクトを管理する存在です。プロジェクトマネージャーは1つのプロジェクトにかける予算や人員を設定します。
プロジェクトマネージャーは経験を積んだエンジニアがつくポジション。
技術的な知識に加えて、マネジメントに関するスキルが求められます。
システム開発を効率的に進めるための2つのポイント
システム開発を効率的に進めるためには、以下の2点をおさえておくのがおすすめです。
1.目的を明確にする
2.ツールを導入する
以下、それぞれを解説します
目的を明確にする=要件定義をしっかりとする
まず必要なのが、システムの目的を明確にする、言い換えれば要件定義をしっかりとすることです。
というのも目的を明確にしないと、具体的に何をするべきか、が明確にならプロジェクトが効率的に進まないためです。
例えるならば、システム開発における目的は車の運転における目的地のようなもの。
目的地が「どこでもいいから目に入ったイタリアンのお店」だと、色んな道を走り回る、また道沿いに何があるかいちいち見なくてはなりませんよね。
一方で、目的地を「このレストランの〇〇店」と明確に決めれば、少ない道順で目的地にたどり着けます。
そして、システム開発において目的の明確化にあたる作業が「要件定義」です。
したがって「要件定義」をしっかりしておかないと、
・スケジュール通りに作業を進められない
・大規模な作業が追加される
・システムがだいたい完成したところで、取引先から根本的な修正を求められる
といった事態が発生する場合があります。
取引先が「とりあえずつくってほしい」と言った場合でも、まず要件定義をするようにしましょう。
ツールを導入する
第2のポイントは、システム開発に関わるツールの導入です。
というのも人力では膨大な時間がかかる作業や日々の進捗報告は、ツールによって短時間でできる場合があるためです。
例えば、テストを自動化してくれるツールを使用すれば、テストにかかる時間を短縮できますね。
また、ヒューマンエラーによるチェックポイントの見落としも避けることができます。
加えて、日々の進捗報告もツールで簡略化できます。
例えば、日々の作業をオンラインで共有すれば、誰がどの作業に当たっているのか、一目で確認できますね。
ハチネットで主な開発環境実績
あらゆる技術要素を使用し、お客様のご要望にお応えするシステム構成をご提供致します。
オペレーティングシステム | Windows Server | Linux | Unix系 |
HTTPサーバー | Apache | IIS | |
開発言語 |
PHP PL / SQL |
C# Visual Basic JavaScript |
C++ Objecttive-C |
データベースシステム |
Oracle My SQL |
SQL Server DB2 |
PostgreSQL |
フレームワーク | ASP.NET | Struts, Seasar2 |
Spring等 各種オープン系 フレームワーク |
クラウド | AWS | Microsoft Azure |
まとめ
システム開発には技術力が必要なのは確かですが、一方で取引先の要望に基づいてシステムを構築するためには、コミュニケーション能力も必要です。
まずは、システム開発のどの部分に携わりたいか、検討してみてはいかがでしょうか。
システム開発をご検討されている方々はぜひ一度ご相談ください。
※以下通り弊社の連絡先
アカウントマネージャー: クアン(日本語・英語対応可)
電話番号: (+84)2462 900 388
メール: konnichiwa@hachinet.jp
お電話でのご相談/お申し込み等、お気軽にご連絡くださいませ。
- オフショア開発
- エンジニア人材派遣
- ラボ開発
- ソフトウェアテスト
電話番号: (+84)2462 900 388
メール: contact@hachinet.com
お電話でのご相談/お申し込み等、お気軽にご連絡くださいませ。
無料見積もりはこちらから
Tags
ご質問がある場合、またはハチネットに協力する場合
こちらに情報を残してください。折り返しご連絡いたします。
関連記事
ハノイで「ベトナム・島根県IT企業交流会 」が開催された
2024年10月29日、Hachinet Softwareはハノイ市バーディン区のハノイ大宇ホテルで開催された「ベトナム・島根県IT企業交流会」に参加しました。