設計思想/ソフトウェア工学(UML, デザパタetc) [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
・要求設計、概念設計、論理設計、物理設計までを扱う範囲とします。 >要件定義
・ビデオ(DVD/CD)の貸出を処理できる
→ 料金や期日ももちろん提示する
・ビデオが貸出中や貸出可能かどうか検索できる
・貸出期限を過ぎた会員を検索できる
必要最低限の要件はざっくりこんな感じ
もちろん実務だと会員が何百万人いて
DBの性能要件とかあるだろうが
お題であまり複雑にしても仕様がない あ、会員やビデオの登録や更新
(CRUD)はもちろん必要
穴だらけだけどそこら辺は
みんなでつついてくれ ユースケース
客
CD/DVDを借りる
CD/DVDを返す
CD/DVDを借りパクする
店員
店員登録
店員削除
ログイン
ログアウト
会員登録手続きをする
会員退会手続きをする
CD/DVDを借りる手続きをする
CD/DVDを返す手続きをする
CD/DVDを期限切れても返さない客に催促する 店員
CD/DVDの状態取得
CD/DVDの新規登録
CD/DVDの削除
が無いと現在の状況がわからんのと
新しい商品の登録ができん もっとユーザー要求に近いところから整理したほうがいいのでは?
システム構想ありきでユースケース書いてるように見えるが 期限や料金は貸出案件オブジェクトの属性にしたくなるな >>50
お題は叩き台だから
具体的に要求を出してくれれば
現実にありそうな要求としてはたとえば
DVDの貸出回数を記録して
月間トップ10を出すとかね >>51
その場合たとえば
期日クラスに問い合わせると
インスタンスを返してそれを
貸出側の属性に持たせるとか データとしては
店員
会員
CD/DVD状態
貸出記録
返却記録
ぐらい? >>3
このレスって10年ぐらい前に見た気がする
デジャヴュなのかありきたりすぎる話題なのか本当に過去にもあったものなのか
狐につままれてるみたいだ 新機軸も何もなくただ建てられただけで>>3-4みたいな
流れのままだとありきたりなクソスレに終わる
毎年春に新入社員が受ける教育のようなくだらなさ 実際ハロワとかの職業訓練ではjavaでレンタルビデオ店のシステムを作ろう
みたいのを一年かけてやる
で、書いたコードを手元に持ってて面接で見せるらしい >>55
レンタルビデオの例は
リファクタリングの本に載ってるから
モデリングの題材として定番なんだよ
>>56
じゃあ新しい話題を振ればいいじゃん
ないなら定番になるのは仕様がない 設計思想とはいうものの
実際は実装に引っ張られるので漠然と語ることなんてなかなかない
余程大規模じゃない限り会社の特性がありそれによって実装に制約が生じる
その点を考慮しての要求設計がなければまともなものはできない お題をもとに設計について議論しようとしてるスレ?
設計思想はあんまり関係ない?
もしそうなら
議論の対象を「CD/DVDの貸出」のユースケースに絞って
もう少し深く要件考えるといいんじゃないかな
貸せるかどうかの判定ルールだったり
レンタル価格の算定ルールだったり >>60
>設計思想はあんまり関係ない?
1じゃないけど
別に好きな話題振ればいんじゃね?
>>40
でもこれに誰もレスしてないから
いきなり深い設計思想を語っても
言うほどみんな乗ってこないじゃん 設計思想なのにデザパタって書いてあるスレタイが悪い >>54
顧客(特化: 会員/非会員)
店員
作品(属性: 保有数, 返却期限, 単価) (特化: CD/DVD)
→導出: 現在貸出中の数 & 貸出可能数
単品(属性: 識別子, 状態: 未貸出/未返却)
取引 個人的には>>40兄貴の講義にも興味があるけどな。
具体例を上げて解説して欲しいところではあるが。 >>61
そっか
「お題に沿って設計してみた」的なスレになれば有意義だと思うが
設計思想云々は設計思想って言葉を理解せずに使う人しかいないからゴミスレになる予感 機能一覧
店員登録
店員削除
ログイン
ログアウト
会員登録
会員退会
CD/DVD貸出
CD/DVD返却
CD/DVD期限切れ
CD/DVDの状態取得
CD/DVDの新規登録
CD/DVDの登録削除
こんなもんかな? あ、データの編集ができないな
店員編集
会員編集
CD/DVD編集
追加で 機能一覧
店員登録
店員編集
店員削除
ログイン
ログアウト
会員登録
会員編集
会員退会
CD/DVD貸出
CD/DVD返却
CD/DVD期限切れ
CD/DVDの状態取得
CD/DVDの新規登録
CD/DVDの編集
CD/DVDの登録削除
こんなもんかな? よく考えたらログインログアウトいらんね
削除ね
機能概要
店員登録
店員情報を店員Tblに登録する
店員編集
店員情報を編集する
店員削除
店員情報を削除(休眠)する
会員登録
会員情報を会員Tblに登録する
会員編集
会員情報を編集する
会員削除
会員情報を削除(休眠)する
機能概要
CD/DVD貸出
貸出情報を貸出tblに登録する
CD/DVD返却
返却情報を返却tblに登録する
CD/DVD期限切れ
期限切れの貸出情報を表示する
CD/DVDの状態取得
CD/DVD情報を表示する
CD/DVDの新規登録
CD/DVD情報をCD/DVDtblに登録する
CD/DVDの編集
CD/DVD情報を編集する
CD/DVDの登録削除
CD/DVD情報を削除(休眠)する
できた 俺はここまでで組めちゃうかも
オブジェクト指向設計とかいらね >>73
これ、それぞれ設定画面作って
OKボタンの処理でDB操作するだけだわ
これ作ってもらわなわからんって言うなら
掲示板で設計の話は無理なのかもしれん
ちなみに俺もテキトーに考えたので抜けやらなんやらあってもわからん 機能概要
CD/DVD紛失
CD/DVD紛失情報をCD/DVD紛失tblに登録する
もいるかも ・要求設計や上流工程の本読んでるといつもそうだが、
実際に自分とは関係ない具体例出されると集中力が保てなくてすぐに
眠くなってしまう。
・いや、実際に自分が手がけている案件だって同じだ、議論領域に対して
正直な所興味が持てない。
・つまりプログラミングやアーキテクチャには興味があるが、
ドメイン領域に対して学習意欲がわかないというかなんというか。 >>76
周りが見えてないから
なんで後から追加・変更するの?
とか起きないためには
受け取った要件定義書や設計書を
自分がその資料をデバッグできなければならない
ここで漏れがあったらこれで作成できますと言った自分にもある程度の責任はついてくる
俺が出した機能概要で君はソフトウェアを作れるの?
作れないなら足りないところを言って
後からアレがないコレがない騒がないでよ
これで見積りを出すから
って状況なら嫌でも興味が湧くだろ? ・次のクライアントへのインタビューを読み、
設問に解答してください。
やったぜ。 者:変態糞土方 (8月16日(水)07時14分22秒)
昨日の8月15日にいつもの浮浪者のおっさん(60歳)と先日メールくれた汚れ好きの土方のにいちゃん
(45歳)とわし(53歳)の3人で県北にある川の土手の下で盛りあったぜ。
今日は明日が休みなんでコンビニで酒とつまみを買ってから滅多に人が来ない所なんで、
そこでしこたま酒を飲んでからやりはじめたんや。
3人でちんぽ舐めあいながら地下足袋だけになり持って来たいちぢく浣腸を3本ずつ入れあった。
しばらくしたら、けつの穴がひくひくして来るし、糞が出口を求めて腹の中でぐるぐるしている。
浮浪者のおっさんにけつの穴をなめさせながら、兄ちゃんのけつの穴を舐めてたら、
先に兄ちゃんがわしの口に糞をドバーっと出して来た。
それと同時におっさんもわしも糞を出したんや。もう顔中、糞まみれや、
3人で出した糞を手で掬いながらお互いの体にぬりあったり、
糞まみれのちんぽを舐めあって小便で浣腸したりした。ああ〜〜たまらねえぜ。
しばらくやりまくってから又浣腸をしあうともう気が狂う程気持ちええんじゃ。
浮浪者のおっさんのけつの穴にわしのちんぽを突うずるっ込んでやると
けつの穴が糞と小便でずるずるして気持ちが良い。
にいちゃんもおっさんの口にちんぽ突っ込んで腰をつかって居る。
糞まみれのおっさんのちんぽを掻きながら、思い切り射精したんや。
それからは、もうめちゃくちゃにおっさんと兄ちゃんの糞ちんぽを舐めあい、
糞を塗りあい、二回も男汁を出した。もう一度やりたいぜ。
やはり大勢で糞まみれになると最高やで。こんな、変態親父と糞あそびしないか。
ああ〜〜早く糞まみれになろうぜ。
岡山の県北であえる奴なら最高や。わしは163*90*53,おっさんは165*75*60、や
糞まみれでやりたいやつ、至急、メールくれや。
土方姿のまま浣腸して、糞だらけでやろうや。 ↑上記「とうこう」者 : 変態糞土方の部分の
「とうこう」がNGワードになっていたので削除しています。
<補足>
・クライアントの変態糞土方さんは、この経験を元に、
「糞遊びの会」のサイトを新たに立ち上げたいと考えました。
・このサイトでは会員登録を行い、会員については年齢、身長、体重
それから住所、性癖、空いている時間帯などを管理したいと考えています。
・このサイトでは会員/非会員などの間で掲示板でコミュニケーションを
とるソーシャルメディアとして活用したいようです。
・また、会員同士ではメッセージをやり取りし、オフ会を開くきっかけ
を作りたいそうです。
<設問>
・1: この記述を元に、クラス図、業務フロー図、アクティビティ図、
ユースケース図/記述などを作成しなさい。
・2: 実装段階において活用できそうなデザインパターンについて
解答しなさい。
・3: このシステムの問題点はどのようなところにあるか考え、
実運用開始にあたって発生することが懸念されるインシデント
及びその対応策について述べなさい。 あぁ^~速く回答まみれになろうぜ。
回答したいやつ。至急レスくれや。 バージョンアップ時の設計について質問
今回バージョン1.0.0のアプリをバージョン1..0.1にしようとしています。
その時に1.0.0ではなかったソフトを1.0.1では導入しようと思っています
・1.0.0:アプリAのみ
・1.0.1:アプリA+別アプリB+テキストファイル
※ファイル通信を行っていたものがもともとアプリA
バージョンアップでアプリAからファイル通信機能を無くし
別アプリBにファイル通信機能を持たすことになっています
バージョンアップするときはアプリAの上書+アプリBの導入で良いのですが、
バージョンダウンする時アプリBとテキストファイルが1.0.0では不必要なので削除しないといけないです。
このようなとき、ファイルを削除するのであればバージョンを判断して削除したり削除しなかったりを
決める以外に判断材料はないでしょうか?
バージョンで判断して削除するような設計しようとしていたのですがバージョン自体はアプリAに埋め込まれているため
インストールをしたアプリのバージョン取得をできません
また、次回起動時に削除してしまえばいいのかと思っていたのですが、バージョンが古いアプリAだと別アプリBの存在を知らないため削除できません
インストール時に何かしら判断する方法をアドバイスほしいです
テキストファイルにはアプリBの処理の分岐処理に使うようなキーを書く予定で
これを上手く使えないかなと考えています >>82
デスクトップアプリの話?
1つのアプリの中のコンポーネントとして
AとBとテキストファイルがあるという理解でいい?
スイート製品でアプリBのみのアンインストールや
アプリAのみのアンインストールやバージョンアップができるの?
内容からして前者だと思うけど
その場合AやBはアプリとは呼ばない気がする >>82
一般的にバージョンダウン時は
インストール済みバージョンのアンインストーラを使ってアンインストールしてから
旧バージョンをインストールしてもらう
アンインストールせずに旧バージョンをインストールしようとしたら
新バージョンがインストールされてることを検知して
アンインストールするかどうかをユーザーに確認する
アンインストーラをキックして
アンインストール後に旧バージョンのインストーラに制御を戻すことも可能 >>83
デスクトップアプリです
前提:PC1の持つデータをPC2にインストールする
バージョン変更のボタン1つのみ(バージョンアップ・バージョンダウンの個別ボタン無し)
※PC1が持つデータがただ古いか新しいかの違いのみ
1つのアプリのコンポーネントとして〜というよりは
システム全体でAの実行ファイルとBの実行ファイルとテキストがあるって感じです
システムって言うと抽象化なのかな・・・?
あるシステムには今までは実行ファイルAしかなく、今度のアップデートからからは
実行ファイルAと実行ファイルBとテキストファイルになる
単体でのアップデートなどはできず
アップデートってすると前提にある様にPC1にあるデータを全てPC2に書き込む流れです >>85
おーん、、、何やら変わったアプリだね….
それはいいとしてアップデート=バージョンアップだよね?
でアップデートする場合はPC1にあるデータをPC2に書き込むのはわかったけど
バージョンダウンする場合はPC2の実行ファイルAを古いバージョンにして
かつ不要な実行ファイルBとテキストファイルを削除したいってことでいい?
だとすれば実行ファイルAを古いバージョンにする時に
実行ファイルBとテキストファイルを削除すればいいと思うんだけど?
質問を理解できてないのかもしれんが
それが出来ない理由がいまいち分からん >>86
アップデート=バージョンアップで問題なしです
やりたいことも、削除したいってことでOKです
あー今気づきました
ファイルAを古いバージョンにする時にこいつが古いバージョンだ!って判断するのが
どうやってすれば良いんだろうと悩んでるところです。。。 >>87
インストーラとかアンインストーラとかはあるんだよね??
1.0.1のAがインストール済みの環境で
1) 1.0.0のインストーラ/アンインストーラが起動された場合
対応バージョンより新しいのが入ってるのを検知して新バージョンのインストーラ/アンインストーラを使うように促す
(バージョンダウン時は新バージョンのアンインストールをしてから再度旧バージョンのインストーラを使ってもらう)
2) 1.0.1のインストーラ/アンインストーラが起動された場合
Bやテキストファイルの存在を知ってるので削除可能だよね?
バージョンダウンに直接対応したアンインストーラ兼インストーラを用意する場合も同じ
世の中一般のパッケージソフトはおおよそ上の仕組み使ってる
旧バージョンのインストーラが使えない状況で
バージョンアップ時に旧バージョンのAを退避しておく必要があるとかそういうことなのかな? >>82
バージョニングが複雑になるときは
1. バージョンの記述を設定ファイルに外出しする
2. AとBと実行ファイルごとにバージョンを振る
3. バージョン変更するためのバッチや専用アプリを書く
上のどれかでだいたい行けるはず
番号が小さいほど導入の手間が少ない >>82
とりあえずセマンティックバージョニングでググってこい ______
,;i|||||||||||||||||||||||||||||||ii;、 _/
/||||||||||||||||||||||||||||||||||||||ii;、 \
/ ̄ ̄\||||||||||||||||||||||||||||||||||||ii;゙ヽ, /
'" ̄ヽ ヽ!!|||||||||||||||| ||||||||||!!"ヘ < セマンティックageるよ
ヽ ゙!!!|||||||||||| |||||||!! iヽ── /
|||l ゙゙ヽ、ll,,‐''''"" | ヽ||||||||| セマンティックageるよ
|||l ____ ゙l __ \|||||||||
||!' /ヽ、 o゙>┴<"o /\ |'" ̄| ホントの勇気 見せてくれたら
\ / |ミミヽ──‐'"ノ≡- ゙'──''彡| |、 | |
 ̄| |ミミミ/" ̄ 、,,/|l ̄"'''ヽ彡|| |、/ / セマンティックageるよ
