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. 2 R I T Software Engineering
Reuse Opportunities - Everything Requirements Testing Architecture design Project planning Software Process, methods, components tools Software frameworks People User interface design Prototypes R. Kuehl p. 3 R I T Software Engineering
Advantages of Reuse Saves time and cost … Limited development cost Presumably of proven quality However … R. Kuehl p. 4 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) R. Kuehl p. 5 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 R. Kuehl p. 6 R I T Software Engineering
Netflix as a Case Study Hadoop R. Kuehl p. 7 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 R. Kuehl p. 8 R I T Software Engineering
Data Management Router – uses the Apache Samza distributed stream processing framework Kafka for messaging R. Kuehl p. 9 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 R. Kuehl p. 10 R I T Software Engineering
Android Software Architecture R. Kuehl p. 11 R I T Software Engineering
Software Product Lines What are some product line examples? R. Kuehl p. 12 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 R. Kuehl p. 13 R I T Software Engineering
Variation Points Alternatives for Variant A R. Kuehl p. 14 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 change s (“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 R. Kuehl p. 15 R I T Software Engineering
Recommend
More recommend