ソフトウェア工学0111

ソフトウェア工学
理工学部
情報システム工学科
新田直也
ソフトウェア工学のまとめ

ソフトウェア工学:
ソフトウェアの開発,運用,保守に対する,系統的で統制さ
れ定量化可能な方法.すなわちソフトウェアへの工学の適用.

ソフトウェア工学は未だ確立していない.


銀の弾丸などない(人月の神話,F.P.ブルックス,Jr.)
→ 一歩一歩ゆっくりと進歩していくしかない.
ソフトウェアの本質:




複雑性
同調性
可変性
不可視性
プロセスとプロダクト
ソフトウェアの中心課題はプロセスとプロダクト.
 開発プロセス(ライフサイクル): 開発の手順や計画






ウォーターフォール
スパイラル
プロトタイピング
アジャイル
プロダクト: 開発における成果物




何を基準に世界を理解(モデル化)するか? モデルをどう表
現するか?
構造化技法.
オブジェクト指向技法.
UML,デザインパターン,フレームワーク
ウォーターフォールモデルの問題点

ウォーターフォールモデル:
ひとつひとつ間違いがないことを確認しながら(工程
を経て)進めていく.特に,上流工程(分析,設計)を
重視する.

何が問題か?



開発期間が長くなる.
成果物を逐一残すため負荷が増大.
後戻りを許さないため,開発途上で仕様や設計の変更が
できない.



最初から完璧な設計なんてできない.
最初から完璧な仕様なんてわからない.
そもそも仕様は変化するもの.
ウォーターフォール以降
仕様の可変性
→ 機能ごとに実装(スパイラル)
 仕様の不可視性
→ 早い段階で可視化(プロトタイピング)
 設計の可変性,予期不可能性
→ 実装時の設計変更(リファクタリング)
 開発工程全般にわたる予期不可能性
→ 予期不可能であることを前提(アジャイル)

構造化分析
処理(プロセス)を基準に対象領域を構造化.
 処理とは入力から出力へのデータの変換.

積荷票
倉庫係
在庫ファイル
更新処理
出庫指示書 出庫指示書
作成処理
出庫依頼
更新情報
在庫ファイル
在庫不足リスト
新規出庫
判定
酒屋の在庫問題のDFD(入庫処理)
倉庫係
オブジェクト指向
オブジェクトを基準に対象領域を構造化.
 オブジェクトとはデータに操作がくっついたもの.
もの,概念,実体と捉えてもよい.

オブジェクト指向モデリングのコツ(1)

処理をオブジェクト(クラス)としないこと.

もの,概念,データをクラスにしてみる.


店,客,クリーニング品,チケット,タグ,料金表,注文
作成したクラスはどのような情報(データ)を持って
いる(知っている)かを考える.

持っている情報をメンバ(属性)または別クラスにする.


店は店名と客の情報を持っている.
客は名前と電話番号という情報を持っている.
オブジェクト指向モデリングのコツ(2)

継承(汎化)は一方が他方の特殊な
例になっている場合にのみ用いること.


対応関係を考えること.


客は店の特殊な例ではない.
店1つに0人以上の客が対応する.
知りたい順序で誘導可能性を決める.

店の情報から客の情報を得たい.
デザインパターン

Observerパターン
アプリケーションフレークワーク

アプリケーションフレームワーク: 再利用可能なア
プリケーションプログラムの骨組み.
アプリケーション1
アプリケーション2
再利用
アプリケーション3
再利用
フレームワークA
オブジェクト指向とフレームワーク
フレームワークはオブジェクト指向技術の集大成.
 2種類のフレームワークがある.

<Called framework>
既存の
コード
既存の
クラス
呼び出し
継承
新しい
子クラス
<Calling framework>
既存の
抽象クラス
フレームワーク側
アプリケーション側
呼び出し
呼び出し
新しい
コード
継承
新しい
具象クラス
まとめのまとめ
結局,特効薬(銀の弾丸)はまだ存在しない.
 技術の地道な積み重ねによってのみ発展する?
→ 新しい技術をチェックしておくこと.
 ただし,ソフトウェア工学分野には使えない技術も多
いので注意が必要.
「ここが明るくて探しやすいからですよ。」
 後は,実務経験を積むこと.



失敗
苦労
最後に…

スティーブジョブスの話.(是非一度読んで欲しい.)
http://pla-net.org/blog/archives/2005/07/post_87.html
「未来に先回りして点と点を繋げて見ることはできない、君た
ちにできるのは過去を振り返って繋げることだけなんだ。だ
からこそバラバラの点であっても将来それが何らかのかたち
で必ず繋がっていくと信じなくてはならない。自分の根性、運
命、人生、カルマ…何でもいい、とにかく信じること。点と点が
自分の歩んでいく道の途上のどこかで必ずひとつに繋がっ
ていく、そう信じることで君たちは確信を持って己の心の赴く
まま生きていくことができる。結果、人と違う道を行くことに
なってもそれは同じ。信じることで全てのことは、間違いなく
変わるんです。 」