ヽ、l| |ミミミ| |、────フヽ |彡l| |/ /_
\/|l |ミミミ| \_/ ̄ ̄フ_/ |彡|l/  ̄/ セマンティックageるよ
\ ノ l|ミミミ| \二二、_/ |彡| フ
 ̄\ l|ミミミ|  ̄ ̄ ̄ |メ/ \ トキメク胸に キラキラ光った
| \ ヽ\ミヽ  ̄ ̄"' |/ /
/ \ヽ、ヾ''''ヽ、_____// /_ バージョンをageるよ
/ ヽ ゙ヽ─、──────'/|  ̄/
. / ゙\ \ / / \__
───'''" ̄ ̄ ゙゙̄ヽ、__,,/,-'''" ̄ ゙''─ >>90
リファクタリングしただけかもしれんぞ
まあそうじゃなくてもその会社で決めたバージョニングスキームに従えばいいでしょ >>92
「会社で決めた決めたバージョニングスキーム」が読みとれたのかい?
どっちにしても質問者はセマンティックバージョニング知らなそうだから、プラスになると思うよ アナリシスパターンとデザインパターンの関連性
って対応表みたいなのあるかな? >>94
どういう目的で関連や対応を知りたいの?
アナリシスパターンはデータモデルのパターンだから
デザインパターンとは基本的に関係ないよ フリーでUMLデザインツールといえば、なにがおすすめですか? 設計のご相談
あるソフトのバージョンアップをしたいと考えている
んでもってそのバージョンアップに伴い既存ファイルに新しいキーが追加される
その状況で考えて欲しいです
そのファイルは現在インストーラーが上書きすることになっているため新バージョンがリリースされる度に上書きされます
そのためキーの値を保持し続けることができません
(キーは書き換える可能性があるものです)
インストーラを変更させずにキーを保持し続ける方法無いでしょうか
キー変更をするためのバッチファイルを準備しようとは思っていますがそれを使ってなんとかならないものだろうか
例
1.0が現在のキーなし
1.1が新しくキー追加
1.2がキー追加などなくバージョンアップのとき
1.1でキー追加→バッチファイルを実行しキー値を変更する→1.2のバージョン上げるとキーがデフォルトに戻る インストーラーを変更しない理由が見当たらないけど
インストーラーの仕様漏れをなんとかリカバリできないかと苦労してるって話なのかな? >>99
そうです
普通に考えたらインストーラを上書きしないようにすることで解決すべきことなんでしょうが
それが今回何故かNGでそれをどうにか回避できないかと 設計というか仕様の話だよね
インストーラーが本来すべき仕事だったそのバッチプログラムで肩代わりするしかない
バッチプログラムにキーの退避・復旧機能を入れてインストーラーの前後で実行してもらう
サポート対応コストを考えるとインストーラー修正のほうが絶対に安上がり
それにバッチプログラムで尻拭いするとしても
インストーラー担当にケツを拭かせるようにしないとろくな事にならないよ やはりインストーラを修正しかないか...
インストーラ修正はテストの範囲が膨大になるからしたくなかったが...
キーの退避・復旧機能って言うとどうやってやるもんなんだろ
やっぱりtmpファイルを作っておくものかね? イベントや状態遷移の設計についておすすめの書籍ある? クラス設計をした結果継承もまったくなく1つのクラスに収まったんだけどそれってクラスにする必要あるもんなんかね? >>105
必須ではないってのはわかってる
一つにまとまったものをクラスとして置いておく必要あるんかな?ってなってる
ただの関数でもいいんじゃないかと >>106
メソッドひとつだけなら別に関数でもいいが
ふたつ以上必要なら意味はあると思う >>107
メソッド三つ四つあるかな
あるライブラリをc++で呼び出す(コマンド実行)ためのコーディングをするためにクラス設計
ライブラリは色々なプロトコル(HTTP,FTPなどなど)をサポートしてたからそれにあわせてクラス設計中
メンバ変数
・char プロトコル
・char ユーザ名
・char パスワード
・char 実行コマンド
※実行コマンドはexe -u ユーザ名 -pa パスワード -p プロトコル名 その他オプションみたいなsystemに渡す出来上がった形
ふるまい
・コンストラクタ(プロトコルやユーザ名やパスワードを引数とする)
・実行コマンド作成
・実行コマンド実行
・実行後の終了待機 >>108
メンバ変数を複数のメンバ関数で使うなら
クラスの意味あるじゃん >>109
普通に引数として受け渡しでもいいんじゃないか
って疑問です 特定のアカウントを使って接続して
いくつかのコマンドを順次実行したい場合に
利用者側がどういう使い方をしたいかによる
今後を含めて一つの関数を逐次実行するので十分であれば関数でいいかもね >>110
ダメってことはないよ
別に関数でも組めるよ
だけど規模が大きくなると
だんだん引数が多くなっていって
呼び出しが複雑になっていくでしょ?
OOで組むなら
メンバ変数で状態を持って
なるべく引数を減らす 独立性の高いモジュール設計するときって
引数少なくしたらまず独立性が高くなるかなって考えてるのだけど合ってる?
それ以外に考えることある? 独立性ってのは高凝集・疎結合の程度のことだよね?
引数の数って独立性に関係ある?
引数で渡されたオブジェクトのメソッドを呼び出すなら
関係してるけどそれは引数の数とはまた別だと思う 引数で受け渡すのは独立性が高い
直接参照する方が依存性を高くする 渡す引数によるけども渡す引数がそれぞれで依存するようなものならば独立性が低いと言える気がする >>118
直接参照は引数渡しに比べると依存性が高いので独立性が低い
それはそうだろうけど引数の数とは関係ないよね?
>>119
引数同士の依存度の強さは引数の独立性には関係するけど
モジュールの独立性とどう関係するの? たとえば引数でパスを受け取って
ファイルを開いて何か処理する
モジュールがあったとすると
引数でも依存性は高い 依存性の高い低いは相対的な指標だからさ
何と比べてってのが無いとあんまり意味なくね? 素朴な疑問なんですけどクラス図に書くフィールドがpublicになる事って実務の世界であるのでしょうか?
マイナス以外を書く事無さそうなので無記入で良いんじゃないかと 世の中のあらゆる言語からpublicフィールドが無くなったら必要なくなるだろう。 >>123
プロパティ
逆にprivateなフィールドをクラス図に書く必要があるのって
どういう目的でクラス図を書いてる時? >>125
んなもんいくらでもあるだろ
お前はクラス内で利用する依存オブジェクトを全部公開するのか? UMLとか書くのにペンタブ使うツールって無いんかね
あっても良さそうだけど。 ほとんど統合失調じゃねーかw
がんばれと言いたいがすでにがんばってる感じで
泣きながら床をのたうちまわりたい気分になった
がんばれ でも思考が破綻してるわけじゃないな
アスペか
これが本物のアスペなのか? 外注に出す時はどこまで口を挟んで良いのかな?
DDDの採用とか言って良いのかな
内部で使うとはいえ業務ソフトを丸投げして構造化プログラムで組まれたらキツいなと 後で書き直しになったら外注する意味ないからな
といって外注でDDDでポンと出来るとも思えないが UMLを書くツールって何使ってる?
PlantUMLを使ってるんだが、
アクティビティ図(ベータ版)で、ifの終わりに毎回「◇」が付くのって消せないかな?
それか、何か他に良いツールあったら教えてください
WORDやExcelやPowerPointで一つずつ書くのが確実なのかもしれんが visioが良いらしい
あれはワードに張ったままでも編集できる >>139
ないんじゃないかな
そもそもデザインパターンってよく使われてたパターンを整理して名前つけただけだし ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
ZB5CI PlantUMLで
if(判定)then([Yes])
else([No])
:例外処理;
endif
って書くと、「判定」の下に[No]の「例外処理」が来て右側が[Yes]になるけども、
判定の右側を[No]にして、判定の左側もしくは下側を[Yes]にする方法ってあります? ■ このスレッドは過去ログ倉庫に格納されています