| 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 . |
|
 |