23
MSIA715.03 1 The Business Case for Components-Based Development (CBD) Time to Market for the entire product is less, because components can be developed simultaneously. • Quality • Reliability Cost: reduced development effort lowers cost Maintenance: re-use results in fewer defects Flexibility: adding new functionality may be easier; components can be re-assembled in different ways.

MSIA715.031 The Business Case for Components-Based Development (CBD) Time to Market for the entire product is less, because components can be developed

  • View
    214

  • Download
    1

Embed Size (px)

Citation preview

MSIA715.03 1

The Business Case for Components-Based Development (CBD)

• Time to Market for the entire product is less, because components can be developed simultaneously.

• Quality

• Reliability

• Cost: reduced development effort lowers cost

• Maintenance: re-use results in fewer defects

• Flexibility: adding new functionality may be easier; components can be re-assembled in different ways.

MSIA715.03 2

What is a Component?

• “A self-contained recognizable thing that does something useful and well understood. It does it largely by itself, but can be combined with other components using known interfaces to build something complex.”

• No firm definition- components should be defined by their characteristics.

MSIA715.03 3

What do we design first - the system or the components?

• Chicken or the Egg Tautology?

• Is this the right question to ask?

• Customer requirements = endstate; system designed to achieve the endstate, and the components are designed to contribute to the system.

• Therefore, the system comes first, but before designing the system, what does the customer require? Style, or price/performance, or both?

MSIA715.03 4

Component Newspeak

• Bits:– Material: raw materials– Parts:

• items usually bought-in that are assembled into components, subcomponents, assemblies, or systems. They have limited function and low added value. They may be considered as very simple, low-level components.

– Subcomponents: • parts that have significant function and added value.

– Components: • self-contained, recognizable entities that perform a well-understood

function and can be assembled via known interfaces.

– Assemblies: parts and components fitted together.

MSIA715.03 5

Component Newspeak - Structures

• Logical components: conceptual decompositions of a design.

• Patterns: recurring structures in the use of components.

• Framework: partial product assembly that is scalable and extendable.

• Design: detailed description of a system showing how it should be assembled from parts, assemblies, and total components.

• Product Line: series of designs showing how a family of related products are to be build from common components.

• Architecture: high-level conceptual representation

• Domain: well-understood area of common interest

• Environment: set of conditions in which a system or component is designed to operate.

• Technology: particular method or material used to manufacture parts and components which determines the detail of how they are assembled.

MSIA715.03 6

Component Newspeak- Usage

• Local reuse– reuse of components within a product, product line, or by a small

team in several products.

• Domain reuse– systematic reuse of well-understood common components across a

specific area of interest, often in specific environments.

• Global reuse– Widespread reuse across domains, organizations, environments,

and geography. All the knowledge needed to use the component has to be made explicit.

MSIA715.03 7

Views of Components

• Software components, defined:– “The big difference between software and the other domains we

have discussed is the richness of the function provided.”

– “. . .a component is a self-contained, clearly identifiable, physically realizable, pre-defined entity that provides a well-understood function and is intended to be assembled, using a well-defined architecture and interfaces, with other components to provide more complex functions.”

– “A component is not so much a specific thing, but more a label that can be applied to types of things that meet certain criteria about how they can be used.

MSIA715.03 8

Component Attributes

• Self-contained– The component must deliver its function in its entirety without the

need to access other components or parts.

• Clearly Identifiable– The component’s functions should be clearly identifiable and well

understood within the domain or which it is intended.

• Encapsulated– The component’s function should be completely independent from

its implementation, both in terms of design and technology.

MSIA715.03 9

Component Attributes

• Physically Realizable:– The component must be capable of being used “in its own right”

and being assembled with other components. Thus, a component must be one of the following:

• physically in existence and be available for assembly into a larger entity (e.g., a software module or class library in a repository).

• Automatically generated, on demand, from a preexisting design.

• Pre-instantiated, within an operating system or network and can be accessed at run-time.

• Instantiated on-demand, and accessed within an OS or network.

• Embedded function within larger system, accessed via pre-defined interface without knowingly interacting with embedded system.

• Logical representation of a physical component; activates it.

MSIA715.03 10

Component Attributes

• Pre-defined:– prior to use and fit within the architectural and functional

definitions of the domain.

• Assembly:– can be assembled into a larger structure of components either

creating a single larger entity or a network of comm components.

• Replaceable:– by an alternative component with an equivalent specification

• Architecture:– the component is defined to be assembled within a known

architecture or structure.

MSIA715.03 11

Component Attributes

• Interface:– Component designed to make use of a specific interface.

• Status: component has an owner and defined status.

• Reusable one of the following ways– Compositional reuse: unmodified reuse (black box - BB)

– Configuration: unmodified reuse, software-defined function (BB)

– Generative reuse: reuse of generation process rather than particular components (white box - WB)

