Académique Documents
Professionnel Documents
Culture Documents
11 January 2011
11 January 2011
A method for managing your business or enterprise: A decision making tool A change management tool The knowledgebase of your business or enterprise
How do you manage the increasing complexity of your enterprise? How do you manage the increasing rate of change? How do you meet the demands of your constituency (or customers) quicker and more efficiently?
Thousands of years of history would suggest the only known strategy for addressing complexity and change is architecture.
If it gets so complex you cant remember how it works, you have to write it down
Architecture
If you want to change how it works, you start with what you have written down
Software Concepts
System Description Tightly-coupled operating system for multi-processors and homogeneous multicomputers Loosely-coupled operating system for heterogeneous multicomputers (LAN and WAN) Additional layer atop of NOS implementing general-purpose services Main Goal Hide and manage hardware resources Offer local services to remote clients Provide distribution transparency DOS
NOS
Middleware
Distributed Systems
11
Strong transparency.
Distributed Systems
12
Distributed Systems 13
remote file and device access global addressing and naming trading and naming services synchronization and deadlock avoidance resource allocation and protection global resource sharing deadlock avoidance communication security no examples in general use but many research systems: Amoeba, Chorus etc. see Google distributed systems research
Distributed Systems
14
Loosely-coupled operating system for heterogeneous multi-computers (LAN and WAN). Weak transparency.
Distributed Systems
15
Distributed Systems
16
Middleware System
Additional layer on the top of NOS implementing generalpurpose services. Better transparency.
Distributed Systems
17
Examples: Sun RPC, CORBA, DCOM, Java RMI (distributed object technology)
Built on top of transport layer in the ISO/OSI 7 layer reference model: application (protocol), presentation (semantic), session (dialogue), transport (e.g. TCP or UDP), network (IP, ATM etc), data link (frames, checksum), physical (bits and bytes) Most are implemented over the internet protocols Masks heterogeneity of underlying networks, hardware, operating system and programming languages so provides a uniform programming model with standard services 3 types of middleware:
Distributed Systems
19
Distributed Systems
20
11 January 2011
21
A software system provides a solution to a problem in the real world. Consists of two essential components:
Model: abstraction of a part of the real world Algorithm: captures the computations involved in manipulating or processing the model.
22
Programming languages
Programming models
Computation-oriented model (50s ~ 60s) Data-oriented model (70 ~ 80s) Object-oriented model (90s ~ )
Balanced view between data and computation
23
Data-oriented model
Object-oriented model
Real world
Software system
Real world
Software system
24
Key characteristics
Consists of a number of success iterations Each iteration produces a working program Build system incrementally Monolithic approach of waterfall model
Benefits
Examples
Approach
Focuses on improving the maintainability and reusability of software systems through a set of techniques, notations, tools, and criteria.
Activities
Conceptualization
Object-oriented analysis and modeling Object-oriented design
Implementation
Maintenance
26
Conceptualization
To establish the vision and core requirements of the software system to be developed. build models of the systems desired behavior, using notations such as the Unified Modeling Language (UML). capture the essential relevant aspects of the real world and to define the services to be provided and/or the problems to be solved. simplify reality to better understand the system to be developed.
27
Object-oriented design
Represented in terms of objects and classes and the relationships among them.
To implement the design by using an objectoriented programming language (e.g., Java) To manage post delivery evolution effectively.
Implementation:
Maintenance:
28
29
11 January 2011
30
Component-based software engineering (CBSE) is an approach to software development that relies on software reuse. Failure of object-oriented development to support effective reuse. Single object classes are too detailed and specific.
Components are more abstract than object classes and can be considered to be standalone service providers.
Apart from the benefits of reuse, CBSE is based on sound software engineering design principles:
Components are independent so do not interfere with each other; Component implementations are hidden; Communication is through well-defined interfaces; Component platforms are shared and reduce development costs.
Component trustworthiness - how can a component with no available source code be trusted?
Component certification - who will certify the quality of components? Emergent property prediction - how can the emergent properties of component compositions be predicted? Requirements trade-offs - how do we do trade-off analysis between the features of one component and another?
Components provide a service without regard to where the component is executing or its programming language
A component is an independent executable entity that can be made up of one or more executable objects; The component interface is published and all interactions are through the published interface;
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.
The component is an independent, executable entity. It does not have to be compiled before it is used with other components.
The services offered by a component are made available through an interface and all component interactions take place through that interface.
Provides interface
Defines the services that are provided by the component to other components. Defines the services that specifies what services must be made available for the component to execute as specified.
Requires interface
Requires int erface Defines the services from the component s environment that it uses Component
Provides int erface Defines the services that are provided by the component to other components
Provides int erface addSensor removeSensor star tSensor stopSensor testSensor initialise repor t listAll
Components are deployable entities. Components do not define types. Component implementations are opaque. Components are language-independent. Components are standardised.
A component model is a definition of standards for component implementation, documentation and deployment. Examples of component models
EJB model (Enterprise Java Beans) COM+ model (.NET model) Corba Component Model
The component model specifies how interfaces should be defined and the elements that should be included in an interface definition.
Customisation Naming convention Composition Interface definition Specific inter faces Meta-data access Documentation Packag ing Evolution suppor t
Interfaces
Component models are the basis for middleware that provides support for executing components. Component model implementations provide:
Platform services that allow components written according to the model to communicate; Horizontal services that are application-independent services used by different components.
To use services provided by a model, components are deployed in a container. This is a set of interfaces used to access the service implementations.
Horizontal services Component management Concurrency Transaction management Persistence Resource management Security
Platform services Addressing Inter face definition Exception management Component communications
Components developed for a specific application usually have to be generalised to make them reusable. A component is most likely to be reusable if it associated with a stable domain abstraction (business object). For example, in a hospital stable domain abstractions are associated with the fundamental purpose - nurses, patients, treatments, etc.
The development cost of reusable components may be higher than the cost of specific equivalents. This extra reusability enhancement cost should be an organization rather than a project cost. Generic components may be less space-efficient and may have longer execution times than their specific equivalents.
When reusing components, it is essential to make trade-offs between ideal requirements and the services actually provided by available components. This involves:
Developing outline requirements; Searching for components then modifying requirements according to available functionality. Searching again to find if there are better components that meet the revised requirements.
1. 2. 3. 4.
What is enterprise architecture? Explain DOS, NOS & Middleware. What are the three types of middleware? What are the two essential components of a software system? 5. What are the four types of programming models?
11 January 2011
51
1. 2. 3. 4.
Why enterprise architecture needed in organisations? Describe object-oriented development. Describe Component based development. Draw the flow chart of the CBSE process and briefly describe each step.
11 January 2011
52