今日はArchitecture of Software Systemsの紹介。
この授業は、そもそもシステムアーキテクチャとは何なのか?という話から始まります。
アーキテクチャはある理由(アーキテクチャドライバと言います)に基づいたシステムの構造であり、その理由というのは①機能要件、②品質特性、③ビジネス/技術制約 となってます。
機能要件とはいわゆるアプリケーションの要件(例えばこんな画面がほしいとか、こんな帳票を月次で出したい等)。
品質特性とはパフォーマンスや拡張性、メンテナビリティ等の「ソフトウェアの機能としては現れない要件」。
ビジネス/技術制約とは、我々が設計をするより前に決まってしまっている制約で、例えば「既存のサーバを使う必要がある」「社内のライブラリを再利用する必要がある」など。
これらのアーキテクチャドライバというのは、一つを優先すると一つが損なわれる可能性があり、互いに影響しあうものなので、システムを作り始めた時にちゃんとそれらの優先順位をつけて、ステークホルダーに承認してもらう必要があります。
そしてシステムの設計初期段階でこれらを満たす大きな枠組を構築(設計)しておかないと、後々困ったことになりますよ…というお話です。
で、それをどうやって構築すれば良いの?ということを学んでます。
さて、今はそのアーキテクチャクラスでグループプロジェクトをやっています。
初のプロジェクトは、とある企業のビジネス要件を提示され、この企業のアーキテクチャドライバーは何か?を押さえた上で既存のシステムをどのように拡張するかというものです。
#明日提出なので今レポート書いてました。辛い。。
で、このプロジェクトでは実際にコーディングもします。
私はあまりコードにタッチしたくなかったので他のメンバーにおまかせしていたのですが…、
出来上がったコードを見ると本当~にきれい!!!
何と言うか、美しいコードだなぁと思ってしまうのです。
(またギークっぽい話ですが)
正直、会社にいた頃こんなに美しいコードを書ける人は一人か二人ぐらいしか知りませんでした。
しかしCMUでは普通の学生がちょいちょいっとこんなコードを書けてしまうのね…と衝撃を受けました。
おそらくみんな当然のようにデザインパターンとか学んで当然のようにそれを駆使してきたのでしょう。
こんなコードを見ていると、あぁ、やはりコーダーにはなれない(この次元では勝負にならない)と痛感してしまいます。
アーキテクチャの授業なのに実装で衝撃を受けるとは思わなかったな…(苦笑)
3 コメント:
私には良くわかんないけど、がんばってるみたいだね!!
そっちは東京とは比べ物にならないくらい寒いみたいだから、風邪ひかないようにね!異国の地で寝込んだら、心が折れそうだね・・・
こっちは期間限定専業主婦満喫してるぜ~3月にエジプト行くことになったから、着々と準備してるよ。先進国に行くのと違って、余分なものをたくさん持っていかないといけないから、荷物が多いよ~
へ〜そんなきれいなコード、私も見てみたい!
てかさ〜そういう人って、言葉で表すと、「育ちが違うわ〜」って感じることない?なんていうか、実装の理論を学んでそれを実践してきた過程があって、、 こっちが今更じたばたしても超えられない壁!みたいな。。
結構へこみます。。
まあでも、コーディングじゃないところでバリュー出していこう!ってことでお互い頑張りませう〜。
>ひろちん
お~今日からすごい雪降ってるよ、明日の朝どれだけ積もってるか考えたくないわぁ。エジプト!さすが!!ブログに旅行記書いてね☆
>Machi
ほんとそうだよね。今日はCSの選択科目の方で更なる衝撃を受けたよ~、OSレベルのコードをデバッグして16進数の文字列見てバグを発見してしまう人達を見て…私は生き残れるのかしら~みたいな(笑)自分ごときをギークとか呼んじゃだめだわ。頑張ろう!!
コメントを投稿