410 likes | 427 Views
Explore the concept of software components, their role in composition, benefits of reusability, and the trade-offs between custom-made and standard software in system development and maintenance.
E N D
Module 4. Component Software4.2 Introduction Notas del Dr. Hector Durán
Introduction • The term “component” is overloaded • The term’s been used in the literature to mean different things • Run-time entities • Design-time entities • Source code • Executable code
Introduction (2) • But one thing is for sure • Components are for composition [Szyperski] • Composition enables prefabricated “things” to be reused
Introduction (3) • To become a reusable asset • It isn’t enough to start with a monolithic design and then partition it into fragments • The fragments have to be generalised to allow for reuse in different contexts • Overgeneralisation has to be avoided to keep fragments lightweight
Introduction (4) • Software components are • Executable units of independent production, acquisition, and deployment that can be composed into a functioning system [Szyperski]
Introduction (5) • Component software is a • Composite system composed of software components
Introduction (6) • Components could be formed by abstractions such as: • procedures, classes, modules, or even entire app • As long as • They are in executable form • Remain composable • Procedure libraries are the oldest example of software components
Introduction (7) • Software development can be divided in • Custom-made • Developed from scratch • Standard software • Everything is outsourced • Standard software is bought and parameterised
Introduction (8) • Custom-made • Advantage • Optimally adapted to the user’s needs • Disadvantages • Production from scratch is very expensive • Takes a lot of time to develop • Maintenance is difficult
Introduction (9) • Standard software • Advantages • Financial risk is reduced • Time-to-market risk is reduced • The burden of maintenance, product evolution, and interoperability is left to the vendor
Introduction (10) • Standard software • Disadvantages • May require a reorganisation of the business process • It isn’t easy to adapt quickly to changing needs • Competitive edge is difficult to achieve as competitors are using the same software standard
Introduction (11) • Component software represents the middle path Cost efficiency Flexibility Competitive edge % bought % Custom-made 0 100
Introduction (12) • Component software • Puts an end to the massive upgrade cycles • Migrating old databases • Retraining staff • Buying more powerful software • Evolution replaces revolution
Introduction (13) • In custom-made approach, growth can at most be linear • Whereas the growth of component market can be exponential
Introduction (14) • Example of components for a certain market segment • Solaris is factored into a set of modules that can be combined according to needs • Windows CE can be custom-assembled
Introduction (15) • SW component has lasted to take off • Initially considered to be analogous to hardware components • The term software IC became fashionable • The Lego block model was conceived for object technology • But this did not happen
Introduction (16) • SW component has lasted to take off • Software is different from products in all other engineering disciplines • It’s important to distinguish between software and its instances • Confusion between objects and classes
Introduction (17) • SW component has lasted to take off • The plan of a building and the building itself can be modelled as objects • Plans VS instances • Plans can be parameterised, applied recursively, scaled, and instantiated any number of times • None of this is possible with instances • Comparing component software with other disciplines is dangerous
Introduction (18) The object-oriented paradigm has failed!!!
Introduction (19) • Object technology does not include the notion of • Independence • Late composition • A market for object classes has failed
Introduction (20) • Component success stories • Microsoft’s Visual Basic • EJB • COM • Older success stories are modern operating systems
Introduction (21) • Components are a higher-level of abstraction • Components directly mean something to the deploying client • The client gains some explicable, high-level feature
Introduction (22) • Components can be implemented in any • language • programming paradigm • Object technology is probably one of the best ways to realise components
Terms and concepts • Overloading of the term “object” and “component” • Module, class, runtime instance, etc • The terms “component” and “object” often used interchangeably
Components • Main characteristics • Is a unit of independent deployment • Is a unit of third-party composition • Has no (externally) observable state
Components (2) • Independent deployment • Needs to be well separated from its environment • A component will never be deployed partially
Components (3) • third-party composition • Needs to encapsulate its environment • Interacts with well-defined interfaces • Specification of what it provides and requires
Components (4) • Stateless • Cannot be distinguished from copies of its own • Makes little sense to have multiple copies • Essential to avoid massive maintenance problems
Components (5) • Instance VS concept • A database server together with the database is an instance • This instance is not a component • The static database server program is a component
Objects • Main characteristics • Is a unit of instantiation, it has a unique identity • May have state and this can be externally observable • Encapsulates its state and behaviour
Components and Objects • A component is likely to act through objects • However, no need to be implemented with objects • Different implementation paradigms • Procedural • Functional • Assembly language
Components and Objects (2) • A component may contain multiple classes • Interface inheritance essential technique for establishing correctness • Debate about the usefulness of implementation inheritance
Whitebox VS Blackbox • Blackbox does not provide implementation details • May still enforce encapsulation • Whitebox implementation details are fully available • Whitebox allows for manipulation of the implementation • Glassboxes allows for inspection of the implementation
Software Component “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.”
Software Component (2) • Technical aspects • Independence • Contractual interfaces • Composition • Market related aspects • Third parties • composition
Component Weight • Two options for component weight • Build self-sufficient components • Reduces context dependencies • But also reduces reuse • Minimal functionality components • Increases context dependencies • Increases reuse • Maximising reuse minimises use • As high context dependencies shortens potential use
Component Weight (2) • Maximising reuse -> explosion of context dependencies • Maximising reuse minimises use fatter < context dependencies Less fat > Context dependencies 0 % reuse 100
Horizontal VS vertical markets • A horizontal market cuts through all or many different market domains • E.g. WWW standards • A vertical market sector is specific to a particular domain • E.g standards for medical radiology
Horizontal VS vertical markets • Standardisation in horizontal markets • Is difficult • List of wish list is too big • Standardisation in vertical markets • Is also difficult • Domain has to be wide enough for a viable market • With a smaller number of players, the mechanisms of market economies work less well