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.

 
  © Intelitec Pacific  Pty Ltd 2002