Development Solutions

Note: You can click on the links above to view a full description of each development solution.

Software Development/Custom Application Development

We are a reliable provider of software development services. We offer professional software solutions to solve complex, mission-critical business problems. We supply our clients with cutting-edge and cost effective solutions which meet all their business needs. We have outstanding experience in custom application development, as well as various custom software components and web programming. Our primary goal is to meet all of our clients' needs and requirements professionally and effectively.

We also believe that our high quality software development services provide a solid basis for a successful customer relationship. We employ continuous integration testing within the project, for which we believe is the most important parts of the development process and we strive to exclude any errors before the product is deployed.

Software engineering in general is a relatively young discipline, and is still developing. The methods for which we derive our discipline include:

  • Aspects

    Aspects help programmers deal with utilities by providing tools to add or remove boilerplate code from many areas in the source code. Aspects describe how all objects or functions should behave in particular circumstances. For example, aspects can add debugging, logging, or locking control into all objects of particular types. Researchers are currently working to understand how to use aspects to design general-purpose code. Related concepts include generative programming and templates.

  • Agile

    Agile software development guides software development projects that evolve rapidly with changing expectations and competitive markets. Proponents of agile software development believe that heavy, document-driven processes (like TickIT, CMM and ISO 9000) are fading in importance. Some people believe that companies and agencies export many of the jobs that can be guided by heavy-weight processes. Related concepts include extreme programming and lean software development.

  • Experimental

    Experimental software engineering is a branch of software engineering interested in devising experiments on software, in collecting data from these experiments, and in devising laws and theories from this data. Proponents of experimental software engineering advocate that the nature of software is such that we can advance the knowledge on software through experiments only.

  • Software Product Lines

    Software Product Lines is a systematic way of producing families of software systems, instead of creating a succession of completely individual products. The Software Product Lines approach is an attempt to industrialize the software development process.

Software Prototyping

The process of prototyping involves the following steps:

  • Identify basic requirements

    Determine basic requirements including the input and output information desired. Details, such as security, can typically be deferred.

  • Develop Initial Prototype

    The initial prototype is developed that includes only user interfaces.

  • Review

    The customers, including end-users, examine the prototype and provide feedback on additions or changes.

  • Revise and Enhancing the Prototype

    Using the feedback both the specifications and the prototype can be improved. Negotiation about what is within the scope of the contract/product may be necessary.

Software Porting

  • Analysis of existing code and/or architecture (scope definition)
  • Evaluation of available tool options (e.g. conversion libraries, emulators)
  • Design work for UI/functional changes
  • Implementation work for UI/functional changes
  • Build the software for the target platform
  • Debug on the target platform
  • Perform final test and Quality Assurance (QA) functions on the target platform
  • Integration of source patches back into the main build tree for archiving and revision control
  • Upgrade of documentation relative to the new platform

System Tradeoff Analysis

Genetibase, Inc. employs the SEI's Architecture Tradeoff Analysis Method® (ATAM®). This is the leading method in the area of software architecture evaluation. An evaluation using the ATAM method typically results in:

  • Clarified quality attribute requirements
  • Improved architecture documentation
  • Documented basis for architectural decisions
  • Identified risks early in the life-cycle
  • Increased communication among stakeholders

Business drivers and the software architecture are elicited from project decision-makers. These are refined into scenarios and the architectural decisions made in support of each one. Analysis of scenarios and decisions results in identification of risks, non-risks, sensitivity points, and tradeoff points in the architecture. Risks are synthesized into a set of risk themes, showing how each one threatens a business driver.

The most important results are improved architectures. The output of an ATAM is an out-brief presentation and/or a written report that includes the major findings of the evaluation. These are typically:

  • The architectural styles identified
  • A "utility tree" - a hierarchic model of the driving architectural requirements
  • The set of scenarios generated and the subset that were mapped onto the architecture
  • A set of quality-attribute specific questions that were applied to the architecture and the responses to these questions
  • A set of identified risks
  • A set of identified non-risks

Feasibility Studies

Genetibase, Inc. feasibility studies are a preliminary study undertaken before the real work of a project starts to ascertain the likelihood of any project's success. It is an analysis of possible solutions to a problem and a recommendation on the best solution to use. It involves evaluating how the solution will fit into your corporation. It, for example, can decide whether an order processing be carried out by a new system more efficiently than the previous one.

