システム屋日誌

情報システム構築、開発手法を中心に気が付いたことを書き留めます。ちいさなことから、おおきなことまで。もちろん、どうでもいいことも。。。
<< September 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >>
 
RECENT COMMENT
RECENT TRACKBACK
れいねっとHP
http://www.rey-net.com
MOBILE
qrcode
PROFILE
無料ブログ作成サービス JUGEM
 
DCM (Demand Chain Managemant)
小売店舗における商品の動きを詳細に管理する「単品管理システム」を用いる。店頭の単品データを吸い上げて、顧客の購買に関する仮説検証を行い、商品の品揃えや発注の最適化を行うサイクルを繰り返す。単品管理システムにより練り上げたデータから、チェーン全体の在庫効率化、顧客ニーズに即座に対応する戦略を打ち出す。

SCM(Supply CHain Management)との比較
小売店舗が主体で、単品の動きを軸にしているDCMに対して、SCM はメーカー主導であり、商品供給側の合理性に主眼をおいている。そのため、SCMは天候や立地など、細かな要素に影響を受ける、店頭の売上に即座に対応することができない。また、顧客のニーズの多様化・高度化、企業間の競争、グローバル化などにスピーディーに対応する必要がある。このような環境の中で、SCMの持つ課題を解決するために考え出されたのが、DCMである。
工数見積モデル COCOMO(Constructive COst MOdel)
ソースコード行数をもとにして、開発工数を見積るためのモデル。

アメリカのBoehm 教授が提案した。1981年に最初のモデル、1997年にバージョン2(COCOMO)が発表されました。初期のモデルは63個のソフトウェア開発プロジェクトのデータに基づいて開発され、ソフトウェア開発の形態に合わせて基本COCOMO、中間COCOMO、詳細COCOMO の3モデルで構成されています。

(1)基本COCOMO
  ソースコード行数(SLOC:Source Lines Of Codes)を基にシステムの開発工数を見積る
  見積単位:システム
  コスト要因:なし
  開発フェーズ:特に考慮しない

(2)中間COCOMO
  基本COCOMO+システムの開発特性に基づく変数で見積る
  見積単位:システム、コンポーネント
  コスト要因:15個
  開発フェーズ:特に考慮しない
(3)詳細COCOMO
  中間COCOMO+モジュールレベルでの見積+開発フェーズごとの変数設定
  見積単位:システム、サブシステム、モジュール
  コスト要因:4個(モジュール)、11個(サブシステム)
  開発フェーズ:製品設計、詳細設計、コーディング、総合テスト

COCOMO と COCOMO兇琉磴
COCOMO兇蓮開発初期段階では、ソースコード行数(SLOC)が分からないことを認めた上で、改訂を行いました。そのため、開発規模の単位をソースコード行数(SLOC)に制限していません。また、変動要因が22個に増加しています。

COCOMO と ファンクションポイント法の違い
COCOMOは、開発工数を見積るためのモデル。ファンクションポイント(Function Point)法は、ソフトウェアの大きさ(規模)を計測するためのモデルで、工数を見積るためのモデルではありません。工数を見積る時、基礎データの算出に用いられるのでこのような誤解が生じました。実際、COCOMOの中で利用しています。
業務分析とUML(2)コンポーネントモデリングの手順
UMLを使って業務分析を行うとき、以下の手順で行います。

ヒアリングで集めた情報を元に、順を追ってモデルを作成します。
手順1〜4で大まかな流れをつかみ、外部から見たモデルを作ります。
手順5以降は、内部を詳細に分析してモデルを作っていきます。

手順番号作業(タスク)成果物(アウトプット)
業務フローの洗い出しアクティビティ図
システム境界の導出ユースケース図
コンポーネント分割コンポーネントのクラス図
コンポーネントのコラボレーションコラボレーション図
シナリオの作成シナリオ
オブジェクトの導出オブジェクト図
オブジェクトの抽象化クラス図
コンポーネントの仕様化コンポーネント仕様
コンポーネントの相互作用シーケンス図

各手順には必ずアウトプットがあり、それは次の手順のインプットになります。

参考文献:
はじめての業務分析
コンピュータの性能指標 プロセッサの処理速度 MIPS MFLOPS SPEC
コンピュータの性能指標のひとつに、プロセッサの処理速度があります。プロセッサの処理速度は尺度で評価されます。尺度には多くの種類がありますが、代表例を3つを紹介します。

1、MIPS(million instructions per second)
 平均命令実行時間の逆数で、1秒間に実行できる命令を100万回単位で表したもの。
 古くから用いられてきました。
2、MFLOPS(million floating-point operations per second)
 1秒間に実行できる浮動小数点演算を100万回単位で表したもの。
3、SPEC(System performance evaluation corp)
 プロセッサの性能評価を目的としたベンチマークテストとその実施団体
