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.Terminology 2.Packaging & delivery 3.User interface 4.Product manuals and user guides 5.Application functionalities 6.Application flow and control 7.Data stored, processed, and shared 8.Systems, subsystems, and middleware platforms 9.Internationalization 10.Customer support and maintenance
A Software Product Integration Architecture Co-Existence Integration Strong Integration Intermediate Integration Low-Level Integration Increasing levels of product integration
“Coupling” and “Cohesion” in Product Integration Co-Existence Integration Strong Integration Intermediate Integration Low-Level Integration Increase in coupling Increase in cohesion low-coupling weak product family cohesion strong product family cohesion high-coupling
A Software Product Integration Architecture Co-Existence Integration Strong Integration Intermediate Integration Low-Level Integration -Packaging & delivery -System, subsystem & middleware platform -internationalization
A Software Product Integration Architecture Co-Existence Integration Strong Integration Intermediate Integration Low-Level Integration -Packaging & delivery -System, subsystem & middleware platform -Internationalization -Terminology -Application UI -Product manuals -Product support& maintenance
A Software Product Integration Architecture Co-Existence Integration Strong Integration Intermediate Integration Low-Level Integration -Packaging & delivery -System, subsystem & middleware platform -Internationalization -Terminology -Application UI -Product manuals -Product support& maintenance - Data stored, processed & shared -Application flow & control
A Software Product Integration Architecture Co-Existence Integration Strong Integration Intermediate Integration Low-Level Integration -Packaging & delivery -System, subsystem & middleware platform -Internationalization -Terminology -Application UI -Product manuals -Product support& maintenance - Data stored, processed & shared -Application flow & control - Functionalities & features
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 Architectural IssueCouplingCohesion Packaging & delivery Physically packaged togetherProduct 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 Functionalities Application is at “sequential” cohesion and has no duplicative features Co- Exist Low Inter- mediate Strong
“Coupling” and “Cohesion” in Product Integration Co-Existence Integration Strong Integration Intermediate Integration Low-Level Integration Increase in coupling Increase in cohesion low-coupling weak product family cohesion strong product family cohesion high-coupling