Main analysis reasoning is:

  • The current system may no longer suit its purpose.
  • Technological advancement may have rendered the current system obsolete.
  • The business is expanding, not allowing it to cope with extra work load.
  • Customers are complaining about the speed and quality of work the business provides.
  • You are not winning a big enough market share due to an ineffective integration of a computerized system.


Within a feasibility study, we review four main areas, including those of Economic, Technical, Schedule and Organizational.

  • Economic Feasibility

    This involves questions such as whether you can afford to build the system, whether its benefits should substantially exceed its costs, and whether the project has higher priority than other projects that might use the same resources.

  • Technical Feasibility

    This involves questions such as whether the technology needed for the system exists, how difficult it will be to build, and whether the firm has enough experience using that technology.

  • Schedule Feasibility

    This involves questions such as how much time is available to build the new system, when it can be built (i.e. during holidays), interference with normal business operation, etc.

  • Organizational Feasibility

    This involves questions such as whether the system has enough support to be implemented successfully, whether it brings an excessive amount of change, and whether the organization is changing too rapidly to absorb it.

Testing and Evaluation

Our testing and evaluation services follow a predefined rigid process, typically incorporating: Test Documentation. (IEEE) Documentation describing plans for, or results of, the testing of a system or component, Types include test case specification, test incident report, test log, test plan, test procedure, test report.

As well our Software Testing documentation, or Test Deliverables, usually consists of the following documents:

  • Master Test Plan

    Sometimes it is possible to write separate documents for test planning: Unit test plan, Integration test plan, System test plan and Acceptance test plan

We first define the Definition of the Test Plan. This is a high-level document that defines the software testing project, so that it can be properly measured and controlled. It defines the test strategy and organized elements of the test life cycle, including resource requirements, project schedule, and test requirements. Testing criteria is typically defined as follows:

  • Test case design

    Definition of Test Case. A set of test inputs, executions, and expected results developed for a particular objective.

  • Test procedures

    Definition of Test Procedure. A document, providing detailed instructions for the [manual] execution of one or more test cases. Often called - a manual test script.

  • Test logs

    Definition of Test Log. A chronological record of all relevant details about the execution of a test.[IEEE]

  • Test data

    Definition of Test data. The actual (set of) values used in the test or that are necessary to execute the test.

  • Other criteria
    • Test summary report
    • Automated test scripts
    • Incident reports
    • Incident log

A sample of a Master Software Test Plan document contents:

  • Introduction
  • Purpose
  • Background
  • Scope
  • Project Identification
  • Software Structure
  • Software Risk Issues
  • Test Requirements
  • Features Not to Test
  • Metrics
  • Test Strategy
  • Test Cycles
  • Planning Risks and Contingencies
  • Testing Types
  • Functional Testing
  • User Interface Testing
  • Configuration Testing
  • Installation Testing
  • Volume Testing
  • Performance Testing
  • Tools
  • Resources
  • Staffing
  • Training Needs
  • Project Milestones
  • Deliverables
  • Test Assets
  • Exit criteria
  • Test Logs and Defect Reporting
  • References

Systems Prototyping and Performance Evaluation

The prototyping model is a software development process that begins with requirements collection, followed by prototyping and user evaluation. Often the end users may not be able to provide a complete set of application objectives, detailed input, processing, or output requirements in the initial stage. After the user evaluation, another prototype will be built based on feedback from users, and again the cycle returns to customer evaluation. The cycle starts by listening to the user, followed by building or revising a mock-up, and letting the user test the mock-up, then back.

Prototypes are mock-ups of the screens of an application which allow users to visualize the application that is not yet constructed. Prototypes help users get an idea of what the system will look like, and make it easier for users to make design decisions without waiting for the system to be built. When they were first introduced the initial results were considered amazing. Major improvements in communication between users and developers were often seen with the introduction of prototypes. Early views of the screens led to fewer changes later and hence reduced overall costs considerably.

Preliminary and Detailed Design Specifications

During the detailed-design phase, our development team will extend the architecture defined in preliminary design down to the unit level. Using successive refinement techniques, we will produce specifications for the programming. All formalisms for the project will be produced, including the following:

  • Functional or object-oriented design
  • Descriptions of all user input, system output (for example, screen, printer, and plotter), and input/output files
  • Operational procedures
  • Functional and procedural descriptions of each unit
  • Descriptions of all internal interfaces between pages and functions


Our team documents these design specifications in the detailed-design document, which forms the basis for implementation. At the design review that concludes this phase, we will determine whether levels of detail and completeness are sufficient for coding to begin.

Validation and Verification

