ここでは、弊社の事業内容(提供サービス)について説明します。
システムゼウスでは、アプリケーションの受託開発をメインに行っています。工程としては基本設計、詳細設計、製造(コーディング)、試験です。チームで取り組みます。製造のみ、試験のみという特定工程のみの仕事はせず、設計から製造、試験を一貫して取り組みます。
設立時から伝統的に、ミッション・クリティカルなシステムの開発が得意です。加えて、新技術への柔軟な対応もセールスポイントであり、Amazon Web Service(AWS)の活用やスマートフォン向けシステムの開発なども守備範囲としています。一方で、流行りだけを追うようなことはなく、脆弱性に配慮した丁寧なWebプログラミングや暗号化、電子署名を適用した安全な通信ロジックの実装などの基礎的な技術、そしてベースとなるインフラに対する理解も重視しています。
ウォーターフォール型開発
ここで図示しているのは「ウォーターフォール型開発」と言われる開発手法です。川が上から下に向かって段々と流れていくように、左から右に開発の工程が段々と進んでシステムが仕上がっていく様をとらえてこう呼ばれています。
いきなり製造(プログラミング、コーディング)をするのではなく、事前に複数工程に分けて設計するのには理由があります。ひとえに品質が良いシステムを作るためです。何十万~何百万行(STEP)からなる比較的大規模なプログラムを作る場合、いきなり製造から始めると、複数の担当者間での役割分担は難しく、さらに出来上が るものは漏れやダブり、間違いだらけになることでしょう。段階的におおまかな設計から始めて徐々に細かく設計することで、各段階で品質をチェックすることが可能となり、そうやって精度を高めた設計書を基に製造したプログラムはやはり品質が良いものになります。
弊社が最もこだわる工程は製造工程(プログラミング)です。エンジニアたるもの、最終成果物であるプログラムを作れてなんぼ、という専門技術者としての自尊心がここにあります。一方で、プロジェクト管理難易度や品質に大きな影響をもつ点で軽視できない重要な工程は上流にあり、具体的には要件定義や基本設計、詳細 設計といった製造工程の前工程です。弊社はシステム開発を受託する際、基本設計から受託するケースが多いです(金融では要件定義工程から受託する場合があります)。上流工程は製造と異なり抽象度が高いため、そつなくこなすには高い言語能力や全体を俯瞰する力など、製造とはまた違う能力が必要となります。弊社は製造に主軸を置きつつ上流工程にも取り組み、守備範囲が広いと自負しています。
実は最近の開発現場では、典型的なウォーターフォール型開発でないケースが出てきています。品質よりスピードを、ドキュメントより最終成果物であるプログラムを重視する場合にこの傾向は見られます。こういった案件に応じるために弊社では、ウォーターフォールの上流工程にプロトタイピングを組み合わせたり、設計書を必要最低限のボリュームに抑えるなどの工夫をして対応します。
アプリケーションとインフラの区別
システム開発の現場では、アプリケーションとインフラ(基盤)を区別して役割分担することが多いです。理由はそれぞれの特性が大きく異なるためです。
アプリケーション開発は、顧客の要件を受けて必要な機能を設計、製造し、設計通り動作するかテストします。たとえばECサイトを開発する場合、商品閲覧や買い物かご、決済に関する機能を作りこむのはアプリケーションの範疇となります。
インフラ構築では、アプリケーションの動作に必要な環境を設計、コンフィギュレーションし、設計通り動作するかテストします。たとえばECサイトを開発する場合、ネットワーク、サーバのハードウェアスペックと台数、システムの障害に備えた冗長構成、システム監視、サーバに搭載するOS・データベース・その他ミドルウェアに何を採用しどのように設定するかなどは、インフラの範疇となります。
弊社の主な守備範囲はアプリケーション開発になります。インフラ構築については他社が行うケースが多いですが、昨今はクラウドの隆盛から、Amazon Web Service(AWS)等のクラウドサービスの上でアプリケーションを動作させる案件が増えてきています。クラウド以前のオンプレミス全盛期は、インフラと言えばサーバ筐体の ハードウェアの供給や保守も付帯業務として必要で、弊社には進出しづらい分野でしたが、クラウドの登場で物品供給・保守から解放され、弊社にも進出できる可能性が出てきています。AWSに代表されるクラウドインフラの構築も弊社の守備範囲とし、アプリケーションとインフラをまとめて受託することを考えています。
各開発工程の説明
No |
工程 |
概要 |
1 |
要件定義 |
どのようなシステムを開発するか、要求事項を網羅的に定義する。システム開発の起点となる。 |
2 |
基本設計 |
要件定義の内容を遵守し、後工程の詳細設計が可能になるレベルまで荒い粒度で設計する。作るものの輪郭を中心に設計することから、外部設計とも呼ばれる。 |
3 |
詳細設計 |
基本設計を受け、後工程の製造が可能になるレベルまで、詳細な粒度で設計する。 |
4 |
製造 |
プログラミング(コーディング)を行う工程である。 |
5 |
単体試験 |
各モジュールに閉じて、正常に動作するか確認する試験である。詳細設計の裏をとるイメージ。 |
6 |
結合試験 |
各モジュールや機能を結合して正常に動作するか確認する試験である。基本設計の裏をとるイメージ。 |
7 |
総合試験 |
アプリケーションとインフラを組み合わせ、システム全体として連動して正常に動作するか確認する試験である。要件定義の裏をとるイメージ。 |