|
Intelitec Software
Engineering
Developing reliable
and usable software that is delivered on time and within budget is a
difficult endeavour. Products that are late, over budget, or that don't
work as expected also cause problems for the organisation's bottom line.
As software projects continue to increase in size and importance, these
problems become magnified. Choosing the right software engineering team is
crucial. An experienced design and development team overcomes these
problems through a focused and sustained effort at building a process
infrastructure of effective software engineering and management
practices. Intelitec Pacific software engineering staff have refined
our process over many years and to cater for the specific demands of many
diverse industry sectors and technologies. Intelitec exploits
proven, effective software engineering practices when refining its own
software processes.
Our software process contains a coherent,
integrated set of well-defined software engineering and management
processes including; readiness criteria, inputs, standards and procedures
for performing the work, verification mechanisms (such as peer reviews),
outputs, and completion criteria. Because the software process is well
defined, the client has good insight into technical progress on all
projects.
What are the key elements of Intelitec Pacific's software
engineering process?
Requirements Management Intelitec
Requirements Management establishes a common understanding between the
customer and the software project of the customer's requirements that will
be addressed by the software project. This agreement with the customer is
the basis for planning and managing the software project. An effective
change control process is engaged to manage requirements evolution (see
sidebar).
Software Project Planning Software Project
Planning involves developing estimates for the work to be performed,
establishing the necessary commitments, and defining the plan to perform
the work. The software planning begins with a statement of the work to be
performed and other constraints and goals that define and bound the
software project (those established by the practices of the Requirements
Management key process area).
The software planning process
includes steps to estimate the size of the software work products and the
resources needed, produce a schedule, identify and assess software risks,
and negotiate commitments. Iterating through these steps may be necessary
to establish the plan for the software project (i.e., the software
development plan). This plan provides the basis for performing and
managing the software project's activities and addresses the commitments
to the software project's customer according to the resources,
constraints, and capabilities of the software
project.
Software Project Tracking The purpose of
Software Project Tracking is to provide adequate visibility into actual
progress so that management can take effective actions when the software
project's performance deviates significantly from the software plans.
Software Project Tracking involves tracking and reviewing the software
accomplishments and results against documented estimates, commitments, and
plans, and adjusting these plans based on the actual accomplishments and
results.
A documented plan for the software project (i.e., the
software development plan, as described in the Software Project Planning
key process area) is used as the basis for tracking the software
activities, communicating status, and revising plans. Software activities
are monitored by the management. Progress is primarily determined by
comparing the actual software size, effort, cost, and schedule to the plan
when selected software work products are completed and at selected
milestones. When it is determined that the software project's plans are
not being met, corrective actions are taken. These actions may include
revising the software development plan to reflect the actual
accomplishments and re-planning the remaining work or taking actions to
improve the performance.
Software Quality Assurance
(SQA) Intelitec Software Quality Assurance provides Intelitec and
client-side management with appropriate visibility into the process being
used by the software project and of the products being built.
Software Quality Assurance involves reviewing and auditing the
software products and activities to verify that they comply with the
applicable procedures and standards and providing the software project and
other appropriate managers with the results of these reviews and audits.
The software quality assurance group works with the software
project during its early stages to establish plans, standards, and
procedures that will add value to the software project and satisfy the
constraints of the project and the organization's policies. By
participating in establishing the plans, standards, and procedures, the
software quality assurance group helps ensure they fit the project's needs
and verifies that they will be usable for performing reviews and audits
throughout the software life cycle.
The software quality assurance
group reviews project activities and audits software work products
throughout the life cycle and provides management with visibility as to
whether the software project is adhering to its established plans,
standards, and procedures. Compliance issues are first addressed within
the software project and resolved there if possible. For issues not
resolvable within the software project, the software quality assurance
group escalates the issue to an appropriate level of management for
resolution.
Software Quality Assurance is an integral part of our
software engineering and management processes.
Software
Configuration Management (SCM) The purpose of Software
Configuration Management is to establish and maintain the integrity of the
products of the software project throughout the project's software life
cycle. Software Configuration Management involves identifying the
configuration of the software (i.e., selected software work products and
their descriptions) at given points in time, systematically controlling
changes to the configuration, and maintaining the integrity and
traceability of the configuration throughout the software life cycle.
The work products placed under software configuration management
include the software products that are delivered to the customer (e.g.,
the software requirements document and the code) and the items that are
identified with or required to create these software products (e.g., the
compiler). A software baseline library is established containing the
software baselines as they are developed. Changes to baselines and the
release of software products built from the software baseline library are
systematically controlled via the change control and configuration
auditing functions of software configuration management.
Technology Change Management Technology Change
Management identifies beneficial new technologies (i.e., tools, methods,
and processes) and transfer them into the organization in an orderly
manner, as is described in Process Change Management, below. The focus of
Technology Change Management is on performing innovation efficiently in an
ever-changing world.
Technology Change Management involves
identifying, selecting, and evaluating new technologies, and incorporating
effective technologies into the organization. The objective is to improve
software quality, increase productivity, and decrease the cycle time for
product development.
By maintaining an awareness of
software-related technology innovations and systematically evaluating and
experimenting with them, the we select appropriate technologies to improve
the quality of software and the productivity software engineering
activities. Pilot efforts are performed to assess new and unproven
technologies before they are incorporated into normal practice. With
appropriate sponsorship of principal architects, the selected technologies
are incorporated into our standard software process and current projects,
as appropriate.
Process Change Management A key feature
of our software process is that of software process improvement.
Throughout our cycle we engage a number of activities that improve the our
overall software process capability.
Process Change Management
continually improves the software processes used in by our team with the
intent of improving software quality, increasing productivity, and
decreasing the cycle time for product development. Process Change
Management takes the incremental improvements of defect prevention and the
innovative improvements of technology change management and makes them
available to the entire team.
Peer Review The
professional development of the team and the effectiveness and value
of our intellectual assets also benefit from our common forward feedback
philosophy.
Peer Review is an important activity in our
software process. The primary purpose is to remove defects from
software work products early and efficiently. An important corollary
effect is to develop a better understanding of the software work products
and of defects that might be prevented. Moreover, as the majority of
our development work is object oriented, each project actively builds upon
object libraries, the performance and stability of these libraries often
depends on knowledge transfer activities such as peer review.
Peer
Reviews involve a methodical examination of software work products by the
producers' peers to identify defects and areas where changes are needed.
The specific products that will undergo a peer review are identified in
the project's defined software process and scheduled as part of the
software project planning activities.
Continuing Professional
Development (CPD) Our professional development program develops the
skills and knowledge of individuals so they can perform their roles
effectively and efficiently. Training is an organizational responsibility,
but the software projects identify their needed skills and provide the
necessary training when the project's needs are unique.
|
Case
Study Web Site
Management |
|
Client: Online Gallery Requirement: Windows based web site
management
The
Intelitec Pacific software team have introduced a unique product
that radically simplifies the arduous task of updating web content.
More than a traditional web based site content management system,
the split Windows/Web system allows the web-master to quickly
drag-and-drop content from their everyday desktop applications to
their web site.
Administrators are able to quickly list, filter and sort all content
elements. Site statistics are presented for analysis. An
offline authoring and review workflow scheme facilitates production
team environments. An intelligent briefcase modeled
synchronization mechanism means communication with the host is quick
and painless. |
|
Case
Study Home User |
|
Client: Online Imaging ISV Requirement: Windows based web site
management
Our client has
created a globally successful online solution for camera store
owners wishing to take advantage of new opportunities presented by
cost effective broadband and digital camera technology.
After having worked with Intelitec engineers on lab automation
products in 2002, our client enlisted the Intelitec software team
again when a new idea materialised. Aimed at the home user,
this application is constructed with a visually appealing, simple
and robust user interface.
Designed to run from a single executable file, this application will
be stable in any 32 bit Windows platform. The application
forms part of the clients overall offering and communicates with
servers using XML based messaging. |
|
Case
Study Web
Applications |
|
Client: Consulting Firm Requirement: Online Research
Exchange
This wholly web based document management system
helps our client control vast quantities of research material,
publish research for public comment, control versioning and
facilitate research team interaction. Developed in ASP.NET,
the system leverages indexing services to underpin the required
meta-data strategies.
A unique Web-Clipboard concept was invented to help researchers
carry out common document management tasks in the browser
environment. The system boasts robust tiered security, a
serial document versioning system, user and web client tracking and
reporting system, email based notification and messaging system and
is compatible with common desktop productivity suite documents
including Word, Excel, PowerPoint, Visio, and Adobe Acrobat. |
|
Case
Study Systems
Integration |
|
Client: Online Imaging ISV Requirement: Windows
application
Intelitec software engineering services have
successfully delivered .NET based windows software to service a
unique system integration requirement. Working from exacting
client specifications, the software is designed to integrate digital
lab equipment to the client's unique online
offering.
Developed with VB.NET, the design exploited many of
the new object oriented features. Engineers were able to
successfully build a sound object model based on clear requirements
of the business logic, whilst optimizing for unique load constraints
of the environment.
Our team found .NET and the CLR to be a
clean and robust environment to build traditional windows
applications. The new language features are an essential
component promoting reuse, correct design and code clarity.
VB.NET is now opening up opportunities for object oriented design
and reuse strategies like 'design patterns' to the greater VB
community. |
|
Case
Study Scheduling Health
Professionals |
|
Client: Health
Technology ISV Requirement:
Distributed Scheduling
Health professionals can now benefit
from a new scheduling and referral system built with the latest
enterprise architecture. Building a system that must fit into
an organisations existing investment in database and server
technology presented some unique challenges for the design of this
entirely new enterprise application.
The Sun J2EE
architecture delivered on the promise of multi-vendor support in
terms of hardware, database and middleware
services.
Developed on JBoss, the application can be
redeployed on virtually any J2EE compliant middleware product.
The recently released JBoss - Version 3.0 now supports CMP 2.0 and
clustering. J2EE compliance means code portability to over 30
applications servers supporting the J2EE standard including Oracle
9iAS and
Weblogic. |
|
Case Study Hardware
Integration |
|
Client:
Electronics Hardware Manufacturer Requirement: Satellite Clock
Synchronization
A disconnected and geographically remote rollout
of time sensitive logging equipment meant a unique solution would be
required. A Windows based network would need to be
synchronized to an atomic clock whilst being disconnected from the
Internet.
The Global Positioning Satellite system
served as the most reliable source of time sync information for this
implementation. Subsequent implementations saw the time
sync source originating from a variety of proprietary
equipment.
A modular software solution was designed
and constructed that can draw time sync information from formats
including; ATC Format 1, Infotec, DEC, NMEA and
Telegram. Constructed with Delphi, the solution is powering
many sites throughout South East
Asia. |
|
Case
Study School Sports |
|
Client: k-12 Schools Requirement: Cost effective sports
scoreboard
Full size sports scoreboards are beyond the reach
of many regional schools. A software solution to run on any
cheap 486 computer would fit the bill perfectly. Optimized to
run at full screen in bright LED like characters, the software is
fully customizable for a number of sports.
The application
was designed with requirements evolution in mind. A hardware
remote control and statistics modules will form part of the newer
releases.
|
|
Case
Study Fleet Management |
|
Client: Regional Cab Company
Requirement: Automated Dispatch Software
In 1993 (yes, in
the days of 16 bit Windows 3.11), during the implementation of a new
radio data system, designers found an opportunity to leverage
Intelitec custom software and hardware integration services. Built
with object oriented environment - Borland Delphi, a new Windows
application was developed to facilitate the automated dispatch,
logging and emergency mechanisms required by a modern cab operation.
Radio system integration was made possible through the development
of a unique serial data interpretation library purpose built for the
application. Although not in use today, this unique blend of
software and hardware integration served the operation for over
eight years. During its service, the system experienced no failures.
|
|
|
Software
Engineering Shorts Internet - not just the
Web |
|
Intelitec have built a number of unique solutions for inter-site
communication and collaboration using the internet as a vital
communication mechanism underpinning and facilitating the inherent
workflow requirement. Taking a passing glance at these projects, you
wouldn’t say they are internet applications.
Looking for all the world like an integral part of any Windows
desktop productivity suite, these applications take the end-user
workflow where the browser can’t go.
The browser based application requires the user to initiate the
workflow, it cannot initiate the workflow on its own, interrupt the
user or communicate in a mesh topology, often essential to complex
collaboration requirements. The browser based application falls
short in a number of commonly sought after workflow scenarios.
What is the alternative? Take Windows Messenger®, a windows
application leveraging the internet to bring real-time
collaboration, file and application sharing into a workflow that may
be initiated by a remote user. A windows application that leverages
the communication infrastructure of the internet can leave the
browser based navigation dependent paradigm wanting in these cases.
When it comes to real time, team based asynchronous collaboration,
distributed file sharing, project and production management all with
seamless desktop and office productivity suite integration,
Intelitec have the tools and libraries to deliver.
The possibilities are endless. Our engineers have used this
technique to effect the implementation of systems for logistics
management and tracking, production and content management, health
scheduling and several distributed reporting applications. |
|
Software
Engineering Shorts
Object Libraries |
|
Experience, bottled
“If I had a dollar for every time we’ve solved that problem!”. It’s
not rocket science, it’s computer science - 101, create reusable
objects that can be applied to a number of solutions.
Intelitec engineers have built a collection of object libraries that
are the cornerstone of every delivered solution. The object
libraries enable our designers to implement the kind of functional
and visual elements you find in the highest quality software
available today.
By reusing the successful outcomes of several years focused
development we are able to get on with job of solving the problem at
hand - without being distracted by unnecessary technical detail.
Components we re-use have been field tested and are currently
deployed in a wide variety of industry sectors including health and
military environments. This kind of re-use ensures new software
development projects produce the most robust product.
Because many visual elements in the Windows environment are common
across applications, we have perfected the user experience. In
contrast to web based applications, our Windows based application
end users want to drag-and-drop between applications, produce
complex customizable reports, they want to do it on one screen, and
they don’t want to wait for it to load.
Our library of objects include components for visual layout and
workflow, navigation, communications, printing and reporting,
application integration, internetworking, deployment, multimedia and
image processing, voice and video compression, finance and health
specific modules and low level interfacing.
It’s like building a house with highest quality pre-fabricated
materials that may be molded and customized to create something
entirely unique every time. |
|
Software
Engineering Shorts Gathering
Requirements |
|
Software requirements analysis can be broken down into four
main activities, outcomes of which are detailed in a Software
Requirements Document or Software Requirements Specification
(SRS).

