Lean architecture for agile software development: [building software as if people mattered]
Gespeichert in:
Hauptverfasser: | , |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Chichester
Wiley
2010
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | XVIII, 357 S. Ill. |
ISBN: | 0470684208 9780470684207 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV036586400 | ||
003 | DE-604 | ||
005 | 20110406 | ||
007 | t | ||
008 | 100727s2010 a||| |||| 00||| eng d | ||
020 | |a 0470684208 |c (pbk.) £29.99 |9 0-470-68420-8 | ||
020 | |a 9780470684207 |c (pbk.) £29.99 |9 978-0-470-68420-7 | ||
035 | |a (OCoLC)699850960 | ||
035 | |a (DE-599)GBV619774754 | ||
040 | |a DE-604 |b ger | ||
041 | 0 | |a eng | |
049 | |a DE-83 |a DE-739 |a DE-29T |a DE-859 | ||
084 | |a ST 230 |0 (DE-625)143617: |2 rvk | ||
100 | 1 | |a Coplien, James O. |e Verfasser |4 aut | |
245 | 1 | 0 | |a Lean architecture for agile software development |b [building software as if people mattered] |c James Coplien ; Gertrud Bjørnvig |
264 | 1 | |a Chichester |b Wiley |c 2010 | |
300 | |a XVIII, 357 S. |b Ill. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 0 | 7 | |a Scrum |g Vorgehensmodell |0 (DE-588)7612008-9 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Agile Softwareentwicklung |0 (DE-588)4806620-5 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Agile Softwareentwicklung |0 (DE-588)4806620-5 |D s |
689 | 0 | 1 | |a Scrum |g Vorgehensmodell |0 (DE-588)7612008-9 |D s |
689 | 0 | |5 DE-604 | |
700 | 1 | |a Bjørnvig, Gertrud |e Verfasser |4 aut | |
856 | 4 | 2 | |m Digitalisierung UB Passau |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=020507195&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-020507195 |
Datensatz im Suchindex
_version_ | 1804143176852701184 |
---|---|
adam_text | Contents
About the Authors
xii
Preface
xiii
1
Introduction
Ί
1.1
The Touchstones: Lean and Agile
1
1.2
Lean Architecture and Agile Feature Development
4
1.3
Agile Production
7
1.3.1
Agile Builds on Lean
7
1.3.2
The Scope of Agile Systems
8
1.3.3
Agile and
DCI
9
1.4
The Book in a Very Small Nutshell
10
1.5
Lean and Agile: Contrasting and Complementary
11
1.5.1
The Lean Secret
14
1.6
Lost Practices
14
1.6.1
Architecture
15
1.6.2
Handling Dependencies between Requirements
15
1.6.3
Foundations for Usability
16
1.6.4
Documentation
16
Code Does Not Stand Alone
17
Capturing the Why
19
1.6.5
Common Sense, Thinking, and Caring
19
1.7
What this Book is Nor About
21
1.8
Agile, Lean
-
Oh, Yeah, and Scrum and Methodologies and Such
22
1.9
History and Such
24
2
Agile Production in a Nutshell
27
2.1
Engage the Stakeholders
27
2.2
Define the Problem
29
2.3
Focusing on What the System is: The Foundations of Form
30
2.4
Focusing on What the System Does: The System Lifeblood
32
2.5
Design and Code
33
2.6
Countdown:
3,2,1... 34
Stakeholder Engagement
3.1
The Value Stream
3.1.1
End Users and Other Stakeholders as Value Stream Anchors
3.1.2
Architecture in the Value Stream
3.1.3
The Lean Secret
3.2
The Key Stakeholders
3.2.1
End Users
Psyching Out the End Users
Don t Forget Behavior
The End User Landscape
3.2.2
The Business
A Special Note for Managers
3.2.3
Customers
...
As Contrasted with End Users
Customers in the Value Stream
3.2.4
Domain Experts
No Ivory Tower Architects
Experts in Both Problem and Solution Domains
3.2.5
Developers and Testers
3.3
Process Elements of Stakeholder Engagement
3.3.1
Getting Started
3.3.2
Customer Engagement
3.4
The Network of Stakeholders: Trimming Wasted Time
3.4.1
Stovepipe Versus Swarm
3.4.2
The First Thing You Build
3.4.3
Keep the Team Together
3.5
No Quick Fixes, but Some Hope
Problem Definition
4.1
What s Agile about Problem Definitions?
4.2
What s Lean about Problem Definitions?
4.3
Good and Bad Problem Definitions
4.4
Problems and Solutions
4.5
The Process Around Problem Definitions
4.5.1
Value the Hunt Over the Prize
4.5.2
Problem Ownership
4.5.3
Creeping Featurism
4.6
Problem Definitions, Goals, Charters, Visions, and Objectives
4.7
Documentation?
What the System
J s,
Part
1 :
Lean Architecture
5.1
Some Surprises about Architecture
5.1.1
What s Lean about This?
Deliberation and Pull
Failure-Proof Constraints or Poka-Yoke
The Lean Mantras of Conservation, Consistency, and Focus
5.1.2
What s Agile about Architecture?
It s All About Individuals and Interactions
Past Excesses
85
Dispelling a Couple of Agile Myths
86
5.2
The First Design Step: Partitioning
88
5.2.1
The First Partition: Domain Form Versus Behavioral Form
89
5.2.2
The Second Partitioning: Conway s Law
90
5.2.3
The Real Complexity of Partitioning
93
5.2.4
Dimensions of Complexity
94
5.2.5
Domains: A Particularly Interesting Partitioning
94
5.2.6
Back to Dimensions of Complexity
96
5.2.7
Architecture and Culture
100
5.2.8
Wrap-Up on Conway s Law
100
5.3
The Second Design Step: Selecting a Design Style
100
5.3.1
Contrasting Structuring with Partitioning
102
5.3.2
The Fundamentals of Style: Commonality and Variation
104
5.3.3
Starting with Tacit Commonality and Variation
105
5.3.4
Commonality, Variation, and Scope
108
5.3.5
Making Commonalities and Variations Explicit 111
Commonality Categories
112
Next Steps
114
5.3.6
The Most Common Style: Object Orientation
114
Just What is Object Orientation?
115
5.3.7
Other Styles within the
Von
Neumann World
117
5.3.8
Domain-Specific Languages and Application Generators
120
The State of the Art in DSLs
121
DSLs Place in Architecture
121
5.3.9
Codified Forms: Pattern Languages
122
5.3.10
Third-Party Software and Other Paradigms
124
5.4
Documentation?
127
5.4.1
The Domain Dictionary
128
5.4.2
Architecture Carryover
128
5.5
History and Such
129
What the System Is, Part
2:
Coding It Up
13
і
6.1
The Third Step: The Rough Framing of the Code
131
6.1.1
Abstract Base Classes
133
6.1.2
Pre-Conditions, Post-Conditions, and Assertions
137
Static Cling
142
6.1.3
Algorithmic Scaling: The Other Side of Static Assertions
144
6.1.4
Form Versus Accessible Services
146
6.1.5
Scaffolding
147
6.1.6
Testing the Architecture
149
Usability Testing
149
Architecture Testing
149
6.2
Relationships in Architecture
153
6.2.1
Kinds of Relationship
153
6.2.2
Testing the Relationships
155
6.3
Not Your Old Professor s OO
155
6.4
How much Architecture?
159
6.4.1
Balancing BUFD and YAGNI
159
6.4.2
One Size Does Not Fit All
160
6.4.3
When Are You Done?
160
6.5
Documentation?
162
6.6
History and Such
163
What the System Does: System Functionality
165
7.1
What the System Does
166
7.1.1
User Stories: A Beginning
166
7.1.2
Enabling Specifications and Use Cases
167
7.1.3
Helping Developers, Too
169
7.1.4
Your Mileage may Vary
170
7.2
Who is Going to Use Our Software?
171
7.2.1
User Profiles
171
7.2.2
Personas
171
7.2.3
User Profiles or
Personas?
. 172
7.2.4
User Roles and Terminology
173
7.3
What do the Users Want to Use Our Software for?
173
7.3.1
Feature Lists
173
7.3.2
Dataflow Diagrams
174
7.3.3
Personas
and Scenarios
174
7.3.4
Narratives
174
7.3.5
Behavior-Driven Development
175
7.3.6
Now that We re Warmed Up...
175
Prototypes
176
Towards Foundations for Decisions
176
Known and Unknown Unknowns
176
Use Cases as a Decision Framework
177
7.4
Why Does the User Want to Use Our Software?
177
7.5
Consolidation of What the System Does
178
7.5.1
The Helicopter View
181
Habits: The Developer View and the User View
182
Trimming the Scope
185
7.5.2
Setting the Stage
186
7.5.3
Play the Sunny Day Scenario
187
Business Rules
, 191
7.5.4
Add the Interesting Stuff
193
7.5.5
Use Cases to Roles
200
Roles from the Use Case
201
Bridging the Gap between the Business and the Programmer
202
7.6
Recap
203
7.6.1
Support the User s Workflow
203
7.6.2
Support Testing Close to Development
203
7.6.3
Support Efficient Decision-Making about Functionality
204
7.6.4
Support Emerging Requirements
204
7.6.5
Support Release Planning
204
7.6.6
Support Sufficient Input to the Architecture
205
7.6.7
Support the Team s Understanding of What to Develop
205
7.7
It Depends : When Use Cases are a Bad Fit
206
7.7.1
Classic OO: Atomic Event Architectures
206
7.8
Usability Testing
208
7.9
Documentation?
209
7.10
History and Such
211
Coding It Up: Basic Assembly
213
8.1
The Big Picture: Model-View-Controller-User
214
8.1.1
What is a Program?
214
8.1.2
What is an Agile Program?
215
8.1.3
MVC in More Detail
217
8.1.4
MVC-U: Not the End of the Story
217
A Short History of Computer Science
218
Atomic Event Architectures
219
DCI
Architectures
220
8.2
The Form and Architecture of Atomic Event Systems
220
8.2.1
Domain Objects
221
8.2.2
Object Roles, Interfaces, and the Model
221
Example
223
8.2.3
Reflection: Use Cases, Atomic Event Architectures, and
Algorithms
224
8.2.4
A Special Case: One-to-Many Mapping of Object Roles to
Objects
225
8.3
Updating the Domain Logic: Method Elaboration, Factoring, and
Re-factoring
226
8.3.1
Creating New Classes and Filling in Existing Function
Placeholders
227
Example
228
8.3.2
Back to the Future: This is Just Good Old-Fashioned OO
229
8.3.3
Analysis and Design Tools
229
8.3.4
Factoring
231
8.3.5
A Caution about Re-Factoring
231
8.4
Documentation?
231
8.5
Why All These Artifacts?
232
8.6
History and Such
233
Coding it Up: The
DCI
Architecture
235
9.1
Sometimes, Smart Objects Just Aren t Enough
235
9.2
DCI
in a Nutshell
236
9.3
Overview of
DCI
238
9.3.1
Parts of the User Mental Model We ve Forgotten
239
9.3.2
Enter Methodful Object Roles
240
9.3.3
Tricks with Traits
242
9.3.4
Context Classes: One Per Use Case
243
9.4
DCI
by Example
246
9.4.1
The Inputs to the Design
246
9.4.2
Use Cases to Algorithms
247
9.4.3
Methodless Object Roles: The Framework for Identifiers
250
9.4.4
Partitioning the Algorithms Across Methodful Object Roles
253
Traits as a Building Block
253
In Smalltalk
253
In
C++ 254
In Ruby
256
Coding it Up:
C++ 257
Coding Up
DCI
in Ruby
259
9.4.5
The Context Framework
261
The Ruby Code
263
The
C++
Code
265
Making Contexts Work
267
Habits: Nested Contexts in Methodful Object Roles
277
9.4.6
Variants and Tricks in
DCI
283
Context Layering
283
Information Hiding
. 283
Selective Object Role Injection
284
9.5
Updating the Domain Logic
285
9.5.1
Contrasting
DCI
with the Atomic Event Style
286
9.5.2
Special Considerations for Domain Logic in
DCI
287
9.6
Context Objects in the User Mental Model: Solution to an
Age-Old Problem
290
9.7
Why All These Artifacts?
294
Why not Use Classes Instead of Methodful Object Roles ?
295
Why not Put the Entire Algorithm Inside of the Class with
which it is Most Closely Coupled?
295
Then Why not Localize the Algorithm to a Class and Tie it to
Domain Objects as Needed?
296
Why not Put the Algorithm into a Procedure, and Combine
the Procedural Paradigm with the Object Paradigm
in a Single Program?
296
If I Collect Together the Algorithm Code for a Use Case in
One Class, Including the Code for All of its
Deviations, Doesn t the Context Become Very
Large?
296
So, What do
DCI
and Lean Architecture Give Me?
, 297
And Remember.
.. 297
9.8
Beyond
C++:
DCI
in Other Languages
297
9.8.1
Scala
.298
9.8.2
Python
299
9.8.3
C#
299
9.8.4 ...
and Even Java
299
9.8.5
The Account Example in Smalltalk
300
9.9
Documentation?
300
9.10
History and Such
301
9.10.1
DCI
and Aspect-Oriented Programming
302
9.10.2
Other Approaches
302
10
Epilog
305
Appendix
A Scala
Implementation of the
DCI
Account Example
307
Appendix
В
Account Example in Python
311
AppendixC Account Example in C#
315
Appendix
D
Account Example in Ruby
321
Appendix
E Qi4j
327
Appendix
F
Account Example in Squeak
331
F.I Testing Perspective
333
F.2 Data Perspective
333
F.2.1 BB5Bank
333
F.2.2
BBoSavingsAccount
334
F.2.3 BB5CheckingAccount
334
F.3 Context Perspective
335
F.3.1 BBSMoneyTransferContext
335
F.4 Interaction (RoleTrait) Perspective
336
F.4.1 BBSMoneyTransferContextTransferMoneySource
336
F.4.2 BBSMoneyTransferContextMyContext
337
F.4.3 BBSMoneyTransferContextTransferMoneySink
337
F.5 Support Perspective (Infrastructure Classes)
337
F.5.1 BBlContext (common superclass for all contexts)
337
F.5.2 BBlRoleTrait (all RoleTraits are instances of this class)
339
Bibliography
341
Index
351
|
any_adam_object | 1 |
author | Coplien, James O. Bjørnvig, Gertrud |
author_facet | Coplien, James O. Bjørnvig, Gertrud |
author_role | aut aut |
author_sort | Coplien, James O. |
author_variant | j o c jo joc g b gb |
building | Verbundindex |
bvnumber | BV036586400 |
classification_rvk | ST 230 |
ctrlnum | (OCoLC)699850960 (DE-599)GBV619774754 |
discipline | Informatik |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01510nam a2200361 c 4500</leader><controlfield tag="001">BV036586400</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20110406 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">100727s2010 a||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">0470684208</subfield><subfield code="c">(pbk.) £29.99</subfield><subfield code="9">0-470-68420-8</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780470684207</subfield><subfield code="c">(pbk.) £29.99</subfield><subfield code="9">978-0-470-68420-7</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)699850960</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)GBV619774754</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-83</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-29T</subfield><subfield code="a">DE-859</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 230</subfield><subfield code="0">(DE-625)143617:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Coplien, James O.</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Lean architecture for agile software development</subfield><subfield code="b">[building software as if people mattered]</subfield><subfield code="c">James Coplien ; Gertrud Bjørnvig</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Chichester</subfield><subfield code="b">Wiley</subfield><subfield code="c">2010</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XVIII, 357 S.</subfield><subfield code="b">Ill.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Scrum</subfield><subfield code="g">Vorgehensmodell</subfield><subfield code="0">(DE-588)7612008-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Agile Softwareentwicklung</subfield><subfield code="0">(DE-588)4806620-5</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Agile Softwareentwicklung</subfield><subfield code="0">(DE-588)4806620-5</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Scrum</subfield><subfield code="g">Vorgehensmodell</subfield><subfield code="0">(DE-588)7612008-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Bjørnvig, Gertrud</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=020507195&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-020507195</subfield></datafield></record></collection> |
id | DE-604.BV036586400 |
illustrated | Illustrated |
indexdate | 2024-07-09T22:43:30Z |
institution | BVB |
isbn | 0470684208 9780470684207 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-020507195 |
oclc_num | 699850960 |
open_access_boolean | |
owner | DE-83 DE-739 DE-29T DE-859 |
owner_facet | DE-83 DE-739 DE-29T DE-859 |
physical | XVIII, 357 S. Ill. |
publishDate | 2010 |
publishDateSearch | 2010 |
publishDateSort | 2010 |
publisher | Wiley |
record_format | marc |
spelling | Coplien, James O. Verfasser aut Lean architecture for agile software development [building software as if people mattered] James Coplien ; Gertrud Bjørnvig Chichester Wiley 2010 XVIII, 357 S. Ill. txt rdacontent n rdamedia nc rdacarrier Scrum Vorgehensmodell (DE-588)7612008-9 gnd rswk-swf Agile Softwareentwicklung (DE-588)4806620-5 gnd rswk-swf Agile Softwareentwicklung (DE-588)4806620-5 s Scrum Vorgehensmodell (DE-588)7612008-9 s DE-604 Bjørnvig, Gertrud Verfasser aut Digitalisierung UB Passau application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=020507195&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Coplien, James O. Bjørnvig, Gertrud Lean architecture for agile software development [building software as if people mattered] Scrum Vorgehensmodell (DE-588)7612008-9 gnd Agile Softwareentwicklung (DE-588)4806620-5 gnd |
subject_GND | (DE-588)7612008-9 (DE-588)4806620-5 |
title | Lean architecture for agile software development [building software as if people mattered] |
title_auth | Lean architecture for agile software development [building software as if people mattered] |
title_exact_search | Lean architecture for agile software development [building software as if people mattered] |
title_full | Lean architecture for agile software development [building software as if people mattered] James Coplien ; Gertrud Bjørnvig |
title_fullStr | Lean architecture for agile software development [building software as if people mattered] James Coplien ; Gertrud Bjørnvig |
title_full_unstemmed | Lean architecture for agile software development [building software as if people mattered] James Coplien ; Gertrud Bjørnvig |
title_short | Lean architecture for agile software development |
title_sort | lean architecture for agile software development building software as if people mattered |
title_sub | [building software as if people mattered] |
topic | Scrum Vorgehensmodell (DE-588)7612008-9 gnd Agile Softwareentwicklung (DE-588)4806620-5 gnd |
topic_facet | Scrum Vorgehensmodell Agile Softwareentwicklung |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=020507195&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT coplienjameso leanarchitectureforagilesoftwaredevelopmentbuildingsoftwareasifpeoplemattered AT bjørnviggertrud leanarchitectureforagilesoftwaredevelopmentbuildingsoftwareasifpeoplemattered |