「システム開発って具体的に何をするの?」
「システム開発の業務内容について詳しく知りたい」
あなたは今このようにお考えではありませんか?
IT技術が発達している現代、システム開発に興味を持つ方も多いです。
しかし、実際に何を開発するのか、どんなお仕事なのか詳しく知っているという方は、IT系職種についていないとなかなかいませんよね。
そこでこの記事では、
・システム開発の概要
・職種の例
・必要なスキル
・システム開発を実際にするときのポイント
について、ご紹介しています。
まずはこの記事で、システム開発について、基本的な知識を身につけましょう。
システム開発とは「業務を効率化させるための仕組みを作成すること」
システム開発とは、「業務を効率化させるための仕組みを作成すること」です。
そのため、システム開発の定義としては、パソコンやソフトウェアを使っているかどうか、は関係ありません。
しかし現代においては、「システム開発」はソフトウェアなどITを使った業務効率化の仕組みの作成を指すことが多いです。
例えば、複数店舗を経営している会社が、在庫を一括管理するためのツールの作成、といったものがシステム開発の例に当たります。
システム開発の主な流れ
システム開発は、以下のステップを踏んで行われます。
・要件定義
・外部設計
・内部設計
・プログラミング
・単体テスト
・結合テスト
・システムテスト
・運用テスト
・システム移行
・運用・保守
以下、それぞれのステップを簡単に説明します。
要件定義
最初のステップ「要件定義」は、実装すべき機能を明確にすることです。
システムの依頼主からの「業務を効率化したい」といった抽象的な希望をどうシステムを解決するか、といったことを決めます。
要件定義は、システム開発において最重要な部分の一つ。
というのも、全体の方向性を決めるフェーズであるためです。
方角を間違えたらいつまでたっても目的地にたどり着けないように、要件定義のミスは納期の遅れや、予算の増加につながります。
外部設計
第2のステップ「外部設計」は、システムの外見、つまりインターフェースやシステムの流れを決める部分です。
自動販売機で例えると、缶が並んでいる外面のデザインなどを設計する段階、と言えるでしょう。
このデザインで使いやすいか、自販機で言えば一眼でどの缶が暖かい、冷たいか、がわかるデザインか、といったことを考えます。
使いやすさはシステムの定着度につながる要素です。
誰も使いにくい道具を、好き好んで使おうとは思いませんよね。
したがって外部設計は、クライアントにとっての使いやすさを考えるフェーズになります。
内部設計
第3のステップ「内部設計」は、システムの内面を設計する部分です。
自動販売機で言えば、何円入れたらボタンが点灯するようにする、といった仕組みを設計する段階にあたります。
ここはシステム会社だけで考えることが多いです。
今後のメンテナンスのしやすさを考慮して、シンプルな仕組み、構成を考えるのが重要なフェーズです。
プログラミング
第4のステップ「プログラミング」は、プログラムを設計し、それを実際に組み上げる部分です。
家の建築でいうと、家の設計と実際に木材などを使って家を建てるフェーズに当たります。
一つのシステムにおいて、作るべきプログラムは一つとは限りません。
システムをいくつかのプログラムに分け、それぞれを設計、プログラミングをする必要があります。
またこの時に、次の「単体テスト」で確認するべき項目も決めておきます。
単体テスト
第5のステップ「単体テスト」は、開発者が、システムがパーツごとにちゃんと動くか、を確かめる段階です。
パーツごとにテストすることで、問題が発生したときの原因がわかりやすくなります。
プログラミングから単体テストへは、一度移ったらそれで終わり、というわけではありません。
ある一つのパーツを作成→テスト→別のパーツを作成…と、二つのステップを行ったり来たりする場合が多いです。
結合テスト
第6のステップ「結合テスト」は、単体テストを終えたパーツを複数合わせて、それらがちゃんと動くか、を確かめる段階ステップです。
結合テストは、IT(Integration Test)、JT(Joint Test)などとも呼ばれることも。
システム開発においてはそれぞれのパーツが問題なく動いても、結合してもちゃんと動く、とは限りません。チームメンバーそれぞれが優秀でも、チームワークやチームでの成績がいいとは限らない、というのと似たようなものですね。
単体テストと同じく、結合テストにおいても、事前にチェックしておくべき項目を決めておきます。
システムテスト
第7のステップ「システムテスト」は、システム全体が決めた通りに動いているか、を確認するテストです。
システムテストは本番とほぼ同じ状況の中で行われます。
システムテストはさらに、
・確認テスト
・評価テスト
・負荷テスト
などに分けられます。
運用テスト
第8のステップ「運用テスト」は、最後に行われるテストです。これまでのテストとは違い、テストをするのは開発者ではありません。
システムを依頼した顧客自身がシステムを操作して、結果を確認します。
システム移行
第9のステップ「システム移行」は、テストが完了したシステムを、開発環境から実際の稼働環境へ移すステップです。
システム移行は「本番リリース」、「カットオーバー」などとも呼ばれます。
システム移行が行われるのは、主に休日や夜間。なぜなら日中のシステム移行は、業務に支障をきたす場合があるためです。
運用・保守
最後のステップ「運用・保守」は、システムを実際に動かし、適宜メンテナンスをするステップです。
運用がシステムの稼働状況を監視するのに対して、保守は、修正などのためにシステムに変更を加えるもの。
しかし「運用・保守」のどちらでもシステムの安定稼働が目的なのは同じです。
次は、このようなシステム開発に関わる職種の例とそれぞれの業務内容をご紹介します。
システム開発に関わる職種の例とそれぞれの業務内容
システム開発には、何種類もの職業の人が関わります。
ここではシステム開発に関わる主な職種として、
・エンジニア
・プログラマ
・プロジェクトマネージャー
の3つをご紹介します。
エンジニア
第1の職種「エンジニア」とは、技術者のことです。IT業界に関わるエンジニアは「ITエンジニア」とも呼ばれます。
エンジニアにも何種類かありますが、システム開発に関わるエンジニアは「システムエンジニア(SE)」と呼ばれます。
システム開発においてシステムエンジニアは、システムの設計から開発、そしてテストまでを計画し、進める存在。
クライアントの要望を汲み取り、仕様を決定するポジションです。
したがって、システムエンジニアの責任は重大です。
ちなみにシステムエンジニア以外のITエンジニアとしては、
・ネットワークエンジニア
・サーバサイドエンジニア
・フロントエンドエンジニア
などが挙げられます。
プログラマ
第2の職種「プログラマ(PG)」は、システムエンジニアがつくった設計に基づいて、システムを実際に作る、つまりプログラミングをする人たちを指します。
家づくりにおいて、実際に家を建てる大工さんのような存在ですね。
プロジェクトマネージャー
第3の職種「プロジェクトマネージャー」は、その名の通りプロジェクトを管理する存在です。プロジェクトマネージャーは1つのプロジェクトにかける予算や人員を設定します。
プロジェクトマネージャーは経験を積んだエンジニアがつくポジション。
技術的な知識に加えて、マネジメントに関するスキルが求められます。
次では、システム開発に必要な能力をご紹介します。
システム開発に必要な能力
システム開発には、以下の3つの能力が必要です。
・「好き」という気持ち
・技術的知識
・コミュニケーション能力
以下、それぞれを解説します。
「好き」という気持ち
まず第1に必要な能力は、システム開発に対する「『好き』という気持ち」です。
というのも「好き」という気持ちがなければ、幸せを感じながらシステム開発を続けることは難しいため。これは他の職に関しても言えますね。
加えてシステム開発が含まれるIT業界では、日進月歩で新たな技術やツールが開発されます。
これら業界の進歩にキャッチアップするためにも、システム開発そのものを楽しむ気持ちが必要です。
技術的知識
第2に必要な能力は、技術的知識です。
木材の切り方や組み方がわからない人は、大工にはなれませんよね。
まずは、それらに関する知識を覚えなくてはいけません。
システム開発に関する職業でも、それは同じです。
求められるレベルは職や会社によって異なりますが、最低でも基礎的な知識を持っておく必要はあります。
加えて技術的知識は、一旦覚えて終わり、というものではありません。
前述のように、技術の進歩に合わせて日々アップデートする必要があります。
コミュニケーション能力:顧客の要求を把握し、適切に提案する力
第3に必要なのが、コミュニケーション能力です。
そしてここでのコミュニケーション能力は、「顧客の要求を把握し、適切に提案する力」を指します。
システム開発においてコミュニケーション能力が必要な理由は、ほとんどの場合で取引先はシステム開発には詳しくないためです。
大工さんに家作りを頼む人が、家の建て方には詳しくないのと似ていますね。
例えば、取引先はシステムの点から見ればあまり明確になっていない要望を出したり、「これは簡単にできるだろう」と、実際には何ヶ月もかかるシステムを希望する場合もあります。
取引先の抽象的な要望を深掘りして、システムで実現可能なレベルまで明確にするために、コミュニケーション能力は必要なのです。
次では、システム開発を効率的に進めるための2つのポイントをご紹介します。
システム開発を効率的に進めるための2つのポイント
システム開発を効率的に進めるためには、以下の2点をおさえておくのがおすすめです。
1. 目的を明確にする
2. ツールを導入する
以下、それぞれを解説します。
目的を明確にする=要件定義をしっかりとする
まず必要なのが、システムの目的を明確にする、言い換えれば要件定義をしっかりとすることです。
というのも目的を明確にしないと、具体的に何をするべきか、が明確にならプロジェクトが効率的に進まないためです。
例えるならば、システム開発における目的は車の運転における目的地のようなもの。
目的地が「どこでもいいから目に入ったイタリアンのお店」だと、色んな道を走り回る、また道沿いに何があるかいちいち見なくてはなりませんよね。
一方で、目的地を「このレストランの〇〇店」と明確に決めれば、少ない道順で目的地にたどり着けます。
そして、システム開発において目的の明確化にあたる作業が「要件定義」です。
したがって「要件定義」をしっかりしておかないと、
・スケジュール通りに作業を進められない
・大規模な作業が追加される
・システムがだいたい完成したところで、取引先から根本的な修正を求められる
といった事態が発生する場合があります。
取引先が「とりあえずつくってほしい」と言った場合でも、まず要件定義をするようにしましょう。
ツールを導入する
第2のポイントは、システム開発に関わるツールの導入です。
というのも人力では膨大な時間がかかる作業や日々の進捗報告は、ツールによって短時間でできる場合があるためです。
例えば、テストを自動化してくれるツールを使用すれば、テストにかかる時間を短縮できますね。
また、ヒューマンエラーによるチェックポイントの見落としも避けることができます。
加えて、日々の進捗報告もツールで簡略化できます。
例えば、日々の作業をオンラインで共有すれば、誰がどの作業に当たっているのか、一目で確認できますね。
システム開発まとめ
この記事では、まずはじめにシステム開発とは、「業務を効率化させるための仕組みを作成すること」とご紹介しました。
定義には含まれていませんが、現代の日本ではシステム開発 = パソコンでシステムを開発する、と認識されているのが一般的です。
パソコンを使ったシステム開発は、以下の8つのステップを踏んで進められます。
・要件定義
・外部設計
・内部設計
・プログラミング
・単体テスト
・結合テスト
・システムテスト
・運用テスト
これらのステップの中で特に重要なのは、顧客の要望を明確にする「要件定義」です。
次に、システム開発に関わる職種として、以下の3つをご紹介しました。
・エンジニア:システムの設計などに関わる技術者
・プログラマ:設計されたシステムを実際に組む人
・プロジェクトマネージャー:プロジェクト全体を管理する人
次に、システム開発に関わるために必要な能力として、以下の3つを紹介しました。
・システム開発に対する「好き」という気持ち
・技術的知識
・コミュニケーション能力
最後に、システム開発を効率的に進めるためのポイントとして
・要件定義をしっかりとする
・ツールを導入する
をご紹介しました。
システム開発には技術力が必要なのは確かですが、一方で取引先の要望に基づいてシステムを構築するためには、コミュニケーション能力も必要です。
まずは、システム開発のどの部分に携わりたいか、検討してみてはいかがでしょうか。
システム開発の依頼をご検討中ならブレアパッチにご相談ください
「システム開発の依頼をしたいけど詳しくないと無理?」
「どんな手順で依頼を進めればいいかわからない」
「具体的な仕様が決まっていないけど相談できる?」
今あなたがこのようなことでお困りなら、ぜひ弊社にご相談ください。
お客様にわかりやすいように、丁寧にご提案・アドバイスさせていただきます。