📝

【上流_2日目_2回目】システム設計1冊目

2024/03/23に公開

こんにちは投資ロウトです。

背景

今まで開発側にいることが多く、設計をバリバリやっていた訳ではないですが、初の要件定義をやることになったためと、今後社員ができた際にきちんと教育指導が行えるように成長することが求められています。

学習アウトプット

設計の成果物

  • 管理系
    →画面一覧
    →テーブル一覧
    →プログラム一覧

  • 俯瞰系
    →システムアーキテクチャ
    →バッチ全体設計
    →ネットワーク全体構成図

  • 個別系
    →画面レイアウト
    →テーブルレイアウト
    →サーバ設定仕様書

自社開発で設計を行った時に、書いていないドキュメントも多数ありました。 やはり自分ができない分野の人材を検討しないといけないなとも思いました。

また現場先によりますが、大規模なSierであれば設計などもしっかり行う現場もありますが、技術力がめちゃめちゃ高い現場は「画面レイアウト」だけ記載し、細かい要件などの資料も特に何もなく、ドキュメントがほとんどないという現場もあります。

恐らくGAFAなどの現場でもそういった状態なのではないかと思いました。昨今の早いビジネススピードについていくために、人材が豊富な現場ではドキュメントを整備してから開発を行いますが、ウォーターフォールではついていけないので、Wウォーターフォールなども海外の現場では取り入れているというお話も聞いたことがあります。

https://ideson-worx.com/ウォーターフォールモデル/

全体像

システムを作りたいという要望を取りまとめて、以下の設計を行っていく必要があるとのこと。

①基本設計1

・システムアーキテクチャ設計
・信頼性・安全性設計

②基本設計2

・ドキュメントの運用ルール、全体としてどうするかの設計

・環境設計
・性能設計
・セキュリティー設計
・運用方式設計
・外部接続方式設計
・標準化設計

③詳細設計

・入出力設計
・データベース設計
・ロジック設計
・ネットワーク設計
・サーバ設計

→まだまだ学習を進めていかないといけない項目も多岐に渡りあるんだなと理解しました。

データベース

NoSQL・・・データの一貫性を担保しないかわりに、ビッグデータを高速に処理可能

https://www.kagoya.jp/howto/it-glossary/server/nosql/

ゆくゆくビッグデータやAI関連に進むので、きちんと設計できるように理解を進める必要があると認識しました。

ネットワーク

非機能要件で大変さが膨れ上がるとのことでした。

要件 対策例
可用性 冗長化対応を行い、サーバー等がダウンしても、システムが継続して実施できることなど
機能・拡張性 大量の通信を捌けるようにロードバランサーなどを設置する
運用・保守性 メンテナンスでもずっと稼働させられるように、冗長で切り替えができること
セキュリティ AWSのWAFなどを使って、ハッカーなどからシステムを守ることができること

確かに上記などを含めて、細かい要件になればなるほど、AWSやインフラに関しての深い知識が求められるんだなと理解しました。

サーバ

・どんなシステムにするから、どのようなプログラミング言語を採用するのが良いのか
・開発やテスト環境をどうするのか
・どれくらいの負荷に耐えられるのか

その他

システムに関する分野の深さというのはびっくりしました。設計をするだけでも多岐にわたる知識が必要であり、それぞれの専門家がいるんだとも理解しました。

また「基本情報技術者試験」や「応用情報技術者試験」などは、システム全体を理解する上でとてもおすすめだよと著者は言っておりますし、他にも多岐にわたる専門家として極めていくという道もあるとのことです。

・システムアーキテクト
・データベーススペシャリスト
・ネットワークスペシャリスト
・情報処理安全確保支援士

これらも設計を行う上で理解していくと良い資格試験とのことでした。

また聞いた話ですが、会社によっては目指したい方向性によって資格試験を導入し、それが給与に反映されるともあります。社員が成長しやすいように、そう言った方向性についてのアドバイス等もきちんと行って行けるようになっていかないといけないと改めて認識しました。

Discussion