続きを読む >>
業務分析とUML
コンピュータやネットワークの発達と低コスト化で、今まで情報システムが導入されていなかった分野も、情報システム化が企画されるようになりました。しかし、情報システム化すれば、問題が解決されるわけではありません。情報システムを計画する前に「業務分析」を行い、本当に情報システム化が必要かどうか検討する必要があります。

業務分析を行う際、最も難しいのが、業務(仕事の流れや仕組み)を見える形にすることです。利用者であるユーザ企業と、分析を行うベンダの間で共通の業務イメージが無いと、話がうまく進みません。

業務を見える形にするためのツールに、UMLがあります。UMLは元々ソフトウェアを開発するためのツールでしたが、業務分析でユーザとベンダの相互理解ツールとして応用できます。なぜなら、表記方法がシンプルかつ、図を多用するので、専門家以外にも直感的に理解しやすいからです。また、UMLは分析手法に依存しないので、分析手法に合わせた表記ができます。

参考文献:
はじめての業務分析
Web サービス
Web サービスは、インターネット上に分散するサーバ上のWebアプリケーションを連携させる技術。Webサービスが登場する前は、遠隔地のアプリケーションを連携させるのに、RPC(Remote Procedure Call)やIIOP(Internet Inter-Orb Protocol)を利用した。しかし、これらのプロトコルは、ファイアウォールを越えるのが大変だという問題点がありました。

Webサービスは、ホームページで利用している HTTP (Hypertext Transfer Protocol) を用いるため、ファイヤーウォールに拒否されずに、通信が可能です。

ホームページで使っている HTTP は、データの送受信に向きません。HTML は SGML という、電子データ交換技術から、画面表示の部分だけを発展させたものだからです。Webサービスは、電子データ交換用に考えられた、XML(Extensible Markup Language) に準拠した、 SOAP(Simple Object Access Protocol) を使います。SOAP は HTTP や SMTP(Simple Mail Transfer Protocol) の上位階層に位置します。また、SOAP は下位プロトコルを選ばないので、HTTP と SMTP どちらの上でも動きます。

7層 Web アプリケーション
  ---------------------------------
6層 SOAP(XML) HTML WSDL(XML)
  ---------------------------------
5層 HTTP SMTP
  ---------------------------------
4層 TCP UDP
  ---------------------------------
3層 IP
  ---------------------------------
2層 イーサネット
  ---------------------------------
1層 物理回線

図1 OSIモデル上の SOAP の位置づけ

Web サービスのインタフェース情報は、WSDL (Web Services Description Language)で記述します。WSDL は SOAP 同様、XML で記述されます。WSDL は、交換するデータ型、利用するプロトコル、Web サービスの URL など、通信に必要な内容を記述します。WSDLで生成した文書(XML)を読ませると、必要な機能を自動的に生成するツールも出てきています。

Webサービスは、遠隔地、異なるハードやOSなどであっても、アプリケーションが連携できるというメリットがあります。

参考文献:日経コンピュータ 特別編集版 IT Keyword 2007
SOA(サービス指向アーキテクチャ)
SOA(service oriented architecture/サービス指向アーキテクチャ)とは、業務アプリケーションを構築する際、全体の業務を独立した複数の業務プロセスに分割することで、部分的な業務の変更時にシステム全体への影響を少なくする開発手法です。

今までも「部品化」や「サブシステム分割」といった大きなシステムを小さな単位に分割する設計手法がありました。しかし、従来の手法は、業務の変更時に別のサブシステム(部品)とのインタフェースを意識する必要があり、一部の修正が全体に大きな影響を及ぼしていました。SOAは、インタフェースを意識せず、サービス単位で個別に追加・更新することが可能です。

各サービスが独立性を保ち、かつ、連携できるのは、Webサービスという基盤技術を利用している点にあります。具体的には、業務プロセスを商品調達、受注処理などに分解します。分解した各業務にWebサービスを追加します。さらに、システム全体を統括するため、Webアプリケーションを実装したWebサーバとつなげます。Webアプリケーションには、各業務の役割やつながりを記述した、アプリケーションフローが定義されています。

【業務システム1】【業務システム2】【業務システム3】
(Webサービス)(Webサービス)(Webサービス)
   |       |       |    
+----------------------------------
【Webサーバ】
Webアプリケーション     
アプリケーションフロー      
+----------------------------------
       |     |     |
  【クライアント】【クライアント】【クライアント】…

図1 SOAのシステム構成

業務プロセスにWebサービスを実装するためには、BPM(ビジネス・プロセス・マネジメント)ツールを利用します。また、アプリケーションフローの記述は、通常、BPEL(ビジネスプロセス実行言語)を用いて行います。また、各サービス間のデータは、ESB(エンタープライズ・サービス・バス)という、仮想のネットワークを介してやり取りされます。

