カテゴリー ( 10.ものの考え方 ) 登録内容の一覧

12-10-26 アジャイルソフトウェア開発Aa
 今日、プログラム開発の方法として、従来からのウォーターフォール開発手法を乗り越える アジャイル・ソフトウェア開発手法が注目を集めていますaAAA。 これにより 開発するプログラムの品質を高の向上、同時に、開発スピード・アップ、コストの引下が達成できるというものです。 当初は、比較的小さなプロジェクトの成功事例でしたが、開発方法として洗練されてきて、 大規模システムに適用できる方法として認められるようになっています。 しかしながら、 IPA(独立行政法人情報処理推進機構)非ウォーターフォール型開発の普及要因と適用領域の拡大に関する調査報告書 2012/06/11 によると、 米国、欧州では、アジャイルソフトウェア開発手法が広く採用されており、既に開発の主流となっており、 デンマークのように国あげてが普及を促進しているところが出てきている。 ところが、日本では普及が遅れており、ようやく認知された段階となったところとしている。 

********************************************************************************
1.基本となる従来からの開発思想
********************************************************************************
ウォーターフォール(Water Fall)開発手法と呼ばれるもの。 要件定義、分析、設計(外部・内部)、実装、テストの各工程を、厳格に、予め計画された順序に従って行う。 プロジェクトの進捗にともない、要求仕様書、外部設計文書、内部設計文書、テスト計画書、コードレビュー書といった一連の成果物がアウトプットされる。 各工程を完全に行い、後戻りをしない。 特徴は、    ・数あるソフトウェア開発手法の中でも、最も計画重視である。 ・開発期間は、数か月から数年の長い期間。 ・開発の参加者が多い。 ・たくさんの文書を書く。 ・秩序を重視する組織的文化。
********************************************************************************
2.反復型開発(はんぷくがたかいはつ、Iterative and Incremental Development)
********************************************************************************
アジャイルソフトウェア開発手法における基本的な手法が、反復型開発です。 ・要求仕様の単純なサブセットから開発を始め、要求仕様から次々とサブセットを切り出し、   開発を反復してしていき、最終的に完全なシステムを仕上げる。 ・ひとつの反復(イテレーション)の中で、プログラムの設計・製作・テストを完了する。 ・ひとつの反復(イテレーション)は普通数週間と短い。 ・出来あがったサブセットで使用可能なシステムを段階的にリリースしていく。 この方法で、 ・「ユーザーに価値をもたらし、かつ動作が保証されたソフトを超高速で実現する。 ・ユーザーには文書ではなく動くソフトウェアを使って要求を確認する。 ・ユーザーは、開発段階のプロトタイプや、段階的にリリースで、新システムを早期に確認できる。 ・プロジェクトを成功させるために価値が少ないドキュメント作成を極限まで省くことになる。
********************************************************************************
3.RAD(Rapid Application Development)by James Mertin 1991
******************************************************************************** アジャイル的ソフトウェア開発手法の一つ。「はしり」に位置する ・プログラムの開発にタイムボックスの設定。期間固定(90日)・機能は可変。 ・開発対象をサブセットに分割、タイムボックス内でサブセットのプログラムの開発を終える。 ・タイムボックスは、期間固定(90日)。機能は可変。、 ・1タイムボックスでは2-4人の開発チーム。 ・タイムボックスを反復して、システムを仕上げる。 ・エンドユーザー、全開発工程に参加。 ・大規模システムでは、並行開発。
********************************************************************************
4.アジャイルソフトウェア開発手法
********************************************************************************
アジャイルとは’機敏・俊足'を意味するもので、アジャイルソフトウエア開発は、複数の開発論がある。 主なもに、 XP www.extremeprogramming.org ケント・ベック、ウォード・カニンガム、ロン・ジェフリー Scrum www.controlchaos.com ケン・シュウェイバー、マイク・ビードル DSDM www.dsdm.org アリー・バン・ベネカムなど FDD www.nebulon.com/fdd/ ピーター・コード、エリック・レフェーブル、ジェフ・デ・ル ASD www.adaptivesd.com/learn.html ジム・ハイスミス * ASD:Adaptive Software Development * DSDM:Dynamic Systems Development Method * FDD:Feature-Driven Development * RAD:Rapid Application Development * XP:eXtreme Programming
********************************************************************************
5.アジャイルソフトウェア開発宣言(Manifesto for Agile Software Development)
******************************************************************************** アジャイルソフトウェア開発宣言 2001年アメリカ合衆国のユタ州のスノーバードに アジャイルソフトウェア開発を提唱する17人が集まり、 それぞれ別個に提唱していた開発手法の重要な部分を統合することについて議論した。 そして、彼らは「アジャイルソフトウェア開発宣言」(Manifesto for Agile Software Development)という文書にまとめた。 アジャイルソフトウェア開発宣言は、アジャイルソフトウェア開発とその諸原則を公式に定義した文書となる。 アジャイルソフトウェア開発の価値     ・プロセスやツールより人と人同士の相互作用を重視する。 ・包括的なドキュメントより動作するソフトウェアを重視する。 ・契約上の交渉よりも顧客との協調を重視する。 ・計画に従うことよりも変化に対応することを重視する。 アジャイルソフトウェア開発の原則 ・最も重要なことは顧客を満足させること。早く、そして継続的に、価値のあるソフトウェアをリリースする。 ・開発の終盤においても要求の変更を受け入れる。アジャイルプロセスは顧客の競争力を優位にするための道具である。 ・数週間、数ヶ月の単位で頻繁に実用的なソフトウェアをリリースする。タイムスケールは短い方がよい。 ・プロジェクトの間中、毎日、顧客と開発者は一緒に働くべきである。 ・やる気のある人を中心にプロジェクトを構築する。環境と必要なサポートを与え、彼らが仕事を成し遂げると信じること。 ・開発チーム内で情報伝達を行う効果的で有効な方法は、Face to Faceによる会話である。 ・進捗を測るには、動くソフトウェアが一番である。 ・アジャイルプロセスは、継続的な開発を促進する。スポンサー、開発者そしてユーザは一定のペースを保つようになる。     ・優れた技術と良い設計に絶えず目を配ることで、機敏になる。 ・単純性--最大限に仕事を行わないことは極めて重要である。 ・最良のアーキテクチャは自己最適化されたチームから現れる。 ・定期的な間隔で、チームにもっとも効果的な方法を反映することで、調律・調整に従うようになる。    
********************************************************************************
6.その他
********************************************************************************
なお、要件定義、スケージュール作成、全体のアキテクチャー設計を十分に行い、 プログラムを開発する局面に反復型開発を採用するという意見もあります。


