|
| Advantages
of Using Components |
| |
| The usage of software components
provides the following advantages :- |
| |
- The code is already developed and tested and as
such is proven . It is mature code . The risks have been taken
out of the development - it can be relied on !
- Project unknowns are removed - the components are
already working . Internal company cultures can be kept out of
the way of effecting the successful development of projects .
Success is guaranteed !
- The code does not need to be redeveloped - the
wheel does not need to be reinvented .
- The long term capital cost of the software is minimised
both in terms of ongoing development costs and in terms of code
maintainence ( updates etc. ) costs .
- The capital value of the software is maximised
due to the general nature of the software and hence it's broad
area of application .
- The use of components allows you to move your business
from one of a per customer contract basis to a fundamental technology
basis thus maximising your market penetration . It allows you
to embed extra quality within your products thus maximising your
competitiveness .
- Project development time is greatly reduced . The
components are already developed . They just need to be set up
and configured .
- Development time and costs can be closely managed
- unknowns are eliminated - the hard work has all been done .
- Connected work - eg. areas that require external
inputs and require output displays - can proceed much sooner thus
further reducing the development time of the project .
- The development cost is greatly reduced . The
competitiveness and return on investment of the company is maximised
.
- The use of components means that the project is
designed with a definite architecture . As such the interfaces
are clearly designed and the intercomponent relationships clearly
defined . Further the project is designed in a manner that is
easily expandable . This means that ongoing costs and development
times are greatly reduced . Also maintainence costs are greatly
minimised .
- A high level of knowledge and expertise is brought
directly into the project and the company . The component supplier
has experience over a large number of projects and clients and
brings this experience directly into the component construction
and supply .
- New knowledge , expertise and features are brought
in as they become available .
- Companies starting off often don't have the time
and resources to gain a large technological edge over their competitors
. The usage of components allows them to gain this advantage .
- The link with the developer can be maintained
thus ensuring that code maintenance and updates are easily handled
. If external contract staff are used for code development there
is no guarantee that they will be available subsequent to the
project completion to maintain and update the code . If a component
supplier is used maintenance and updates are supplied as part
of the support service .
- Quality is guaranteed . Further the specification
of the usage of specific component suppliers by the customer ensures
that the project is designed to the desired level of quality and
capability .
- Componentising a project means that all problems
are localised , identified and solved . Further it also means
that the project is easy to evolve , improve and upgrade . A change
in one component usually does not effect other parts of the program
.
- Extra features are easily added by just substituting
the existing components with new components .
- Components have to be general . As such they have
a far greater life time than project specific code .
- Component suppliers are usually highly motivated
. It’s this motivation that ensures that you get the best product
.
- Component suppliers are often prepared to expand
the features and capabilities of their products in order to account
for new market areas .
- The code is easily audited . Security is not an
issue .
- Support and maintenance costs are minimised -
there is only one piece of code to maintain .
- Support is supplied as part of the component license
purchase .
- Copyright issues are not effected . The components
can be used without effecting the saleability of the company's
products whilst maintaining the original copyright of the component
supplier .
|
| Factors to Consider |
| |
| Development Costs |
| |
| The current economic times
mean , even more than usual , that companies have to be as efficient
as possible . Prices are being driven down and R&D budgets tightened
. As such :- |
| |
- The lower a cost structure a company has the greater
is it's ability to be able to keep it's prices low and to compete
and survive . This is going to be a critical issue with component
suppliers . Generally the small size , low cost , small volume
companies are going to survive over the mid to large size , high
cost , small volume companies . Customers are only going to be
prepared to pay what they can afford not what the product may
be worth . As such price breaks are forming up between a ' spare
cash ' amount - money that can be easily and safely risked ( ie.
not requiring a large sales base ) - and a ' significant purchase
' amount - money that requires a large guaranteed sales base to
justify the expenditure .
- Clients of component suppliers have the very pressing
issue of not only keeping R&D budgets low but also ensuring
that the commercial risks are quantifyable and bracketable . As
such using components - where the cost of the components is known
and where the configuration costs are minimal and the project
development time is minimised - becomes even more attractive than
usual . The situation is very much becoming one of ' use components
and survive ' .
|
| Porting and Intergration
Costs |
| |
| When looking at component
suppliers it is very important to evaluate them as regards the cost
of porting their components onto your hardware . A well designed module
will have a simple , clean and well designed hardware and operating
system interfaces . The hardware and operating system will be accessed
through single points . None of the rest of the code will have parts
that have to be modified for individual platforms . This is very important
as it can greatly impact on the porting time and costs . A good component
supplier will also supply a broad range of device drivers . The will
be easy and quickly adaptable to your hardware . Typically porting
a well designed module - with the device drivers , fonts etc. being
supplied - should take 2 days at most . It should be easily accomplishable
and should be accomplishable by any decent engineer - in house or
contracted . |
| |
| A well designed module will
have a simple , clean and well designed Application Program Interface
. This is very important as also greatly impacts on the integration
time . |
| |
| One of the factors that should
be considered is :- |
| |
| Is the module a separate ,
specialised , module that is only available from a single or small
number of suppliers ? or is it readily available from multiple product
suppliers ? If it is available from multiple product suppliers then
the range of products supplied by those suppliers becomes critical
as the fact that they can be obtained from a single supplier means
that the integration costs of the components from the supplier with
the components from the supplier are eliminated . |
| |
| For example - if you are looking
at operating systems , IP stacks and web browsers etc. it makes much
more sense , integration costs wise , to buy from a single supplier
. |
| |
| One of the considerations
with operating systems , and consequentially operating system suppliers
, is the type of operating system supplied as this can impact strongly
on the initial costs . Operating systems can be simple Co-operative
Operating Systems which are low cost and very effective or they can
be much larger and much more expensive Real Time Operating Systems
. Very often when going for a Co-operative Operating System or an
in house operating system the path then leads to sourcing separate
protocol stack components . This is easily done but the added integration
costs have to be factored in . When choosing items such as web browsers
and email packages what should be a simple task of porting and integration
can often be made very costly due to bad design of the browser and
email packages . This is further aggravated by the need to purchase
, separately , font libraries and rendering engines . This is why
it is very important to consider suppliers who can provide not only
the operating system along with device drivers , font libraries and
rendering engines but also the web browser and email packages . |
| |
| Ongoing Costs |
| |
| Ongoing costs - code maintenence
- updates and bug fixes - these greatly effect the capital cost and
capital value of the components . As such it is very important to
pick suppliers who actually produce quality code - not suppliers who
say that they produce quality code but rely on expensive post sale
fix up's which will not only delay your project release but will also
have added costs that have to be factored into the purchase price
. |
| |
| A second factor that has to
be considered - associated with the capital value of the components
and hence modules - is how easy they are to upgrade and expand . This
is dependent on the structural design of the modules . Basically if
your component supplier is providing components that can be easily
, cheaply and quickly upgraded and expanded this means that their
subsequent development costs are minimised . This means that your
ongoing costs - as you upgrade and as you produce new products - is
minimised . This can be a very critical factor and can cause massive
problems down the line . |
| |
| Middleware Suppliers |
| |
| Middleware Suppliers often
don't supply operating systems . As such their products have to be
designed such that they can be easily ported onto existing operating
systems and hardware . Porting time is dependent on :- |
| |
- the complexity of the interfaces .
- the number of the operating system functions .
- the number and complexity of the platform specific
functions
|
| Typically porting should take
no more than a few days - definitely not weeks . |
| |
| A well designed middleware
product should have the following basic features :- |
| |
- simple interfaces .
- simple platform specific - eg. device driver -
requirements .
- extensively instrumented :-
- at entry points .
- at operating system call points .
- at operating system call return points .
- at strategic points .
- at entry points .
- extensive bullet proofing - should be able to handle
all forms of data etc. ( whether valid or invalid ) without locking
up , causing corruption or going into space .
- well documented - concise and easy to understand
.
|
| Knowing What You Are Getting |
| |
| There are two quite different
approaches to the market undertaken by companies :- |
| |
| The first are very ' up front
' about their products and their prices . They provide full information
on their products . They allow their products to be readily , freely
and fully evaluated . You can see exactly what you are getting . These
companies can be trusted and relied on . They design their products
for the customer . They are good companies to deal with . |
| |
| The second may provide the
semblance of being up front but , in fact , work very hard to prevent
full information being released on their products . They manipulate
their customers into buying what the customer believes is a good quality
product but is in fact a very expensive and very poor quality product
. Often a lot of the problems and limitations of the product are buried
below the surface . It's only when the product has been purchased
that these become noticeable . They rely very much on emotion to sell
their products . They design their customers for their products not
their products for their customers . These companies should be avoided
. |
| |
| Avoid the ' Black is White
' company - the type of company that tries to make itself out as something
it isn't and tries to change other people's perceptions of other companies
away from what they actually are . |
| |
| Look for companies where the
staff really know what they are doing and can easily provide for new
situations . |
| |
| The Component Supplier is
very much a Solution Provider in that the Component Supplier is providing
a set of components to solve a design problem . This can often be
:- |
| |
- a lack of available development time within the
company .
- not wanting to re-invent the wheel .
- wanting to bring in expertise that is not present
in the company .
- wanting to save development costs .
|
| As such it is very important
that the components easily integrate and provide a complete solution
to your requirements . |
| |
| Choosing the best suppliers
is very much a case of having good judgement . This is , of course
, very much reliant on good knowledge of self and of life . |