The increasing demand for complex software coupled with stiff competition for experienced software engineers has put many companies in the uncomfortable position of having to trade off Quality against Time to Market.

By defining and providing your organization with proven Software Verification & Validation techniques, Genetibase, Inc. can help you improve Quality and meet aggressive Time to Market goals.

Areas and techniques addressed:

  • Practice Peer Review
  • Peer Review Process
  • Root Cause Analysis
  • Testing Measures
  • Test Planning
  • Post-Mortems
  • Action Plan
  • Triage
  • Economic Justification for Software V&V
  • Overview of Software Development Lifecycle Models
  • Overview of Software Verification Techniques
  • Overview of Software Validation Techniques
  • Testing Levels, Methods, and Types
  • Concurrent Development Model
  • Common Testing Problems

System Design and Specifications

Our design specifications typically involve analysis for:

  • Classification

    The kind of component/application, such as a subsystem, module, class, package, function, files, etc....

  • Definition

    The specific purpose and semantic meaning of the component/application. This may need to refer back to the requirements specification.

  • Responsibilities

    The primary responsibilities and/or behavior of this component/application. What does this component/application accomplish? What roles does it play? What kinds of services does it provide to its clients? For some components/applications, this may need to refer back to the requirements specification.

  • Constraints

    Any relevant assumptions, limitations, or constraints for this component/application. This should include constraints on timing, storage, or component/application state, and might include rules for interacting with this component/application (encompassing preconditions, postconditions, invariants, other constraints on input or output values and local or global values, data formats and data access, synchronization, exceptions, etc.)

  • Composition

    A description of the use and meaning of the subcomponents that are a part of this component/application.

  • Uses/Interactions

    A description of these components/applications collaborations with other components/applications. What other components/applications is this entity used by? What other components/applications do the entities use (this would include any side-effects this entity might have on other parts of the system)? This concerns the method of interaction as well as the interaction itself. Object-oriented designs will include a description of any known or anticipated subclasses, superclasses, and metaclasses.

  • Resources

    A description of any and all resources that are managed, affected, or needed by this entity. Resources are entities external to the design such as memory, processors, printers, databases, or a software library. This should include a discussion of any possible race conditions and/or deadlock situations, and how they might be resolved.

  • Processing

    A description of precisely how these components/applications go about performing the duties necessary to fulfill their responsibilities. This should encompass a description of any algorithms used; changes of state; relevant time or space complexity; concurrency; methods of creation, initialization, and cleanup; and handling of exceptional conditions.

  • Interface/Exports

    The set of services (resources, data, types, constants, subroutines, and exceptions) that are provided by this component/application. The precise definition or declaration of each such element should be present, along with comments or annotations describing the meanings of values, parameters, etc.... For each service element described, include (or provide a reference) in its discussion a description of its important software component attributes (Classification, Definition, Responsibilities, Constraints, Composition, Uses, Resources, Processing, and Interface).

Application/Solution Platform Extending

This process is much like Software Porting, except the goal is to recreate the given Application/Solution on a new platform while maintaining the existing Application/Solution platform. Typically the process consists of:

  • Analysis of existing code and/or architecture (scope definition)
  • Evaluation of available tool options (e.g. conversion libraries, emulators)
  • Design work for UI/functional changes
  • Implementation work for UI/functional changes
  • Build the software for the target platform
  • Debug on the target platform
  • Perform final test and Quality Assurance (QA) functions on the target platform
  • Integration of source patches back into the main build tree for archiving and revision control
  • Upgrade of documentation relative to the new platform
  • Rigorous comparison between existing Application/Solution Platform and new Application/Solution Platform
  • Modifications within existing Application/Solution Platform to simulate the extension platform using new Application/Solution Platform system as the process model

Software Localization and Translation Services

The most basic reason for a software company to localize its software products is to increase revenue and net income. The logic is very simple: Higher total revenue compensates larger costs on research and development, and product marketing costs. Larger budgets allow creating better products and better chances of dominating the market's niche.