SOAに基づいてシステム設計をする場合、業務システムの分割方法(分割粒度)が問題になります。
業務プロセス・レベルの分割は、粒度が大きいわけ方です。販売管理システムの場合、仕入処理、入金処理、出荷処理、在庫処理といった分け方をします。機能レベルでの分割は、粒度が小さい。データベース処理、業務ロジック、フロー制御、データ入出力や帳票出力などです。粒度が大きすぎると、汎用性が失われ、小さすぎると1度の改修で複数の業務プロセスに手を入れるため、非効率です。

SOAを導入する場合、業務システムの洗い出しと分割粒度の見極めが重要なポイントになります。

参考文献:日経コンピュータ 特別編集版 IT Keyword 2007
Amazon WebサービスをPHPで使って、本のリンクを作成
前回、Amazon の Web サービスを利用して、本の画像をこのブログに表示できる仕組みを作成しました。今回は、一歩進んで、本の画像をクリックすると、Amazon のページがポップアップする仕組みを作成しました。
↓Javascript 利用
星座を見つけよう

<img src='http://www.rey-net.com/amazon/amazon_img.php?ASIN=4834001830' alt='星座を見つけよう' onclick=window.open('http://www.rey-net.com/amazon/amazon_link.php?ASIN=4834001830') />

↓Aタグ利用
星座を見つけよう
<a href='http://www.rey-net.com/amazon/amazon_link.php?ASIN=4834001830' target='_blank'><img src='http://www.rey-net.com/amazon/amazon_img.php?ASIN=4834001830' alt='星座を見つけよう' /></a>
続きを読む >>
amazon WebサービスをPHPで使って、本の画像表示
昨日は眠くてダメダメモード。でも、今夜は元気モード。amazon Webサービスを呼び出して、イメージを表示するPHPプログラムも無事完成。さっそく、このブログに貼り付けてみました。



上記のタグは、<img src='http://www.rey-net.com/amazon/amazon_img.php?ASIN=4834001830' />って書いてあります。

なぜ、昨日は動かなかったかというと。PHPがサーバからクライアント側にイメージではなく「文字」返していたから。ストリームにイメージを流すためには、PHPの処理冒頭で「これから、イメージを流しますよ」と宣言する必要があります(コンテントネゴシエーション)。そのためには、以下の手順が必要です。

1、ストリームの種類(content type)をイメージにする
 header("Content-Type: image/jpeg");
 上記は、PHPのメイン処理の冒頭で、jpegイメージをストリームに
 流すと宣言しています。
2、イメージ関数(image)を使う
 imagecreatefromjpeg() および imagejpeg()
 ただし、これらは jpeg 用なので、他の種類のイメージファイルに
 関してはPHPマニュアルをご覧下さい。

参考URL
(PHPリファレンス LXIII. イメージ関数(image))
http://jp2.php.net/manual/ja/function.imagecreatefromjpeg.php
(Apache公式サイト コンテントネゴシエーション)
http://httpd.apache.org/docs/2.0/ja/content-negotiation.html

以下、PHPサンプルコードです。
表示の問題で、半角大文字が入っています。EUC で保存します。
続きを読む >>
amazon WebサービスをPHPで使ってみました
Amazon のWebサービス(AWS)の呼び出しに、やっと成功しました。下記の自作PHPのGETパラメータにASINを指定してやると、書籍のイメージ(画像)
を表示します。

当初の目的である「自分のサーバにWebサービスを仕込んで、このブログを書くときに参考にした書籍のリンクを貼る」は、いまだにできません。
下記 PHP の URL を img タグのソースに指定したのですが、ダメでした。

ともかく、PHP単体での動作は成功。
以下、サンプルソースです。 PHP Version 4.3.11 で動作確認しました。
PHP5 では、dom 関数の使い方が異なります。



<?php
$RSSURL = "http://xml-jp.amznxslt.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=【SubscriptionID】&Operation=ItemLookup&ItemId=".$_GET['ASIN']."&ResponseGroup=Accessories,EditorialReview,Images,ItemAttributes"; // RDF
if(! $dom = domxml_open_file($RSSURL)) {
 exit; // RSS ファイルが見つからない場合、exit
}
$root = $dom -> document_element(); // ルートエレメント取得
$items = $root -> get_elements_by_tagname('LargeImage'); // 大型イメージ
foreach($items as $item) {
  $nodes = $item -> child_nodes(); // タグ内の子ノード
 foreach($nodes as $node) {
  if ($node -> node_type() == XML_ELEMENT_NODE) { // ノードの種類がエレメント
   switch($node -> tagname()) { // タグ名から変数に代入
    case 'URL':
     $imgurl = $node -> get_content(); // イメージの URL をセット
     break;
   }
  }
 }
} // foreach
 print "<img src='".$imgurl."' />"; // イメージ URL 出力



続きを読む >>