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