Software Architecture and Reuse R. Kuehl p. 1 R I T Software - - PowerPoint PPT Presentation

software architecture and reuse
SMART_READER_LITE
LIVE PREVIEW

Software Architecture and Reuse R. Kuehl p. 1 R I T Software - - PowerPoint PPT Presentation

Software Architecture and Reuse R. Kuehl p. 1 R I T Software Engineering Reuse: The Big Promise Focus was small-gr grained, ined, opportunistic, and techn hnology ology-dr drive iven. Results did not meet business goals. R. Kuehl p.


slide-1
SLIDE 1
  • R. Kuehl
  • p. 1

R I T

Software Engineering

Software Architecture and Reuse

slide-2
SLIDE 2
  • R. Kuehl
  • p. 2

R I T

Software Engineering

Reuse: The Big Promise

Focus was small-gr grained, ined, opportunistic, and techn hnology

  • logy-dr

drive

  • iven. Results did not meet

business goals.

slide-3
SLIDE 3
  • R. Kuehl
  • p. 3

R I T

Software Engineering

Reuse Opportunities - Everything

 Requirements  Architecture design  Software components  Software frameworks  User interface design  Testing  Project planning  Process, methods, tools  People  Prototypes

slide-4
SLIDE 4
  • R. Kuehl
  • p. 4

R I T

Software Engineering

Advantages of Reuse

 Saves time and cost …  Limited development cost  Presumably of proven quality  However …

slide-5
SLIDE 5
  • R. Kuehl
  • p. 5

R I T

Software Engineering

Failure of Software Reuse

When cost exceeds value …

 Not useful – functionality too limited, easier to rewrite  Difficult to use – too complex, too large, unacceptable learning curve  Unknown pedigree – unknown quality, uncertain support  Architectural qualities mismatched or insufficient (e.g., performance)

slide-6
SLIDE 6
  • R. Kuehl
  • p. 6

R I T

Software Engineering

Software Frameworks

 A partial design implemented in code that provides common reusable services

 Design based on underlying patterns and tactics  API access

 Range in complexity from simple functional libraries to complex and sophisticated subsystems (platforms)  Many modern web and mobile app software architectures are built on top of reusable open source frameworks

slide-7
SLIDE 7
  • R. Kuehl
  • p. 7

R I T

Software Engineering

Netflix as a Case Study

Hadoop

slide-8
SLIDE 8
  • R. Kuehl
  • p. 8

R I T

Software Engineering

Manage Data Streaming

 Apache Kafka – “used for building real-time data pipelines and streaming apps.”

 Publish and subscribe to read and write data streams  Respond in real time  Store streams of data safely in a distributed, fault tolerant cluster

 Control Plane – smart job scheduling for the data

slide-9
SLIDE 9
  • R. Kuehl
  • p. 9

R I T

Software Engineering

Data Management

 Router – uses the Apache Samza distributed stream processing framework

 Kafka for messaging

slide-10
SLIDE 10
  • R. Kuehl
  • p. 10

R I T

Software Engineering

 AWS services

 Amazon S3 Containers and EMR (Elastic MapReduce) - processing and storage of large unstructured data sets  Elasticsearch –scalable, near real-time search engine  Apache Spark – supports interactive queries and data streaming for download to consumers

slide-11
SLIDE 11
  • R. Kuehl
  • p. 11

R I T

Software Engineering

Android Software Architecture

slide-12
SLIDE 12
  • R. Kuehl
  • p. 12

R I T

Software Engineering

Software Product Lines

What are some product line examples?

slide-13
SLIDE 13
  • R. Kuehl
  • p. 13

R I T

Software Engineering

Scope, Commonality, and Variability Analysis

 Identify common product features and variations among potential products  Modifiability QA scenarios  Design architecture variation points to support modifiability

 Module(s) that needs to be modifiable to achieve a product line variation

 Select a variation mechanism for each variation point  Trade-off – cost of over-engineering flexibility versus design refactoring

slide-14
SLIDE 14
  • R. Kuehl
  • p. 14

R I T

Software Engineering

Variation Points

Alternatives for Variant A

slide-15
SLIDE 15
  • R. Kuehl
  • p. 15

R I T

Software Engineering

Variation Mechanisms

 Ways to configure variation points; compile, build, or run time  Each mechanism has a cost – development, deployment, side effects  Could just copy modules and make changes (“clone and own”)

  • Fast and easy, but scalability?

 Inclusion or omission of elements

 Through build procedures

 Selection of different versions of elements with the same interface