Feasibility Study: An estimate is made of whether
the identified user needs may be satisfied using current software
and hardware technologies. The study will decide if the proposed
system will be cost effective from a business point of view and if
it can be developed given existing budgetary constraints. The
feasibility study is relatively cheap and quick resulting in a go /
no-go for a more detailed analysis.
Requirements Analysis:
This is the process of deriving the system requirements through
observation of existing systems, discussions with potential users,
task analysis and so on. This may involve the development of one or
more system models.
Requirements Definition: Requirements
Definition is the activity of translating the information gathered
during the analysis activity into a statement that defines a set of
requirements. The statement is written so that it can be understood
by the end-user and the system customer.
Requirements
Specification: A detailed, more precise description of the system
requirements yielding the workflow aspects of the functionality. The
creation of this content is usually carried out in parallel with
some high-level design. The design and requirements activities
influence each other as they develop. During the creation of this
content, errors in requirements definition are inevitably
discovered. It must be modified to correct these
problems. |
|
Software
Engineering Shorts Requirements
Validation |
|
The requirements
engineering process and SRS document resulting, may be iterated
several times before satisfying all parties that the need has been
captured accurately. This is referred to as requirements
validation.
Iteration is important at this stage in the life
cycle. If the validation is inadequate, errors in the requirements
will be propagated to the system design and implementation.
Expensive system modifications may be required at a later stage to
correct problems with the requirements. The cost of making a system
change resulting from a requirements problem is much greater than
repairing design or coding errors. A requirements change implies
that the design and implementation must also be changed. The system
testing and validation must be repeated. The cost of changing a
system after delivery because of a requirements change can therefore
be up to 100 times more than the cost of repairing a programming
error.
Prototyping is an important requirements validation
technique. It is useful because it gives users hands-on experience
with the system.
To validate the requirements of the
prototype system, several aspects must be checked.
Validity:
A user may think that a system is needed to perform certain
functions. However, further thought and analysis may identify
additional or different functions that are required. Systems have
diverse users with different needs and any set of requirements is
inevitably a compromise across the user
community.
Consistency: Any one requirement should not
conflict with any other
Completeness: The definition should
include all functions and constraints intended by the system
user.
Realism: There is no point in specifying requirements
that are unrealisable. It may be acceptable to anticipate some
hardware developments but developments in software technology are
less predictable.
Demonstrating that a set of requirements
meets a user’s needs is difficult if an abstract approach is
adopted. By reading a definition and specification, users must
picture the system in operation.
In a formal requirements
review, the development team walks the client through the system
requirements explaining the implications of each requirement. The
review team should check each requirement for consistency and check
the requirements as a whole for
completeness. |
|
Software
Engineering Shorts Requirements
Evolution |
|
Any production
system requirements engineering phase should justify requirement
changes from a prototype system at least in terms of
either;
Mutable Requirements: Requirements that change
because of changes to the environment in which the system operates.
Non-functional requirements are particularly affected by changes in
hardware technology. Functional, by business
environment.
Emergent Requirements: Requirements that emerge
as the customer’s understanding of the system develops during the
system development. The prototyping process may reveal new emergent
requirements.
Consequential Requirements: Requirements that
result from the introduction of the system.
Compatibility
Requirements: Requirements that depend on particular systems or
business
processes. | |