シェルパ・アンド・カンパニー株式会社でイネーブリングチームに所属する上野です。
フルスタックエンジニアで、クラウド・ネイティブな構成を積極的に採用しています。
要求分析には、ユースケース駆動開発を体系化したIvar Jacobsonの系譜(OOPSLAの Objectory / “Use-Case Driven”)を基盤に置き、実務レベルでの書き方や粒度調整は Alistair Cockburnに強く影響を受けています。
設計やリファクタリング、アーキテクチャ上の判断では、Martin Fowler(martinfowler.com)らの実践知やEric Evansのドメイン駆動設計(DDD)を参照しつつ、データモデルはEdgar F. Coddのリレーショナルモデルと正規化理論(BCNFなど)を基礎として、5NFにまで立脚して検討します。(ウィキペディア - 関係の正規化)
想定読者
本連載は、次のような方を主な対象として書いています。
- 要求や仕様を整理し、開発チームに伝える立場の方(PdM / PM / Biz / ドメインエキスパート)
- 要求を設計・モデル・アーキテクチャへ落とし込む立場の方(テックリード / アーキテクト / シニアエンジニア)
一方で、ソフトウェア開発の属人性や品質の揺れに課題を感じているエンジニア・マネージャーの方にも、問題の構造を捉えるための視点として役立つはずです。
前提
本連載で語るソフトウェア開発とは、主として長期運用(2年以上)・保守していくものを対象としています。研究開発領域で重要視されるPoCなどでは異なるアプローチが必要なので、企業がソフトウェアプロダクトを構築する際の一つの工学的アプローチとなります。
再現可能なアーキテクチャ入門:なぜ“工学”から始めるのか
ソフトウェア開発は、しばしば「個人のセンス」や「経験則」で語られがちです。
しかし、私は要求分析・設計・アーキテクチャ・データモデルに至るまで、一貫してソフトウェア工学に基づく再現可能な方法を好んでいます。
ソフトウェア工学とは、基礎科学に基づいて再現可能なソフトウェアの構造を探究し、構築し、維持・管理するプロセスです。これはまさに「工学」(エンジニアリング)という学問そのものと言えます。
このアプローチによって、属人性を最小化し、品質を最大化することができるからです。
この連載では、私が普段実践していること、例えば、
- 工学に基づく要求分析
- モデル駆動の設計
- アーキテクチャの整合性維持
- 述語論理に基づくリレーショナルモデル
といった話を、段階的に掘り下げていきたいと思っています。
ただし、これらすべてを一度にお伝えすることはできません。各テーマは非常に深く、一冊の分厚い書籍ができるほどの内容です。そのため、数回に分けてお届けします。
まずは第1回として、「再現可能なアーキテクチャとは何か」「なぜ工学が必要なのか」という導入部分から始めたいと思います。
続きを読む