Android Storage by Dmitry Melnikov
+ - 0:00:00
Notes for current slide
Notes for next slide

Software Architecture

Dmitry Melnikov

1 / 23

Plan

Software development challenges

Code organization problems

Architecture definition

Architectural Pattern

2 / 23

Software development challenges

Expectation

img

3 / 23

Software development challenges

Requirements volatility

img

4 / 23

Software development challenges

Market/Stakeholder pressure

img

5 / 23

Software development challenges

High coupling and low cohesion

img

6 / 23

Software development challenges

Modification challenges

img

7 / 23

Software development challenges

Readability

img

8 / 23

Software development challenges

Lack of QA

img

9 / 23

Software development challenges

Integration challenges

img

10 / 23

Code organization problems

image

11 / 23

Code organization problems

Bad news: it's serious

Good news: it's fixable

container ship

12 / 23

Architecture definition

13 / 23

Architecture definition

Grady Booch

Chief Scientist for Software Engineering at IBM

UML co-author

Booch method author

Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.

wiki

13 / 23

Architecture definition

Martin Fowler

Chief Scientist at ThoughtWorks

«Refactoring: Improving the Design of Existing Code» author

Software architecture is the set of decisions which are both important and hard to change.

wiki, blog, architecture page, architecture definition video

14 / 23

Architecture definition

Juval Lowy

Software architect and the principal of IDesign

Microsoft's Regional Director for the Silicon Valley

If it does not change, there is no block that encapsulates it on architecture diagram.

about, IDesign

15 / 23

Architecture definition

Robert "Uncle Bob" Martin

«Clean Code» author

SOLID principles author

Agile manifesto co-author

Architectures are not (or should not) be about frameworks.

wiki, blog

16 / 23

Architecture definition

Architecture ~ Change

Risk management decisions in anticipation of inevitable change of system's requirements.

Good architecture is resilient to changes.

Good architecture is a result of many educated trade-offs.

Mostly independent of third-party frameworks and libraries.

Good architecture severely reduces the cost (effort) of software development and maintenance.

17 / 23

Architecture definition

It's a pleasure to work with good architecture.

No need to look for things.

Readable and intuitive.

Easy to reason about and modify.

Productive and less stressful.

18 / 23

Architecture definition

Martin Fowler

...the shared understanding that the expert developers have of the system design.

Ralph Johnson

Architecture is about the important stuff. Whatever that is.

19 / 23

Architecture definition

High internal quality leads to faster delivery of new features

arch-01.png

Cruft — badly designed, unnecessarily complicated, or unwanted code or software.

20 / 23

Architecture definition

Attention to internal quality pays off in weeks not months.

arch-02.png

21 / 23

Architectural Pattern

An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context.

22 / 23

Architectural Pattern

An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context.

Usually independent of implementation details.

22 / 23

Architectural Pattern

An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context.

Usually independent of implementation details.

It's a bit more common thing than design patterns, not as detailed as them.

22 / 23

Architectural Pattern

An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context.

Usually independent of implementation details.

It's a bit more common thing than design patterns, not as detailed as them.

Architectural pattern ≠ architecture.

22 / 23

Architectural Pattern

An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context.

Usually independent of implementation details.

It's a bit more common thing than design patterns, not as detailed as them.

Architectural pattern ≠ architecture.

Examples

  • Presentation data layering: MVx
  • Notifications: publish-subscribe architecture
  • State change management: event-driven architecture
  • DI architectural pattern
22 / 23

To be continued…

Dmitry Melnikov

melnikovdv@gmail.com

t.me/melnikovdv

23 / 23

Plan

Software development challenges

Code organization problems

Architecture definition

Architectural Pattern

2 / 23
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow