230 likes | 285 Views
Software Engineering with Reusable Components. RiSE’s Seminars Sametinger’s book :: Chapters 8, 9 and 10 Eduardo Cruz. Software Engineering with Reusable Components. Summary. Chapter 8 - Component Attributes Chapter 9 - Component Taxonomy Chapter 10 - Component Examples.
E N D
Software Engineering with Reusable Components RiSE’s Seminars Sametinger’s book :: Chapters 8, 9 and 10 Eduardo Cruz
Software Engineering with Reusable Components Summary • Chapter 8 - Component Attributes • Chapter 9 - Component Taxonomy • Chapter 10 - Component Examples
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
Software Engineering with Reusable ComponentsChapter 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
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 Software Engineering with Reusable ComponentsChapter 8 – Component Attributes InteractivityInteractive components have unpredictable inputs from a external environment.
Software Engineering with Reusable ComponentsChapter 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
Software Engineering with Reusable ComponentsChapter 8 – Component Attributes ConcurrencyThe 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
Software Engineering with Reusable ComponentsChapter 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 ...
Software Engineering with Reusable ComponentsChapter 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
Software Engineering with Reusable ComponentsChapter 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
Software Engineering with Reusable ComponentsChapter 8 – Component Attributes Summary
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
Software Engineering with Reusable ComponentsChapter 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
Software Engineering with Reusable ComponentsChapter 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
Software Engineering with Reusable ComponentsChapter 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 machineis one step in this direction
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 Software Engineering with Reusable ComponentsChapter 9 – Component Taxonomy Related Work
Active Operating system Passive Classes, functions State Inheritance Concurrency Distribution Software Engineering with Reusable ComponentsChapter 9 – Component Taxonomy Related Work
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
Platform Event Handling Between Object-oriented composition and subsystem composition Software Engineering with Reusable ComponentsChapter 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
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 Software Engineering with Reusable ComponentsChapter 10 – Component Examples Java: Reuse on the World Wide Web
Software Engineering with Reusable ComponentsChapter 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 output pipe pipe Filter Filter Filter
Software Engineering with Reusable ComponentsChapter 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
Software Engineering with Reusable ComponentsChapter 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