Brolin’s Corporate offices
are located in
Brolin
established it’s offshore software development operations in Bulgaria in 1994
and has successfully completed projects for some of the best-known companies
worldwide including Bank of America, CB Richard Ellis, Fleet Bank, La Salle
Partners, Neutrogena, Sempra Energy, Siemens, Sun
Microsystems and Travelers Insurance. Brolin has earned a reputation for producing
quality software and providing excellent post development support. Brolin is a full-service software developer
with a diverse set of application development skills, as well as the financial,
accounting, and business practice savvy to convert challenging business logic
into extremely robust and cost effective solutions.
Brolin
located its development operations in
All
members of the Brolin Development Team are permanent employees of Brolin and
have received extensive training in Brolin’s development methodology, generic
components and development standards. To
foster teamwork and shared knowledge of software code, all Brolin Developers
work within the same Brolin facility. A
requirement for employment as a programmer with Brolin is to possess a strong
passion for software development. This
is evidenced by the 200+ hours of work that the average Brolin Developer puts
in each month.
Software is developed using
a process refined by years of experience at Brolin and proven highly effective. The process includes a set of documented
programming standards describing, engineering practices, naming conventions,
coding practices, code management procedures, testing and quality assurance
procedures.
The Brolin development
process also includes a technique referred to at Brolin as “cross
pollination”. This process assures that
Project Development Leaders and programmers are familiar with each other’s
projects; thus enabling Brolin to easily reassign staff between projects as
development demands change. Brolin’s
standardized development methodology, framework, components and class libraries
further enable this.
With a strong emphasis on
code reuse and “cross pollination”, the Brolin Development Process encourages
sharing of objects, functions and code across projects, further reducing costs,
shortening time to completion and improving the overall quality of the
code. Brolin’s Senior Programmers meet
weekly to discuss and identify the need for new generic components and generic
objects. These discussions also include the review of new technologies as well
as the discovery of new techniques that can be applied to existing
technology.
Projects are tracked and
managed using Brolin’s web based Task Manager.
Each new feature and or modification to The Company’s software goes
through the following development cycle:
• Requirements documentation
• Design Specifications
• Prioritization
• Tasks Assignment
• Engineering
• Programming
• Code checked in/out of SourceSafe Repository
• Programmer Testing and Debugging
• Design Implementation Review
• Version Control
• Build
• Automated Installation Setups
• Testing on Staging Server
• Quality Assurance Testing
• Implementation on Live Server
Programmers
at Brolin specialize in specific languages and technologies. Brolin employs specialists in low level
programming using Assembler, C, C++ and Visual C++ and the MFC library; higher
level application programming with Visual Basic, Java, and Java Scripting; Web
Design with HTML, XML and tools such as Dream-Weaver and FrontPage; Graphics
Design with tools like PhotoShop and Corel Draw; Database Schema Design and SQL
Expertise; Report Writing with tools like Crystal Reports, Access and XML.
The first step of an enhancement or feature development
project involves preparing to write an accurate and complete Statement of Work.
First it is ascertained which users are to be affected including any particular
idiosyncrasies the scope of work might have concentrated for specific customer
industries or job functions. A Brolin Consultant & Architect will layout
the different levels of experience that differentiates the various sets of
expected users: visitors, administrators, members, etc. They try to approximate
numbers of the various types of users expected for the new feature, how often
users are expected to use the software and the tasks they will accomplish with
the software. Brolin gets all parties involved very early in the concept
discussions to understand what they need the application to do. Everyone
involved discusses functions that the feature must perform, including graphical
interface, management reports, and usability. The cost for development is
approximated and all available software products that provide overlapping or competing
capabilities are explored.
The
developers conduct an analysis determining which technologies will be used. The
technical staff investigates which existing modules or features might be
relevant; then determines what development methodologies and generic components
will be used.
Once
an understanding of users' needs and legacy code is reached, software requirements
are written. They provide a guide for building the software indicating: What
users want to accomplish with the feature; features and functions, required
response time, usability, security levels; etc.; a detailed project plan and
schedule with responsibilities and commitments from everyone involved. Ongoing
communication continues among the developers; consultant/architect, customers and
CTO.
Planning
documents are developed and reviewed by the project manager including a
Software Requirements Document, Software Development Plan and Functional
Specification. The documents expand upon the initial requirements. They define
the planned features and functions of the software product, describe other
qualities that the software must have, define and prioritizes requirements,
capabilities and features that the engineering team must deliver in the final
result, defines the target market, business problem, and user issues, identify
existing solutions and competitive products comparing the feature under
development with existing products, identify long-term plans for future
releases and features, and identify maintenance and support issues.
Design
begins when the requirements have been defined. A detailed design document is developed
by the CTO and his staff. It becomes the developer's blueprint, with precise directions
to the software programmers. It provides
a detailed description of the architectural framework and how basic control and
data structures will be organized. The Detailed Design Document also defines tables
and diagrams that translate the functional specification into data structures,
data flows, and algorithms. This document is written before programming starts
and forms the basis for all future design and coding.
The
designer's goal is to develop a model that achieves the functional requirements
while operating within key constraints, such as performance goals, the architecture,
and hardware. The Company tries to maintain design that is simple, easily
understood, easily communicated, easily built and easily tested. The detailed
design document includes a description of the overall design concept and a
high-level description of the standards and conventions to be used.
The
Brolin application architecture is based on a unified framework designed for
expandability and modifiability, eliminating the "spaghetti code"
common to so many software projects that make them difficult to modify because
one change can affect so many other pieces of the code. The Company's code is
written in discrete modules with clear inputs and outputs, the function of each
module is clear, and it’s easy to project which of the other modules are
affected by changing a particular module. The Company’s modules are integrated
within a framework which provides universal functionality and maintains
consistency in the engineering, implementation and ultimately the user experience.
After
defining the problem and blueprinting the solution, software is built and
tested according to the plan. The CTO reviews the project for completeness and
accuracy during the software development process. Throughout the programming
phase, daily reviews are conducted between the
The
developers create a set of example scenarios and problems covering the
software's functionality. This is done
very early in development. When run frequently during the development process,
these examples and the developer's own test cases help to identify and isolate defects
when they are easier to find and less costly to correct. At the end of software
development, the developers provide technical documentation.
The
coding phase of a software development project should represent about 20% of
the total time and development cost. The majority of the development process is
dedicated to designing, engineering, testing and integrating. This results in well-structured code that reduces
test and integration time, and overall maintenance.
The
Company further reduces cost of maintenance and improves quality by using a
small number of application development tools; maintaining standardized programming
style guidelines and commenting practices to increase software code readability;
implementing standardized exception handling; limiting functions and algorithms
to discrete tasks, reducing the number of branches in the code; making
identifier names as meaningful as possible; using local variables and
identifiers for local purposes, avoiding global definitions unless absolutely
necessary; and keeping code as simple as possible.
The
development team tests to verify that the software meets the functionality,
performance, usability, features, and capabilities, specified in the design
document. The developers test for both functionality and usability before submitting
it for final acceptance testing.
When
the software is first able to run the developers begin Alpha Testing even when
the software doesn't have all the intended functionality. Alpha tests are
conducted in
The
Company's Documentation Manager begins creating user documentation early in the
software development process. A usable draft is available for beta testing
stage.
Beta
testing is conducted by either installing the beta version at the customer’s
site or on a server hosted by Brolin. The testing is conducted by the
Consultant/Architect and a limited number of beta customers. After integration
of the beta test feedback, the developer prepares the software install into the
latest install version. Development is ended and user documentation is
completed. Any patch releases are expediently tested, approved, and entered
into the system. Changes made to the software program after final acceptance
testing are document in writing what changes were made, and document the
testing done after making the changes: functional testing, to ensure that the fix
worked, and regression testing, to ensure that no unintended changes occurred
at other points in the application.
Final release versions are integrated within Automated
Installation programs that perform updating of system files, application
components, third party components, database
structural modifications including addition of new tables, data conversion,
site updates, update logging and version control. The setup distribution programs
are designed to be run by end users to install/update their PCs or server.