class diagram اعمله الmarket ازاي السؤال العملي هيجي؟ هتقولك مثال عندك امتحان الميدترم مهم موجود في اخر ورقة Software Reuse systems designed by composing existing components that have been used in other systems Benefits of sw reuse Increased dependability Lower development costs Reduced process risk Problems with SW reuse Creating, maintaining, and using a component library Increased maintenance costs Lack of tool support Approaches that support SW reuse مثال4 احفظ Application frameworks Application system integration Architectural patterns Aspect-oriented software development Component-based sw eng Configurable application systems Design patterns ERP systems Legacy system wrapping Model-driven engineering Reuse planning factors The development schedule for the SW. The expected SW lifetime. The background, skills and experience of the development team. The criticality of the SW & its non-functional requirements. The app domain. The execution platform for the SW. Application frameworks an integrated set of software artifacts (such as classes, objects and components) that collaborate to provide a reusable architecture. Web Apps Framework (WAF) Features Security Dynamic web pages DB support Session management User interaction Extending frameworks they provide a skeleton architecture for the system Inversion of control in frameworks: Framework classes • System infrastructure frameworks • Middleware integration frameworks • Enterprise application frameworks Software product lines set of apps with a common architecture & shared components & generic functionality, with each app specialized to reflect different requirements. Adaptation may involve Component and system configuration Adding new components Modifying components to meet new requirements. Base systems for a software product line: اعرف الرسمه Product line architectures Vehicle dispatching زي ما اتفقنا متحفظش التعريفات A specialized resource management system where the aim is to allocate resources to handle incidents Product line specialization - Platform specialization -Functional specialization specialization Product instance development: مهم -Environment specialization - Process specialization Product line configuration 1-Design time configuration () 2 -Deployment-time configuration: Levels of deployment time configuration : Component selection Workflow Parameter definition Application system reuse a SW system that can be adapted for different customers without changing the source code of the system. Benefits More rapid deployment of a reliable system. Possible to see what functionality is provided by the apps. risks are avoided by using existing SW. Problems Choosing the right COTS system for an enterprise can be a difficult process Lack of local expertise The COTS product vendor controls system support and evolution. Configurable app system -Single product that provides the functionality required by a customer - Development focus is on system configuration -system vendor is responsible for maintenance Application system integration -Several heterogeneous system products are integrated to provide customized function - is on system integration -system owner ERP systems An Enterprise Resource Planning (ERP) system is a generic system that supports common business processes The architecture of an ERP system Component-based software engineering(CBSE) An approach to SW development that relies on the reuse entities called(SW components) -it stand-alone يعني تحطها في أي حته تشتغل CBSE Essentials Independent components مش هتأثر علي حاجه Component standards تشتغل علي أي برنامج وفي أي حته Middleware A development process Design principles for CBSE بص مش شرط تحفظ كل ده اعرف اتنين مثال وحطهم في السؤال لو جالك Components are independent Component implementations are hidden Communication is through well-defined interfaces Component infrastructures offer a range of standard services Component definitions 1.Councill and hanuman :: يعني لمنظمه معينه او بني ادم معين A software component is a software element that conforms to a component model and can be independently deployed and composed without modification according to a composition standard. 2.Szyperski: عموميه A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third-parties. Component characteristics Composable Deployable Documented Independent Standardized ###Component interfaces مهمه A model of a data collector component Component models A component model is a definition of standards for component implementation, documentation and deployment. ex(EJB model (Enterprise Java Beans)) Specifies how interfaces should defined ### Basic elements of a component model مهم (To use services provided by a model , components are deployed In a container Container is a set of interfaces used to access the service implementations) ### Middleware services defined in a component model مهمه CBSE processes are SW processes that support component-based SWE Development for reuse (Developing components or services that will be reused in other apps) Development with reuse (Developing new app using existing components and serices) ######### CBSE processes مهم######### ### CBSE with reuse The component identification process Component identification issues -Trust -Requirements -Validation Component composition The process of assembling components to create a system ,involves integration components with each other Types of compositions 1.Sequential composition 2.Herarchicah 3.additive Components with incompatible interfaces An adaptor linking a data collector and a sensor Photo library compositon Data collection and report generation components Distributed systems: Virtually all large computer-based systems are now distributed systems Distributed system characteristics -Resource sharing -Concurrency -Openness -Scalability -Fault tolerance Distributed systems issues -more complex than systems that run on a single processor -Complexity because different parts of the system are managed as is network. -There is no single authority in charge of the system so top-down control is impossible. Types of attack –Interception –Interruption– Modification –Fabrication quality of service (QoS) ability to deliver its services dependably and with a response time and throughput that is acceptable to its users. Important design issues that to be considered in distributed systems? –Transparency –Openness –Scalability –Security –Quality of service (QoS) –Failure management Two types of interaction between components in a distributed system: —Procedural interaction —Message-based interaction ### Procedural interaction between a diner and a waiter ### middleware in a distributed system Middleware support —Interaction support compare –provision of common services Layers in a client/server system –Presentation –Application processing layer –Data handling –Database 5 Architectural patterns/styles of a distributed system: 1. 2. 3. 4. 5. Master-slave architecture Two-tier client-server architecture Multi-tier client-server architecture Distributed component architecture Peer-to-peer architecture Two-tier client server architectures: –Thin-client model –Fat-client model Use of client–server architectural patterns: ● Two-tier client–server architecture with thin clients - Legacy system applications - Computationally intensive applications - Data-intensive applications (browsing and querying) ● Two-tier client-server architecture with fat clients - Applications where application processing - Applications where computationally intensive processing - Mobile applications where internet connectivity ● Multi-tier client–server architecture - Large-scale applications with hundreds or thousands - Applications where both the data and the application are volatile. - Applications where data from multiple sources are integrated. Disadvantages/challenges of distributed component architecture: more complex to design than client–server systems. Standardized middleware for distributed component system has never been accepted by community. Peer-to-peer (p2p) architectures: decentralized systems overall system is designed to take advantage Most p2p systems have been personal systems Peer-to-peer systems: File sharing systems based on the BitTorrent protocol Messaging systems such - Jabber Payments systems – Bitcoin Databases – Freenet is a decentralized database Phone systems – Viber Computation systems - SETI@home P2p architectural models The logical network architecture - Decentralized architectures - Semi-centralized architectures Application architecture Software as a service (SaaS): hosting the software remotely and providing access to Internet. Three Key elements of SaaS: -Software is deployed on a server (accessed through a web browser) -The software is owned and managed by a software provider -Users may pay for the software Implementation factors for SaaS: Configurability Multi-tenancy Scalability Service configuration Branding Business rules and workflows Database extensions Access c @@@@ mid term @@@