Criteria Based Software Product Integration Architecture F. Tsui Southern Polytechnic State University Software Integration • at the code level – Inheritance (from OO) – object code libraries – code patterns • at the component level – design patterns – component libraries, if available • at the product level – – – – code database user interface user guides Software Product Integration • Why do we care? – Business is connected and needs to operate in an integrated fashion; thus software it uses must also reflect that • • • • • human resource procurement sales financial etc. – Software industry itself experiences a large amount of partnerships or merger/acquisition activities; thus there is a need for two or more successful software products to operate as a product “family” Software Product Family • What are some of the issues that we should consider for software product family or for software product architecture?: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Terminology Packaging & delivery User interface Product manuals and user guides Application functionalities Application flow and control Data stored, processed, and shared Systems, subsystems, and middleware platforms Internationalization Customer support and maintenance A Software Product Integration Architecture Co-Existence Integration Low-Level Integration Intermediate Integration Increasing levels of product integration Strong Integration “Coupling” and “Cohesion” in Product Integration Co-Existence Integration Low-Level Integration Intermediate Integration Strong Integration low-coupling Increase in coupling high-coupling weak product family cohesion Increase in cohesion strong product family cohesion A Software Product Integration Architecture Co-Existence Integration -Packaging & delivery -System, subsystem & middleware platform -internationalization Low-Level Integration Intermediate Integration Strong Integration A Software Product Integration Architecture Co-Existence Integration -Packaging & delivery -System, subsystem & middleware platform -Internationalization Low-Level Integration -Terminology -Application UI -Product manuals -Product support& maintenance Intermediate Integration Strong Integration A Software Product Integration Architecture Co-Existence Integration -Packaging & delivery -System, subsystem & middleware platform -Internationalization Low-Level Integration -Terminology -Application UI -Product manuals -Product support& maintenance Intermediate Integration - Data stored, processed & shared -Application flow & control Strong Integration A Software Product Integration Architecture Co-Existence Integration -Packaging & delivery -System, subsystem & middleware platform -Internationalization Low-Level Integration -Terminology -Application UI -Product manuals -Product support& maintenance Intermediate Integration Strong Integration - Data stored, - Functionalities processed & shared & features -Application flow & control Low Coupling and High Cohesion • Coupling is the degree of connectedness among modules: – Control passing – Data passing • Coupling should be kept to minimum – low coupling in design • Cohesion is the degree of relatedness of the parts within a module • Cohesion should be maximized --- high cohesion in design Application of Traditional “modular” Coupling and Cohesion Notions • Coupling – – – – – Content Common Control Stamp Data • Cohesion – – – – – – – Coincidental Logical Temporal Procedural Communicational Sequential Functional Implications of Coupling & Cohesion for Software Product Family Architecture CoExist Low Architectural Issue Coupling Cohesion Packaging & delivery Physically packaged together Product may be at “coincidental” Cohesion level System, subsystem, middleware platform Using the same platforms Internationalization Same language across product family Terminology Commonalities in icons, terms, etc. and in their respective semantics Application’s UI Similar looks and navigational approach Product manuals Same in content and mode of presentation Product support & maintenance Release and fix physically packaged together and delivered together Same levels of support and same methodology of fix and release distribution Application flow & control Application is “stamp” or “control” coupled via data store Application is experiencing “procedural” or “communicational” cohesion Data stored, processed & shared Application is “ common” coupled via data store or global variable Intermediate Strong Functionalities Application is at “sequential” cohesion and has no duplicative features “Coupling” and “Cohesion” in Product Integration Co-Existence Integration Low-Level Integration Intermediate Integration Strong Integration low-coupling Increase in coupling high-coupling weak product family cohesion Increase in cohesion strong product family cohesion