This blog is no longer being maintained, please go to The missing link of Agile instead

Monday, March 02, 2009

Streszczenie: Investigating architecture and design

Jedną z rad w przeczytanej ostatnio przeze mnie książce "Pragmatic Thinking & Learning: Refactor your wetware" autorstwa Andy'ego Hunta jest prowadzenie wiki. W takiej wiki może znaleźć się wszystko od ciekawych cytatów, poprzez przemyślenia aż do streszczeń książek oraz artykułów (itd. itp.). Streszczanie książek/artykułów, podkreślanie ważnych fragmentów, dopisywanie komentarzy etc. samo w sobie jest polecane przez Hunta jako świetny sposób na lepsze przyswojenie tematu... Nie będę jednak przepisywał porad z książki Andy'ego bo nie o tym miało być :) (choć gorąco zachęcam do jej przeczytania!).

Zamiast tego zamieszczam streszczenie artykułu Neal'a Forda "Investigating architecture and design" przeplatane moimi przemyśleniami.


Jeśli komuś spośród garstki osób, które odwiedza mojego bloga ;) podoba się pomysł takiego właśnie dzielenia się wiedzą będę od czasu do czasu publikował notki tego typu. W przeciwnym razie, żeby się nie pozbawiać i tak nielicznego grona czytelników :P odpuszczę sobie.
Czekam na feedback!




Notatka powstała przy użyciu pluginu do VIM'a - viki oraz konwertera deplate (dla zainteresowanych wystarczy: sudo gem install deplate).



Źródło:
Evolutionary architecture and emergent design: Investigating architecture and design[1]


1 Introduction
==============

Architecture is being separated into two categories:

* application architecture - coarse-grained pieces that compose an
application - which is further dived into:
+ framework-level architecture - the combination of frameworks,
+ application architecture - logical separation of concerns.
* enterprise architecture - how enterprise as a whole consumes
application.

+++ Metaphor for software architectures

Enterprise architecture => city planning

Application architecture => building architecture


2 Definitions of architecture
=============================

"In most successful software projects, the expert developers working on
that project have a shared understanding of the design system design.
This shared understanding is called 'architecture'. This understanding
includes how the system is divided into components and how the
components interact through interfaces." Ralph Johnson

"Architecture is about the important stuff. Whatever it is." Martin
Fowler

"Stuff that's hard to change later." Neal Ford


3 Important note
================

!!! Architecture -> Evolves !!!

Because it consists of elements that must exist before you start
building an application.

!!! Design -> Emerge !!!

Because it is grown over time.


4 Useful equations
==================

"Flexible architecture" + "Reversible decisions" = "Evolving
architecture"

"Just-in-time dirty hacks" = "Technical debt" = "Rising entropy"


5 Complexity
============

* essential,

!!! Watch out for essential complexity! It might be possible to
!!! lower it by asking customer to consider her/his choices more
!!! carefully. Money argument is the ultimate way of doing that.
* accidental.

Accidential complexity:

1. Just-in-time hacks.
2. Duplication.
3. Irreversibility.

+++ Because genericness adds entropy, you damage your ability to evolve
the design in interesting ways early in the projects.

[1] http://www.ibm.com/developerworks/java/library/j-eaed1/index.html

No comments:

Post a Comment