保守開発とは?必要なスキルや開発・運用・保守の考え方を解説
記事の監修
代表取締役村越 聖人
2006年からエンジニアよりデジタル業界でのキャリアをスタート。
大小様々なWebシステム開発およびシステム運用保守を経験。
フルスタックエンジニアとして上流から下流工程まで一連の業務を担当するとともに、サーバー設計、構築、運用設計などのサーバー管理者業務も兼任。
近年は、顧客折衝を含む提案型営業からDMP絡みのデータ分析業務をはじめ、プロジェクトの全体統括・SEなど業務要件に合わせたポジショニングで顧客ニーズの最大化を図るサービス提案を実施。
新規事業で立ち上げた自社サービスにて、発明者として特許取得。
2019年5月 株式会社glorious future 設立。
2006年からエンジニアよりデジタル業界でのキャリアをスタート。
大小様々なWebシステム開発およびシステム運用保守を経験。
フルスタックエンジニアとして上流から下流工程まで一連の業務を担当するとともに、サーバー設計、構築、運用設計などのサーバー管理者業務も兼任。
近年は、顧客折衝を含む提案型営業からDMP絡みのデータ分析業務をはじめ、プロジェクトの全体統括・SEなど業務要件に合わせたポジショニングで顧客ニーズの最大化を図るサービス提案を実施。
新規事業で立ち上げた自社サービスにて、発明者として特許取得。
2019年5月 株式会社glorious future 設立。
システムエンジニア (SE) の業務で、保守開発の担当になった際、「保守開発とは何をする業務?」「保守開発に必要なスキルは?」といった疑問を持つ方も多いでしょう。 そこで今回は、保守開発の業務内容やシステムを管理する際の考え方、必要なスキルについて解説していきます。
- システムエンジニア(SE) 業務で、システム保守・開発に携わっている方
- 保守開発の業務内容と考え方を確認したい方
- 保守開発に携わる前に、必要なスキルを確認しておきたい方
保守開発とは【既存システムの改善】
保守開発とは、既存のITシステムの不具合修正や機能追加を行い、より良いシステムへと改善する業務です。 具体的には、運用フェーズに入ったシステムを管理し、運用・作業の中で発覚した不具合の修正や、顧客のニーズを基に必要な機能を追加します。
すでに稼働している最中のシステムを管理するため、「システムを停止できない」「現行の仕様・業務フローを踏襲する必要がある」など、さまざまな制約があり、保守開発のための専門的なスキルが求められます。
システム開発は新規と保守に分かれる
保守開発は、システム開発業務の1つです。システム開発業務は他に、ゼロからシステムを開発・構築する新規開発があります。
新規開発においては、まずクライアントのニーズを要件として取りまとめ、それを踏まえてITシステムとして設計、開発していきます。
一方で保守開発は、上述のようにすでに存在するシステムの不具合修正や改善、機能追加が主な作業です。
新規開発 | 保守開発 |
要件定義、設計 など | 不具合修正、機能追加 など |
システムは「開発」「保守」「運用」がある
システム開発という業務について、もう少し詳しく見てみましょう。システム開発業務に含まれる作業として、「開発」「保守」「運用」の3つがあります。
開発:クライアントの要望に合わせたシステムの具体化
開発は、クライアント (顧客企業や社内ユーザー部門) の要望を整理し、それに応えるITシステムを作り上げる作業です。
具体的な作業内容としては、以下のようなものがあります。
要件定義 | クライアントのニーズをヒアリングし、ITシステムとして実現可能な形 (要件) に落とし込む。 |
---|---|
設計 | 要件に基づき、実際の画面やプログラムのロジックを検討する。 |
プログラミング | プログラミング:設計に基づき、プログラミング言語を用いてシステム (アプリケーション) を実現する。 |
テスト | システムのすべての機能に要件や設計と異なる部分がないか、検証する。 |
保守:システムを管理・改善
保守は開発が完了したシステムを対象に、運用していく中で生じた不具合を修正したり、クライアントからの追加要望に応えて新機能を追加するなどの作業です。 また、より早く処理が完了するようにデータベースをチューニングするなども保守作業の対象です。
保守作業については、「システム保守とは?運用との違いや業務内容をわかりやすく解説」でも紹介していますので参照してください。
運用:監視と障害発生時の原因の特定
運用は開発が完了したシステムを対象に、システムの目的を達成するために処理 (業務) を実行したり、処理にトラブルが生じていないか監視したりする作業です。 トラブルには、ストレージやメモリーなどハードウェアの故障や、プログラムのバグに起因するソフトウェア障害などがあります。 トラブルが発生した場合には、その原因を調査し、直ちに復旧作業を行います。システムの性質によりますが、24時間体制で監視を行うことも多いです。
保守開発で求められるスキル
既存システムを改善する作業である保守開発において、システムエンジニアに求められるスキルにはどのようなものがあるでしょうか。
以下で解説します。
既存のシステムへの理解
保守の対象となる現行システムについての網羅的な理解が必要です。クライアントの要望に応えるためには、そもそものクライアントが抱えている課題や目的、システム化する際の要件、設計、プログラムなどを理解しておかなければなりません。
また、「なぜこのような現状なのか」を知ったうえで、クライアントの要望が対応可能なものなのか、ゼロから開発し直さなければ実現できないものなのか、といった判断を下します。 他のシステムで代用できる機能があるからと安請け合いすると、「実はさまざまな理由があって対象システムでは実現できないことが後から判明した」といったこともあります。保守開発は、まず現行システムの徹底的な理解から始まります。
インフラの知識
現行システムを構成するインフラ (ハードウェア) についての理解も重要です。 特に、長期間運用されているシステムでは、10年以上前のハードウェアで構成されていることも多く、最新のパソコンとはアーキテクチャーも性能も異なる場合があります。
そのため、追加機能を開発する際にも、使用するプログラミング言語や利用できるメモリーサイズなどでさまざまな制約が生じることがあります。 保守開発においては、システムのインフラ構成によって必要とされる知識が変わってきます。 極めてレガシーなシステムの場合、現役世代にスキルを持った人材がいないため、定年退職したエンジニアを再雇用する、といったケースまであります。
クライアントの要望を聞くヒアリング力
現行システムの構成や実際の挙動については、クライアントの過去に出ていた要望が反映された結果であるため、なぜこのような仕様なのかということを直接クライアントからヒアリングすることが重要です。
保守開発を通じてシステムを改良していくうえで、現行システムの変えるべき部分、変えてはならない部分を適切に判断するために、クライアントと密接にコミュニケーションを取る必要があります。
取捨選択する力
クライアントの要望に応えることは重要ですが、予算やスケジュールなどの制約で、すべては実現できないことがほとんどです。
そのため、要望に優先順位を付けて、できることから取り組んでいきましょう。
トラブルへの対応力
現行システムには、運用期間の長期化によるハードウェア・ソフトウェアの不具合や、文書化されていない、または記録に残っていない仕様があることがままあります。 そのため、保守作業を進める中で、意図しない挙動に遭遇することもあります。そのようなトラブルに対して状況を正確に把握し、素早く対応するスキルが求められます。
保守開発を担当する前に身に着けておくと便利な経験
最後に、これから保守開発に関わることになる方が身に着けておくとよい経験、スキルを紹介します。
多様な業務経験
保守開発の対象となるシステムは企業活動の重要な部分を担うものであることが多く、周辺のさまざまなシステムと密接に連携しています。 そのため、機能を追加する際には、他のシステム・業務に及ぼす影響をしっかりと検証する必要があります。
IT・プログラミングの経験の他に営業や生産管理、経理、総務系などの経験があると、クライアントの業務がイメージしやすくなり、開発を進めるうえで起きやすいトラブルやクライアントとの認識の齟齬を減らせます。 また、IT以外の業界からIT業界に転職する際、業務経験が生かせる保守開発からキャリアを積んでいくパターンも一般的です。
プログラミングの知識
保守開発においても、機能の追加を行うことがあるため、プログラミングの知識が求められます。なお、対象のシステムが長期間運用されている場合、使用するプログラミング言語も古いバージョンや仕様に限定されることがあります。 そのため、現在流行している最新のプログラミング言語よりは、JavaやC言語といった歴史のある言語の方が、保守開発業務とは相性がよいかもしれません。
まとめ
今回は、システムエンジニア (SE) の仕事のうち、保守開発という業務について解説しました。
保守開発は既存システムの運用を指す言葉です。
保守開発はシステムの知識だけでなく、柔軟なトラブルの対応と、顧客やクライアントの声を聴く力が求められる業務と言えます。
- 保守開発とは、既存のITシステムの不具合を修正したり、機能を追加してより良いシステムへと改善する業務
- 保守の対象となる現行システムについての網羅的な理解が必要
- 現行システムを構成するインフラ (ハードウェア) についての理解も重要
- システムを改良していくうえで、クライアントとの密接なコミュニケーションが必要