Typical software localization follows these steps:

  • Extracting the user interface elements

    We analyze the program source to locate all translatable elements and prepare them for translation. A typical application includes many types of text elements - strings, menus, command, and dialog boxes - but also bitmaps, icons, and even sound or video clips. During the analysis, we also verify that there is no "hard coding" left, that all the interface elements have been separated from the code, and that any concatenation is clearly marked.

  • Rebuilding the original interface

    During the analysis, we rebuild the entire user interface to verify that all the elements are available. We also verify that the installation module and all other on-line elements have been considered (demo versions, on-line samples and tutorials).

  • Building pseudo-translated application

    Software localization usually takes place during the last stage of the development, when the original product is undergoing final revisions. To verify that all internationalization guidelines have been followed, we can quickly produce a pseudo-translated version of the user interface. This version is tested by the QA division to locate potential problems and address them before they affect the localization process.

  • Preparing the translation kit

    Each element of the user interface is prepared according to the tools that will be used by the translators. Translation memories are applied to the text elements to leverage existing translations and increase the consistency between different products from the same family.

  • Translating the user interface

    Our software translators use industry-standard terminology and client specific glossaries to achieve a high level of acceptance within the target market. During the translation process, they work with the engineering team to ensure that the locale conventions are followed.

  • Resizing the dialogs and other UI elements

    After translation, a localization engineer resizes the dialog boxes and verifies that all elements of the new user interface display correctly.

  • Building and testing the localized application

    When all the resources have been resized, the application is compiled and a team of language testers verify that the translated interface is accurate and displays correctly on the localized version of the operating environment.

  • Delivering the localized application

    When the localized interface has been tested and all the last minute changes incorporated, the localized resources are delivered to the client. Our entire team stays "on call" and fully available to ensure a smooth product release.

Database Design

Genetibase, Inc follows a predefined rigid process for Database Design, typically consisting of the following in order:

  • Determine the purpose of your system
  • Determine the tables that you need in your system
  • Determine the fields that you need in the tables
  • Identify fields with unique values
  • Determine the relationships between tables
  • Refine the design
  • Add data (populate tables) and create other system objects

Some of the listed steps (determining tables, data fields and relationships) may cross and be repeated a few times when designing a relational database.

Building a database is a process of examining the data that is necessary and useful for an application, then breaking it down into a relatively simple row and column format.

Software Language/Translation Services

  • English
  • French
  • Swedish
  • Spanish
  • Portuguese
  • German
  • Romanian
  • Russian
  • Norwegian
  • Danish
  • Punjabi
  • Sindhi
  • Siraiki
  • Pashtu
  • Urdu
  • Hindi
  • Japanese
  • Chinese

Development Environments Actively Running:

  • Visual Studio 2003 CLR 1.0, CLR 1.1
  • Visual Studio 2005 CLR 2.0
  • Visual Studio 2005 Team System
  • Monodevelop
  • SharpDevelop
  • Eclipse
  • Jbuilder 2006 Enterprise Architect
  • IntelliJ IDEA
  • Netbeans
  • Sun Java Studio Creator
  • Sun Java Studio

Servers

  • Windows 2000
  • Windows 2000 Advanced
  • Windows Server 2003 x86
  • Windows Server 2003 x64
  • RedHat Enterprise
  • Suse Enterprise
  • Solaris 9 Sparc
  • Solaris 10 Sparc
  • Solaris 9 x86
  • Solaris 10 x86
  • IRIX
  • OSX
  • VMWare Virtual Server
  • VMWare ESX Server
  • VMWare GSX Server

OS Clients

  • Windows 2000 Pro
  • Windows XP Home
  • Windows XP Pro x86
  • Windows XP Pro x64
  • Windows Vista (Beta) x86
  • Windows Vista (Beta) x64
  • OSX
  • Solaris
  • IRIX
  • Linux (Various varieties)

DB Servers

  • SQL Server 2000 x86
  • SQL Server 2000 x64
  • SQL Server 2005 x86
  • SQL Server 2005 x64
  • Oracle 9i
  • Oracle 10g
  • Oracle 10g Express
  • MySQL
  • PostGreSQL
  • DB2
  • Derby
  • Informix
  • Sybase
  • Ingres

Application Servers

  • BEA WebLogic 6.1
  • BEA WebLogic 7
  • BEA WebLogic 8.1
  • IBM WebSphere 4
  • Sun Application Server Platform Edition
  • IBM WebSphere 5
  • JBoss 3.2
  • BizTalk

Programming Languages

  • C
  • C++
  • .Net (C++, C#, VB.Net)
  • ASP (VB)
  • ASP.Net (C#, VB.Net)
  • Java
  • Python
  • Perl
  • TCL
  • PHP
  • COBOL
  • JCL
  • Pacbase
  • Fortran
  • PL/1
  • PL/B
  • PL/I
  • Assembler
  • Objective C
  • SQL (All DB Specific Variants)
  • Ada
  • Eiffel
  • Forth
  • LISP
Visit Creative Force Software website

The Genetiblog

Latest entries

RSS feeds

Replacement content