1 What is software design?

 

This chapter covers

  • Establishing the idea and intuition behind software design
  • Finding similarities and dissimilarities between object-oriented and functional design
  • Introducing the concepts of functional design
  • Introducing general design principles

Functional Design and Architecture presents the interesting ideas about software design and architecture we’ve discovered thus far in functional programming. You may be asking, why break the status quo — why stray from plain old techniques the imperative world elaborated for us years ago? Good question. I could answer that functional programming techniques can make your code safer, shorter, and better in general. I could also say that some problems are much easier to approach within the functional paradigm. Moreover, I could argue that the functional paradigm is no doubt just as deserving as others. But these are just words — not that convincing and lacking strong facts.

1.1 Software design

 
 
 

1.1.1 Requirements, goals, and simplicity

 

1.1.2 Essential and accidental complexity

 
 

1.1.3 Low coupling, high cohesion

 
 
 

1.1.4 Interfaces, inversion of control, and modularity

 

1.2 Design in mainstream paradigms

 
 

1.2.1 Imperative design

 
 
 
 

1.2.2 Object-oriented design

 
 
 
 

1.2.3 Object-oriented design principles

 
 

1.2.4 Shifting to functional programming

 
 
 
 

1.3 Software design in functional languages

 

1.3.1 Immutability, purity, and determinism

 
 
 

1.3.2 Strong static type systems

 
 

1.3.3 Functional patterns, idioms, and thinking

 
 
 
 

1.4 Summary

 
 
 
 
sitemap

Unable to load book!

The book could not be loaded.

(try again in a couple of minutes)

manning.com homepage