Skip to content

Latest commit

 

History

History
121 lines (100 loc) · 9.57 KB

software_design.wiki

File metadata and controls

121 lines (100 loc) · 9.57 KB

  1. summary ソフトウエアデザイン

Table of Contents

Introduction

Key Concept

 * Intuitiveness 直感性
 * Drivability 操縦性
 * Separation of concern 関心の分離
 * Minimalism 禅

Software Design

 * オブジェクトモデルを前提としない、ステートレスリクエストのリソースモデル。[http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?ServiceLayer サービスレイヤー]が内部APIとして機能。
 * ページコントローラ経由の必要がない独立したリソースモデル。
 * コンポーネント間の接続はHTTPがモデルのリソース指向アーキテクチャ。
 * イニシャライザ(インジェクター)で[http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CB0QFjAA&url=http%3A%2F%2Flife.neophi.com%2Fdanielr%2Ffiles%2FInversionOfControl.pdf&rct=j&q=Dependency%20Pull&ei=ldEJTrCLIqGDmQW9762TAQ&usg=AFQjCNH03mTNlZXMA-QgdEP4izqzJuB88g&sig2=wjawUH6RbA3pKA9M2pu6Rg&cad=rja Dependency Pull]を用い外部からの切り替えとサービスロケータ利用で依存オブジェクトを制御。
 * ページコントントローラー。ページ間が共有するものを最小化。
 * リソースモデルのアクセスにプロキシを使う[http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0 アスペクト指向プログラミング]。
 * 問合せから副作用の心配を取り除く[http://masuda220.jugem.jp/?eid=335 Side-Effect-Free Functions パターン : 副作用をなくす設計]。
 * [http://groups.google.com/group/php-standards/web/psr-0-final-proposal?pli=1 PEAR-Style Pseudo-namespace(PSR-0 Compatible)]
 * コンポーネントのあり方よりむしろ接続に注目しHTTPをモデルとする。
 * [http://en.wikipedia.org/wiki/Web_application_framework#Push-based_vs._Pull-based Push-based & Pull-based]
 * リソースはコントローラでもありモデルでもある[http://en.wikipedia.org/wiki/Multitier_architecture レイヤードアーキテクチャ]。
 * ビューに対するレイジーセット。
 * 継承関係をもつUAに対するViewの[http://ja.wikipedia.org/wiki/%E9%96%8B%E6%94%BE/%E9%96%89%E9%8E%96%E5%8E%9F%E5%89%87 OCP]

プログラミングパラダイム

 * オブジェクト指向プログラミング (OOP)
 * 属性指向(注釈指向)プログラミング (AOP)
 * アスペクト指向プログラミング (AOP)
 * [http://en.wikipedia.org/wiki/Resource-oriented_architecture リソース指向アーキテクチャ](ROA)


他技術

 * [http://paul-m-jones.com/archives/1500 ユニバーサルコンストラクタ]
 * [http://hamasyou.com/archives/000345 ステートレスインターフェイス]

インスパイアされたソフトウエア

 * PEAR
 * [http://solarphp.com/ SolarPHP]
 * Zend Framework
 * Click Framework (Java)
 * Guice (Java)
 * jQuery

書籍

 * [http://t.co/2bIT9tW Clean Code アジャイルソフトウェア達人の技 by Robert C. Martin]
 * [http://t.co/S6DnJyJ Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus) by 山本 陽平]
 * [http://t.co/6asovEj エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented Selection) by マーチン・ファウラー]
 * [http://t.co/FqC2GV1 エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践) by エリック・エヴァンス]
 * [http://t.co/QtteJKR ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション by ThoughtWorks Inc.]
 * [http://t.co/r2SvHoF オブジェクト指向における再利用のためのデザインパターン by エリック ガンマ]
 * [http://t.co/lUop6my Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本 by Eric Freeman]
 * [http://t.co/vANcMNB Webアプリケーション設計・実装のためのフレームワーク活用の技術 by 古川 正寿 ]
 * [http://t.co/TLTUvvR エンジニアのためのJavadoc再入門講座 現場で使えるAPI仕様書の作り方 by 佐藤 竜一 ]
 * [http://t.co/XDbUIk4 オブジェクトデザイン (Object Oriented SELECTION) by レベッカ・ワーフスブラック]
 * [http://t.co/4FBtxuR Code Complete第2版〈上〉―完全なプログラミングを目指して by スティーブ マコネル]
 * [http://t.co/Xv9xa5y Code Complete第2版〈下〉―完全なプログラミングを目指して by スティーブ マコネル]
 * [http://t.co/pjt0kIN ビューティフルコード by Brian Kernighan]
 * [http://t.co/CV34x9r ビューティフルアーキテクチャ by Diomidis Spinellis ]
 * [http://t.co/ya3ykvQ コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive ... by セイフ・ハリディ]
 * [http://t.co/uPkVWFU インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践 by Ken Pugh]
 * [http://t.co/Y032BU3 Real-World Solutions for Developing High-Quality PHP Frameworks and Applications]

ブログ記事

ソフトウエアアーキティクチャパターン

 * [http://d.hatena.ne.jp/yojik/20091019/1255963600 GUI-MVCとWeb-MVCの違い]
 * [http://matarillo.com/general/uipatterns.php matarillo.com UIパターン]
 * [http://www.oreillynet.com/onlamp/blog/2007/06/what_is_mvc.html What is MVC? – O’Reilly ONLamp Blog]
 * [http://sastruts.seasar.org/featureReference.html#Architecture Seasar アプリケーションアーキテクチャ]
 * [http://www.darronschall.com/weblog/2004/06/mvc-vs-mvp.cfm MVC vs. MVP – darron schall]
 * [ 技術講座 ] Domain-Driven Designのエッセンス
 * [http://masuda220.jugem.jp/?eid=293 ドメインの関心事 それ以外の関心事 | システム設計日記]
 * [http://kore-nordmann.de/blog/why_active_record_sucks.html Kore Nordmann Why active record sucks]
 * [http://karwin.blogspot.com/2008/05/activerecord-does-not-suck.html ActiveRecord does not suck]
 * [http://en.wikipedia.org/wiki/Presentation-abstraction-control Presentation-abstraction-control, Hierarchical-Model-View-Controller]
 * [http://d.hatena.ne.jp/higayasuo/20050913 ひがやすを blog 3つのモデル - どのモデルを中心にするのか]
 * [http://msdn.microsoft.com/ja-jp/magazine/dd419663.aspx WPF のための MODEL-VIEW-VIEWMODEL (MVVM) デザイン パターン]
 * [http://en.wikipedia.org/wiki/Model-view-presenter Model-view-presenter]
 * [http://d.hatena.ne.jp/digitalsoul/20100712/1278886009 Digital Romanticism Greg Young流CQRS - Mark NijhofAdd Star] - [http://elegantcode.com/2009/11/11/cqrs-la-greg-young/ 原文]

REST

 * [http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm Architectural Styles and the Design of Network-based Software Architectures, Chapter 5]
 * [http://yohei-y.blogspot.com/2005/04/rest_23.html yohei-y:weblog  REST入門]

DI/AOP

 * [http://kakutani.com/trans/fowler/injection.html Inversion of Control コンテナと Dependency Injection パターン]
 * [http://ralphschindler.com/2011/05/18/learning-about-dependency-injection-and-php Learning About Dependency Injection and PHP]
 * [http://code.google.com/docreader/#p=google-guice&s=google-guice&t=Motivation google-guice > User's Guide > Motivation]
 * [http://www.infoq.com/jp/news/2009/08/dependency-injection-javaee6 http://www.infoq.com/jp/news/2009/08/dependency-injection-javaee6]
 * [http://www.ibm.com/developerworks/jp/java/library/j-guice.html Guice による依存性注入]
 * [http://matthiaswessendorf.wordpress.com/2010/01/19/dependency-injection-the-jsr-330-way/ Dependency Injection the JSR 330 way]
 * [http://www.infoq.com/jp/articles/drinking-your-guice-too-quickly Guice(ジュース)を早飲みしすぎていませんか?]
 * [http://d.hatena.ne.jp/noopable/20090412/1239484575 Zend_Application(2) /Zend FrameworkにおけるDIコンテナ活用のメリットについて]
 * [http://d.hatena.ne.jp/noopable/20100309/1268103347 noopな日々モデルもしくはサービスレイヤーに関する補足] 
 * [http://d.hatena.ne.jp/asip/20070518#1270775397  noopな日々 DIコンテナとフレームワークの関係のあるべき姿とは?]

PHP

 * [http://ralphschindler.com/category/articles/phpundamentals PHPundamentals Series: A Background on Statics]
 * [http://paul-m-jones.com/archives/1727 Paul M. Jones Benchmarking Slides from PHPBenelux 2011]
 * [http://paul-m-jones.com/archives/1222 Running The Symfony 2 Benchmarks]

Design

 * [http://c2.com/cgi/wiki?NewConsideredHarmful New Considered Harmful]

BEARフレームワークの設計・実装でインスパイアされたり参考にしたりしたものを記しています。