Software Engineering with Reusable Components

Slides:



Advertisements
Similar presentations
Database System Concepts and Architecture
Advertisements

Chapter 13 Review Questions
Database Architectures and the Web
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
SWE Introduction to Software Engineering
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Architectural Design, Distributed Systems Architectures
DISTRIBUTED COMPUTING
Course Instructor: Aisha Azeem
Chapter 6: Architectural Design
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
The Design Discipline.
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
©Ian Sommerville 1995 Software Engineering, 5th edition. Chapter 13Slide 1 Architectural Design u Establishing the overall structure of a software system.
1 CMPT 275 High Level Design Phase Architecture. Janice Regan, Objectives of Design  The design phase takes the results of the requirements analysis.
Architectural Design, Distributed Systems Architectures
An Introduction to Software Architecture
Architectural Design portions ©Ian Sommerville 1995 Establishing the overall structure of a software system.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
4/2/03I-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Software Architecture and Design Readings: Ambler, Chap. 7 (Sections to start.
Architectural Design To explain the advantages and disadvantages of different distributed systems architectures To discuss client-server and distributed.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Architectural Design 10/24/2015ICS 413 – Software Engineering1.
Advanced Computer Networks Topic 2: Characterization of Distributed Systems.
Systems Analysis and Design in a Changing World, 3rd Edition
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
 Repository Model  Client-Server Model  Layered Model  Modular decomposition styles  Object Models  Function Oriented Pipelining  Control Styles.
CS 501: Software Engineering Fall 1999 Lecture 12 System Architecture III Distributed Objects.
Chapter 7: Architectural Design Chapter 11 in textbook 1.
Slide 1 Chapter 8 Architectural Design. Slide 2 Topics covered l System structuring l Control models l Modular decomposition l Domain-specific architectures.
BZUPAGES.COMSoftware Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 5:Architectural Design l Establishing the overall structure of a software.
Distributed Systems Architectures Chapter 12. Objectives  To explain the advantages and disadvantages of different distributed systems architectures.
Distributed Systems Architectures. Topics covered l Client-server architectures l Distributed object architectures l Inter-organisational computing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Applications Active Web Documents Active Web Documents.
Software architecture
CS 325: Software Engineering
IS301 – Software Engineering Dept of Computer Information Systems
SOFTWARE DESIGN AND ARCHITECTURE
System Design and Modeling
System Design.
Software Design and Architecture
Part 3 Design What does design mean in different fields?
The Client/Server Database Environment
Component Based Software Engineering
Database Architectures and the Web
University of Technology
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Software Engineering Architectural Design Chapter 6 Dr.Doaa Samy
Software Engineering Architectural Design Chapter 6 Dr.Doaa Samy
Service-centric Software Engineering
Data, Databases, and DBMSs
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software Architecture
Architectural Design.
Chapter 6 – Architectural Design
Software models - Software Architecture Design Patterns
Analysis models and design models
An Introduction to Software Architecture
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Chapter 5 Architectural Design.
Chapter 6 – Architectural Design
Presentation transcript:

Software Engineering with Reusable Components RiSE’s Seminars Sametinger’s book :: Chapters 8, 9 and 10 Eduardo Cruz January 1, 2019

Chapter 8 - Component Attributes Chapter 9 - Component Taxonomy Software Engineering with Reusable Components Summary Chapter 8 - Component Attributes Chapter 9 - Component Taxonomy Chapter 10 - Component Examples January 1, 2019

Chapter 8 – Component Attributes Software Engineering with Reusable Components Previous chapter: platform, composition, interoperation Chapter 8 – Component Attributes Better Classification Functionality Interactivity Interaction Concurrency Distribution Forms of Adaptation Quality Control January 1, 2019

Functionality Applicability Generality Completeness Software Engineering with Reusable Components Chapter 8 – Component Attributes Functionality Applicability It is likelihood to be a reuse candidate in the range of software systems for which it was designed to be reused Generality High generality of a component means also high applicability of this component. However, care has to be taken not to over generalize a component. Excessive generality leads to complex components and unnecessary overhead in both execution time and resource consumption Completeness A component is complete when it offers the functionality expected by reusers in its intended reuse scenarios January 1, 2019

Software Engineering with Reusable Components Chapter 8 – Component Attributes Interactivity Interactive components have unpredictable inputs from a external environment. Functions Transform initial state to a final state Complexity by computation cost Do something Self-destruction after completed invocation Objects React to messages Complexity of interaction Are something Persist while reaching to multiple invocations by clients January 1, 2019

Component interaction Software Engineering with Reusable Components Chapter 8 – Component Attributes Interaction Component interaction High cohesion - Does one thing and does it well Loose coupling - Low dependencies User interaction User interface decrease reusability January 1, 2019

Gain in execution speed Elimination of potential processor idle time Software Engineering with Reusable Components Chapter 8 – Component Attributes Concurrency The textual order of the computations does not define the order of execution Gain in execution speed Elimination of potential processor idle time Inappropriateness sequential model Synchronization Is necessary if two components, for example, share any kind of resource January 1, 2019

Software Engineering with Reusable Components Chapter 8 – Component Attributes Distribution Distributed components are logically and sometimes geographically separate The main reasons are not cost considerations but increased capabilities, greater flexibility of incremental expansion, and choice of vendors Networks, multiprocessors, multicomputers ... January 1, 2019

Forms of Adaptation Adaptation Customization. Modification Software Engineering with Reusable Components Chapter 8 – Component Attributes Forms of Adaptation Adaptation What happens to a component between the time a decision is made to reuse it and the time it becomes part of the software systems Customization. Modification January 1, 2019

Pre and post conditions Fault tolerant software Distributed Components Software Engineering with Reusable Components Chapter 8 – Component Attributes Quality Control A market of reusable software components will not evolve without some sort of guaranteed quality Pre and post conditions Fault tolerant software Distributed Components Partial Failure and deadlocks Unreliable communication channels January 1, 2019

Software Engineering with Reusable Components Chapter 8 – Component Attributes Summary Attributes Examples Functionality Sorting, menu handling, database management Component Specific Component interaction Functional call, database query, server contact User interaction Dialog-box, window display, terminal input Quality control Testes, verifications, compiler checks, assertions, process backups Form of adaptation Parameters, inheritance, modification Platform Specific Concurrency Semaphores, critical regions, monitors Distribution Client-server, World Wide Web, file transfer January 1, 2019

Chapter 9 – Component Taxonomy Software Engineering with Reusable Components Chapter 9 – Component Taxonomy Component categories make it easier to determine the reuse potential of specific components Taxonomy Interfaces Composition Techniques Platforms Related Work January 1, 2019

User and data interfaces Software Engineering with Reusable Components Chapter 9 – Component Taxonomy User and data interfaces User and data interface may be used when components do not provide explicit reuse support User interface Level 2: Graphical user interface Level 1: Command-line interface Level 0: None Data Interfaces Level 3: Database I/O Level 2: Specific file I/O Level 1: Textual I/O Level 0: Nome January 1, 2019

Composition and Interoperation Software Engineering with Reusable Components Chapter 9 – Component Taxonomy Composition and Interoperation Programming interfaces represent the most important aspect for reuse Level 8: Open platform composition Level 7: Specific platform composition Level 6: Object model composition Level 5: Subsystem composition Level 4: Object-oriented composition Level 3: Modular composition Level 2: Functional composition Level 1: Textual Composition Level 0: None January 1, 2019

Platforms and Attributes Software Engineering with Reusable Components Chapter 9 – Component Taxonomy Platforms and Attributes In order to support systematic reuse, we have to overcome the boundaries of component platforms Platform categories Level 4: Programming languages Level 3: Libraries Level 2: Programming system Level 1: Operating system Level 0: Hardware Some attributes are platform specific The standardization of platforms is important for increased reusability of components. For example, the definition of virtual machine is one step in this direction January 1, 2019

Related Work Structures Tools Subsystems Scope Purpose Granularity Software Engineering with Reusable Components Chapter 9 – Component Taxonomy Related Work Structures Denote objects or classes of objects (abstract data type) Tools Denote algorithmic targeted to structures Subsystems Denote logical collections of cooperating structures and tools Scope Capture the characteristics of the problem Purpose Domain /technology Granularity Abstraction General / Specific January 1, 2019

Related Work Active Passive State Inheritance Concurrency Distribution Software Engineering with Reusable Components Chapter 9 – Component Taxonomy Related Work Active Operating system Passive Classes, functions State Inheritance Concurrency Distribution January 1, 2019

Chapter 10 – Component Examples Visual Basic: Reuse of Visual Controls Software Engineering with Reusable Components Chapter 10 – Component Examples Visual Basic: Reuse of Visual Controls Java: Reuse on the World Wide Web Unix Filters: Reuse based on ASCII Pipes FrameMaker: Reuse of an Application Field: Reuse in a Programming Environment January 1, 2019

Visual Basic: Reuse of Visual Controls Software Engineering with Reusable Components Chapter 10 – Component Examples Visual Basic: Reuse of Visual Controls Steps Create the user interface Ser Properties Write code Consists of Forms modules Code modules Custom controls Platform Event Handling Between Object-oriented composition and subsystem composition January 1, 2019

Java: Reuse on the World Wide Web Software Engineering with Reusable Components Chapter 10 – Component Examples Java: Reuse on the World Wide Web Java designers addressed many problems of today's software developer JavaBeans Extensive libraries with support for graphical user interface Characteristics Simplicity Object-orientedness Robustness and reliability Security Portability High Performance Heterogeneity and distributed networks Architecture neutrality Dynamic adaptability January 1, 2019

Unix Filters: Reuse based on ASCII Pipes Software Engineering with Reusable Components Chapter 10 – Component Examples Unix Filters: Reuse based on ASCII Pipes Pipelines Are linear sequences of filters Bounded pipes Have the amount of data restricted Typed pipes Have a type defined for their data dir *.* | more input pipe pipe output Filter Filter Filter January 1, 2019

Framemaker: Reuse of a Desktop Publishing Application Software Engineering with Reusable Components Chapter 10 – Component Examples Framemaker: Reuse of a Desktop Publishing Application Complex commercial application for publishing Word processor, spell checking, cross-reference, API - Write C programs to control Framemaker FDE – Framemaker Development Environment Communicate with the user Add functionality Modify user interface January 1, 2019

Field: Reuse in Programming Environment Software Engineering with Reusable Components Chapter 10 – Component Examples Field: Reuse in Programming Environment Integrated Programming environment on Unix platforms Simplicity Base for existing tools Black box Wrappers send and receive messages and also communicate with the tools to be reused White box Integrate tools into a message-based environment January 1, 2019