10-04-19 CMSについて
 CMS(Contents management System)とは、Webサイトのコンテンツを一元的に保存・管理し、サイトを構築したり編集したりするソフトウェアのこと。または、このソフトウェアを使い、広義には、Webサイトのコンテンツの管理を行なうシステムをいう。

 Webサイトのコンテンツは、テキストや画像である。サイト内では、このコンテンツをサイト内に押入れに放り込んでおくのでなく、分かりやすく取り出さされるようにしておく必要があり、また統一されたレイアウトや装飾が望まれる。CMSのソフトウェアは、データベースを使い、個々のコンテンツの保管、ページ間を行き来するナビゲーションの仕組みを維持を行い、テキストや画像の表示において統一されたレイアウトや装飾を付加する。

 いわゆる「ブログ・サイト」では、本文をブラウザ画面に打ち込むだけで、あとはサイトのブログ・ソフトが表示のレイアウトや装飾をし、またナビゲーションの仕組みを提供する。これにより個人の日記などを、簡便な方法で作成し、公開することができるようになっている。

 このBLOGサイトで使用されているソフトが、機能強化されて企業や組織のWebサイトにCMSソフトとして適用できるようになったきた。

最近では、多くの企業や組織のWebサイトが、CMSソフトを使い、最新の情報を迅速に提供するようになっている。 


96-07-20 「人月の神話」を読んで
 有名なソフトウエア・エンジニアリングに関するエッセイを読む機会をえました。
フレデリック・P・ブルックスJr著、滝沢徹・牧野祐子・富沢昇訳「人月の神話」アジ
ソン・ウエスレイ 1996.2発行です。

1.大きなプログラムシステム製品を開発する時に「人月」は仕事の大きさを測る
単位としては、疑うべき危険な神話である。人と月とが互いに交換できると考え,
月を減らそうとして、人を余計に投入することは効果的ではない。要員が増加すれ
ばするほど各作業者の間でのコミュニケーションを図るための時間が線形に増加す
ることになる。このため遅れているソフトウエアプロジェクトへの要員追加は更に
プロジェクトの進行を遅らせるだけという悲劇を生む。

2.高水準プログラミング言語と対話型のプログラム作成方法は、プログラム作成の
生産性の向上に役立っている。またチーフプログラマーを中心とする少数精鋭チーム
は、製品の完全性と生産性の向上を得ることができる。しかしながら、ソフトウエア
の開発において技術においても管理手法においても、それだけでこれからの十年間に
生産性や信頼性と容易性でも飛躍的な改善を一つでも約束できるような開発は一つと
してないと予測する(1986年)。

3.ソフトウエアエンジニアリングとは、
* システムに向けてプログラムセットをデザイン、実現する方法
* プログラムまたはシステムを、安定した、テスト済みで、文書完備のサポート
付きの製品になるようにデザイン、実現する方法
* 大量の複雑性に対して知的制御を維持する方法

4.ソフトウエア実体の本質は、データセットやデータ項目間の関係、アルゴリ
ズムや機能呼び出しなどが組み合わさったコンセプトで構成されている。
ソフトウエア構築において困難な部分は、この概念構造体の仕様作成とデザイン
およびテストにあって、表現することやその表現に忠実かをテストすることでは
ない。

5.ソフトウエア開発の生産性をあげるためには、
(1) このソフトウエア製品のコンセプトの完全性の実現。このため、だれか一人を
製品(主任)アーキテクトに任命し、アーキテクトが製品のあらゆる局面に
ついて利用者が知覚するコンセプトの完全性に責任を持たせる。
きわめて大きな製品開発の時は、主任アーキテクトは、システムをサブシス
テムにに分け、インターフェースを厳密に定義したうえで、各部分に担当ア
ーキテクトを配置する。
(2) 育成的構築モデルの採用。計画からプログラム作成・テストまでの局面を明確
に管理していくウオーターフォール構築モデルでなく、はじめに骨格を作り、
順次に詳細な機能を追加し、システムを育成していく。
(3) パッケージソフトをコンポーネントとして、購入してシステムを構築する。

コンセプトの完全性がシステムデザインにおいてもっとも重要な考慮点である。
一つの設計思想を反映していれば、統一性のない機能や改善点などは省いたシステム
の方が、優れていてもそれぞれ独立していて調和のとれていないアイデアいっぱいの
システムよりましである。 


copyright (c) itworks.co.jp All right reserved.