Muutke küpsiste eelistusi

E-raamat: Software Design: Creating Solutions for Ill-Structured Problems

(School of Engineering & Computing Sciences, Durham University, UK)
Teised raamatud teemal:
  • Formaat - EPUB+DRM
  • Hind: 63,69 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
Teised raamatud teemal:

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

Software Design: Creating Solutions for Ill-Structured Problems, Third Edition provides a balanced view of the many and varied software design practices used by practitioners. The book provides a general overview of software design within the context of software development and as a means of addressing ill-structured problems. The third edition has been expanded and reorganised to focus on the structure and process aspects of software design, including architectural issues, as well as design notations and models. It also describes a variety of different ways of creating design solutions such as plan-driven development, agile approaches, patterns, product lines, and other forms.

Features

Includes an overview and review of representation forms used for modelling design solutions

Provides a concise review of design practices and how these relate to ideas about software architecture

Uses an evidence-informed basis for discussing design concepts and when their use is appropriate

This book is suitable for undergraduate and graduate students taking courses on software engineering and software design, as well as for software engineers.

Author

David Budgen is a professor emeritus of software engineering at Durham University. His research interests include evidence-based software engineering (EBSE), software design, and healthcare informatics.
Preface to the Third Edition xiii
The City Car Club 1(4)
I Addressing Ill-Structured Problems
5(70)
1 What Is Designing About?
7(12)
1.1 When is design needed?
7(3)
1.2 A bit about software
10(2)
1.3 What exactly do we mean by `design'?
12(2)
1.4 Three perspectives upon design thinking
14(2)
Key take-home points about what designing is about
16(3)
2 Doing Design
19(12)
2.1 Designing as a creative process
19(2)
2.2 Ill-structured problems
21(3)
2.3 What does a designer do?
24(3)
2.4 A simple example: the house move
27(1)
Key take-home points about designing
28(3)
3 Managing The Design Process
31(12)
3.1 Cognitive capacity
31(1)
3.2 The power of abstraction
32(2)
3.3 Modelling and making design choices
34(1)
3.4 Recording design decisions
35(2)
3.5 Communicating ideas about a design model
37(3)
Key take-home points about the design process
40(3)
4 Design Knowledge
43(16)
4.1 What do expert software designers do?
43(6)
4.2 Some software design principles
49(4)
4.2.1 Fitness for purpose
49(1)
4.2.2 Separation of concerns
50(1)
4.2.3 Minimum coupling
51(1)
4.2.4 Maximum cohesion
52(1)
4.2.5 Information hiding
52(1)
4.3 The evolution of design ideas
53(2)
4.4 The nature of expert design knowledge
55(2)
Key take-home points about design knowledge
57(2)
5 Empirical Knowledge About Software Design
59(16)
5.1 Measuring software development processes
59(4)
5.1.1 Measuring physical phenomena
60(1)
5.1.2 Measuring human reactions
61(2)
5.2 Empirical studies in software engineering
63(6)
5.2.1 The empirical spectrum
64(1)
5.2.2 The research protocol
65(1)
5.2.3 Qualitative studies
65(1)
5.2.4 Quantitative studies
66(1)
5.2.5 Case studies
67(2)
5.3 Systematic reviews
69(2)
5.4 Using empirical knowledge
71(1)
Key take-home points about empirical knowledge
72(3)
II Design as a Noun: How Software Is Structured
75(118)
6 Software Architecture
77(16)
6.1 What architecture provides for us
77(2)
6.2 Architectural style
79(8)
6.2.1 Pipe-and-filter architectural style
82(1)
6.2.2 Call-and-return architectural style
83(1)
6.2.3 Data-centred repository architectural style
84(3)
6.3 Architectural patterns
87(4)
6.3.1 Model-view-controller (MVC)
88(2)
6.3.2 Layers
90(1)
6.4 Empirical knowledge about architecture
91(1)
Key take-home points about software architecture
92(1)
7 Modelling Software Properties
93(16)
7.1 What is a design model?
93(3)
7.2 Representations, perspectives and viewpoints
96(6)
7.2.1 The constructional viewpoint
100(1)
7.2.2 The behavioural viewpoint
101(1)
7.2.3 The functional viewpoint
101(1)
7.2.4 The data-modelling viewpoint
102(1)
7.3 Design notations
102(4)
7.3.1 Textual description forms
103(1)
7.3.2 Box and line description forms
103(2)
7.3.3 Mathematical notations
105(1)
7.4 Empirical knowledge related to viewpoint notations
106(1)
Key take-home points about design modelling
107(2)
8 Sketching Design Models
109(10)
8.1 Why do designers sketch?
109(1)
8.2 Sketching: developing informal models
110(2)
8.3 Characterising the design elements
112(4)
8.3.1 Software design as an ISP
112(1)
8.3.2 Sketching initial models
113(3)
8.4 Empirical knowledge about the use of sketching
116(1)
Key take-home points about sketching
116(3)
9 Modelling Software Processes
119(20)
9.1 Characteristics of software processes
119(2)
9.2 Modelling function: the data-flow diagram (DFD)
121(5)
9.3 Modelling behaviour: the state transition diagram (STD) and the state transition table (STT)
126(4)
9.4 Modelling data: the entity-relationship diagram (ERD)
130(4)
9.5 Modelling construction: the structure chart
134(2)
9.6 Empirical knowledge about modelling processes
136(1)
Key take-home points about modelling processes
136(3)
10 Modelling Objects And Classes
139(38)
10.1 Characteristics of objects and classes
140(10)
10.1.1 The notion of an object
141(4)
10.1.2 Objects and classes
145(5)
10.2 Relationships between objects
150(3)
10.3 Conceptual issues for object modelling
153(3)
10.4 Object modelling: the issue of notations
156(1)
10.5 Modelling construction: the class diagram
157(4)
10.5.1 Distinguishing classes from objects
158(1)
10.5.2 Class relationships
159(2)
10.6 Modelling behaviour: the statechart and the message sequence diagram
161(6)
10.6.1 The statechart
161(3)
10.6.2 The message sequence diagram
164(3)
10.7 Modelling function: the activity diagram
167(2)
10.8 Use cases
169(3)
10.9 Empirical knowledge about modelling objects and classes
172(2)
10.9.1 The object model
173(1)
10.9.2 Object modelling notations
173(1)
10.9.3 Object-oriented metrics
174(1)
Key take-home points about modelling objects and classes
174(3)
11 Modelling Software Components And Services
177(16)
11.1 Reuse
178(2)
11.2 Modelling software components
180(7)
11.2.1 Component characteristics
181(2)
11.2.2 Component frameworks
183(2)
11.2.3 Designing components
185(1)
11.2.4 COTS
186(1)
11.3 Modelling software services
187(3)
11.4 Empirical knowledge about modelling components and services
190(1)
11.4.1 Empirical knowledge about components
190(1)
11.4.2 Empirical knowledge about services
191(1)
Key take-home points about modelling components and services
191(2)
III Design as a Verb: Designing Software
193(132)
12 Structuring The Ill-Structured
195(8)
12.1 Challenges in creating a design
195(2)
12.2 Evolution of knowledge transfer mechanisms
197(2)
12.3 Designing with others
199(1)
12.4 Empirical knowledge about design creation
200(1)
Key take-home points about structuring `solutions' to ISPs
201(2)
13 Plan-Driven Software Design
203(34)
13.1 What does plan-driven mean?
204(1)
13.2 Decompositional and compositional strategies
205(3)
13.2.1 Top-down decomposition
206(1)
13.2.2 Compositional design strategies
207(1)
13.3 What do plan-driven methods provide?
208(3)
13.4 SSA/SD: example of an early plan-driven form
211(3)
13.4.1 SSA/SD representation part
212(1)
13.4.2 SSA/SD process part
212(2)
13.4.3 SSA/SD heuristics
214(1)
13.5 SSADM: a designed design method
214(5)
13.5.1 SSADM representation part
215(2)
13.5.2 SSADM process part
217(1)
13.5.3 SSADM heuristics
218(1)
13.6 Plan-driven design for object-oriented models
219(14)
13.6.1 The Fusion method
219(7)
13.6.2 The Unified Process (UP)
226(7)
13.7 Empirical knowledge related to plan-driven design
233(2)
Key take-home points about plan-driven design practices
235(2)
14 Incremental Design In Agile Software Development
237(24)
14.1 Using software prototypes
238(3)
14.2 Incremental development and the spiral model
241(2)
14.3 RAD: the DSDM method
243(6)
14.3.1 The DSDM principles
244(3)
14.3.2 The DSDM process
247(2)
14.4 The agile manifesto
249(1)
14.5 Extreme programming (XP)
250(3)
14.6 Agile development: Scrum
253(2)
14.7 Refactoring
255(2)
14.8 Empirical knowledge about design in agile development
257(2)
14.8.1 Empirical knowledge about DSDM
258(1)
14.8.2 Empirical knowledge about agile methods
258(1)
14.8.3 Empirical knowledge about refactoring
259(1)
Key take-home points about designing in an agile context
259(2)
15 Designing With Patterns
261(32)
15.1 Patterns as a mechanism for knowledge transfer
262(3)
15.2 Architectural patterns
265(6)
15.2.1 Model-view-controller (MVC)
266(2)
15.2.2 Layers
268(2)
15.2.3 Broker
270(1)
15.3 Design patterns
271(12)
15.3.1 Proxy (207)
275(3)
15.3.2 Observer (293)
278(3)
15.3.3 Abstract Factory (87)
281(2)
15.4 Other uses of patterns
283(3)
15.4.1 Software service patterns
283(1)
15.4.2 Design anti-patterns and code smells
284(2)
15.5 Designing with patterns
286(2)
15.6 Empirical knowledge about designing with patterns
288(2)
Key take-home points about designing with patterns
290(3)
16 Designing With Components And Services
293(12)
16.1 Modular design
293(1)
16.2 Designing with components
294(4)
16.3 Designing with software services
298(4)
16.4 Empirical knowledge about modular design
302(1)
Key take-home points about designing with components and services
302(3)
17 How Good Is My Design?
305(10)
17.1 Quality assessment
306(5)
17.1.1 The `ilities'
307(1)
17.1.2 Design metrics
308(3)
17.2 Reviews and walkthroughs
311(2)
17.3 Refactoring of designs
313(1)
17.4 Empirical knowledge about quality assessment
313(1)
Key take-home points about assessing design quality
314(1)
18 And What About...
315(10)
18.1 Open source software (OSS)
315(2)
18.2 Formal description techniques (FDTs)
317(4)
18.3 Model driven engineering (MDE)
321(1)
18.4 And the rest
322(3)
Bibliography 325(14)
Index 339
Author

David Budgen is a professor emeritus of software engineering at Durham University. His research interests include evidence-based software engineering (EBSE), software design, and healthcare informatics.