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