– Adaptive reuse: reuse by modifying existing components (WB)

– Integrated: existing components modified and integrated using newly-developed interfaces (WB).

MSIA715.03 12

Generic Types of Software Components

• Black Box Components:– Specified entirely by function and interface, and used exactly in

the form in which it is provided.

• White Box Components:– Provided with all the source codes so that all details of its structure

and implementation are visible to the end user.

• Glass Box Components:– A White Box component which is used unmodified.

• Grey Box Components:– A White Box component with only minor modifications.

MSIA715.03 13

Examples of Specific Types of Software Components

• Procedures, subroutines, objects and class libraries– Structured decomposition techniques programmed into software

– Good programmers structure code into functional blocks that are easily understood and frequently reused.

• Objects and class libraries– Objects are not necessarily components.

– Typical objects provide very low-level functions that are not clearly recognizable

– Strong commercial market in class libraries (particular GUI libraries), good for software reuse but fall short of becoming components.

MSIA715.03 14

Examples of Specific Types of Software Components, continued

• Operating Systems:– Among the most widely reused elements in software

– Author characterizes them as “frameworks” as opposed to components, because they “come to life” and “extend” when applications run on top of them.

• Databases and Spreadsheets– Software components that are intended to be configured and

extended by the users.

– They are made to do something useful by the user configuring or programming them to work in a specific way that meets their requirements.

MSIA715.03 15

Examples of Specific Types of Software Components, continued

• Plugable Components– Self-contained, but never intended to be assembled with other

components. Instead, they are plugged into existing operating system or component frameworks.

– Akin to plug-ins for internet browsers, which can add significant extra functions to the basic browser.

MSIA715.03 16

Logical and Physical Components

• Logical:– Defined: the conceptual compositions of a design or architecture

into components that may or may not exist as physical components

– To implement, one must map the logical view of the world onto a physical realization, using a data model to map the physical systems that manipulate data entries to the logical components in which the data resides.

• Physical:– Evolve components into common function, and group by

functional blocks.

– Convert logical to physical, and concentrate on the physical view of the world.

MSIA715.03 17

A Layered Model of Components

• Components in a typical business enterprise hierarchy, from top to bottom:– Enterprise components (processes and business rules)

– Business components (business objects and frameworks)

– Systems components (legacy systems and applications)

– Mid-tier components (3-tier servers, legacy wrappers)

– Software components (objects and subroutines)

– Component technology (DCOM, CORBA, . . .).

MSIA715.03 18

A Layered Model of Components

• Component Object Model (COM)/Distributed COM (DCOM)– Main characteristic: its interfaces; there are basic interfaces, but

beyond that, the user can have any number of interfaces.

– “Inherited interfaces” create new interfaces by allowing new interfaces to be subclassed.

• Component Technologies:– MS COM, CORBA, and Enterprise Java Beans (EJB) are

component technologies.

MSIA715.03 19

A Layered Model of Components

• Common Object Request Broker Architecture (CORBA)– Unlike COM, which is vendor-specific

– Allows interoperability between component from any vendor, on any type of machine, or across a network.

– Not so much a component as it is middleware.

• Enterprise JAVA Beans: “write once, run anywhere.”– Launched to support the server components of Java Beans

– Operate in a “container” or thread environment

– CORBA and EJB are merging.

• Software Components:– Includes subroutines, function libraries, and Visual Basic.

MSIA715.03 20

A Layered Model of Components

• Mid-tier Components:– Three - tier model (top down): presentation layer, mid-tier, and

data storage.

– The third (mid) tier has to overcome initial problems:• Structure could start to resemble another data storage monolith

• Performance issues related to UNIX

• Migration to PCs at the presentation level

• Most enterprises had significant business value locked up in their mainframes, which were difficult to migrate and separate.

MSIA715.03 21

A Layered Model of Components

• System-Level Components:– Legacy components = embedded components

– Function is embedded in the legacy system and accessed through the interface via the client stub.

– The stub, the interface, and the legacy function are collectively the component.

– Further approach: three-tier client/server architecture

MSIA715.03 22

A Layered Model of Components

• Business-level components– Deployable component that represents a well-understood business

function.

– Typically generic, representing common entities as “customer” or “domain specific.”

– Enterprise Resource Planning (ERP) applications migrating to a component architecture.

• Enterprise components– High-level business models, process definitions, or architectures,

unique and not reused, typically.

MSIA715.03 23

A Layered Model of Components

• Commercial Off-The-Shelf (COTS)– Cost-effective; standards bodies such as the Object Management

Group (OMG) want to define a common set of objects to build common business applications.

– Risks involved with COTS:• Commercial viability of suppliers

• Implications of different standards bodies

• Feature interaction

• Quality, reliability, certification

• Tailorability, configurability

• Maintenance, enforced upgrades, obsolescence

• Whole life cycle costs and design methods