|
Mann Creek Information Technologies, LLC
|
|
|
|
Signature Loan J2EE Intranet
:
Signature loans
are low interest, company-backed loans to employees, with loan limits
set depending on an employee's length-of-service. The intent
of this application was to enable corporate employees to view their
existing signature loan balances on-line,
and to allow
qualified employees to calculate and electronically submit new loan
requests to loan administrators. Administrators then reviewed
and either approved or rejected the applications based on their
merits, and so notified the employee electronically. High-level
application use cases and their interactions are shown at the left.
At the right is what's called a VOPO diagram for the
application, a
view
of
participating "
objects ". Represented there are three development
layers: presentation, business logic and data storage. The
separation of the design into these components facilitates
application re-use and isolates the impact of user interface changes
-- the component most changed in technical applications. I
developed and unit / integration / stress / throughput tested this
application in an IBM VisualAge Java environment, and ported it into
an existing Microsoft IIS / IBM Websphere / Oracle database
production environment. This application served as a template
for many other, subsequent Human Resources intranet applications.
Point of Sale J2EE Enterprise Application:
The problem was to develop point-of sale (POS) applications that displayed standard terminal sales
information along with "intelligent" advertisements based on corporate marketing sales
campaigns and knowledge of specific customers. I developed data transfer protocols, data ER diagrams and managed a part of the group technical development. High level functional/operational requirements
included:
The high-level use case model is shown at right.
Internet / Extranet:
The
Company realized that the Internet represented a fundamental change
in how information flows between the Company, its
employees, its vendors and its customers. The Company had no
formal methodology for implementing or overseeing corporate Web
project approval, development, maintenance or security. I was
installed as the Web Development and Maintenance Manager with the
following responsibilities: (1) develop and communicate a common
Internet/extranet/intranet infrastructure across business units, (2)
monitor and manage the growth of Web applications across business
units, (3) analyze project needs, determining budgets and resources
needed to meet objectives, (4) collaborate with business units to
prioritize, approve and fund Web-related development and maintenance,
and (5) provide Web-related career development, employee performance
management, hiring and termination. In the capacity of
responsibilities 1 through 4 and in consultation with business units, I
developed a high level corporate Internet/extranet business model --
shown above left along with indications of the phased implementation
plan. In conjunction with various in-house Information
Technology groups, I architected and developed matching runtime
development, test and production infrastructures (part of a well planned
staged,
multi-platform development environment). The test
runtime topology is shown at left. To assist in monitoring and
maintaining the corporate Web enterprise architecture (to meet
established business requirements), I purchased various off-the-shelf
software components, some of which are shown in blue in the Capacity
Planning figure above- right. The generalized IT categories
into which these products fall are indicated there in red.
The ultimate purpose of this displayed capacity planning methodology was
to create an IT Enterprise Architecture that meets business and
customer requirements (including an advanced Customer Care facility, a sample interaction diagram for which is shown at right). See my
glossary for
definitions of terms used in these figures. In this
Internet/extranet environment, Company Web solution providers
(technical, content and design) primarily (but not exclusively) used
some combination of HTML, DHTML, JAVASCRIPT, ASP, JSP, CFM, Flash,
XML, SOAP, JAVA, PERL, and SQL -based tools to build solutions.
I touch on some of the resource management aspects of this
Internet/extranet development environment on my
Agile
Project Management page, where you can also find a diagram of the
general organizational and technical structure.
Simple Simulation
:
I architected and
developed Simple Simulator (SIM²) in the mid-1990's to take my
static, Monte Carlo business spreadsheet simulations into the
dynamic, discrete event environment. (Some of the shortcomings
of static spreadsheet simulations are touched on in
A
Business Cash Flow Model.) The application object model is
shown at the left. At the right is a listing of the application
pseudo-code. SIM² was Microsoft Windows-based, had both
batch and interactive "drag-and-drop" interfaces, was coded
in Digitalk Smalltalk and Microsoft C++, and employed many of the
technical capabilities present in today's commercially available
simulation packages:
Analysis Features:
Object oriented "Process" programming approach with optional CRN variance reduction techniques.
PMMLCG random number generator with optional multiple streams and random number repeatability.
Exponential, Gamma, Uniform, Normal and Sample Space input probability distributions.
Multiple simulation replications with automatic data generation and segregation.
Arrival, in-service, out-of-service, working hold, working wait, idle wait and client split events.
In/out-of-service probabilities based on calendar time.
Model size limited by available memory, disk space and analysis time.
Random Number Generator:
A Prime Modulus Multiplicative Linear Congruential Generator based on Marsh and Roberts' UNIRAN generator.
Can produce 21,474 independent streams of 100,000 random numbers each.
Optional random number repeatability, achieved by resetting each stream's seed before replication startup.
Programming approaches:
Object oriented "Process" approach scripts the activities of each individual simulation object (client, server, queue, connector) according to user input parameters.
Synchronization of alternative system configurations by dedicating a different random number stream to each of the seven SIMē input random number variate types (often referred to as the Common Random Numbers (CRN) variance reduction technique (VRT)).
Inverse transform methods for generating random variates from a given distribution.
Document/Information Management
:
"Finder" was an interactive application that I architected
and coded (Microsoft C) to search for occurrences of specified words
and phrases in the 50+ part, 1000+ page Federal Acquisition
Regulations (FAR) (and in the similar Defense FAR). It made
extensive use of doubly linked lists of lists (ref. figure at left),
providing techniques for both an "immediate" search on
relatively unique strings, and an "extended" search,
compilation and set manipulation (e.g. union and intersection) of
(D)FAR parts that had common words or phrases. Displayed
information included (D)FAR part numbers, the number of string
occurrences in each part and the textural content with the search
string highlighted. The Finder restart facility allowed users to
continue searches started during an earlier session, and provided a
system-crash safety net.
"AI²MS" was a highly interactive document management
application that I architected, partially marketed and coded
(Vax C, Digitalk
Smalltalk), and technically managed. A high level AI²MS
VOPO diagram is shown at right (a
view
of
participating
objects). Prominent in that diagram are seven important
components: Scan Stations, a scripted Staging process, an OCR process
or processes, one or more automated content Filtering processes, Edit
Stations, a Local Database, and External processing with information
storage. Scan Stations were of three types -- paper, microfiche
and microfilm. Each Scan Station type had its requisite,
necessarily different, scanning component, but the software supporting
all types was the same. All incoming scan "jobs" were
pre-scripted according to either predetermined (if appropriate) or
on-the-fly templates that were associated with specific customer needs
and/or input quality/type. Scripting permitted the use of a
Staging process to direct/track jobs through the other components and
the overall management process. Required OCRing was scaled by
adding more OCR processors (perhaps necessary to maintain a given
throughput level for complex or "unclean" scanned
input). Content Filtering processes were similarly scalable, and
provided things such as intelligent and automated scaling, rotation,
white-space detection, context parsing, spell checking and bitmap
color detection. Edit Stations provided manual access to any
necessary "after filtering" results, reacting to flags that
might be raised by those processes. A Local Database was closely
integrated with job scripting and staging, OCRing, manual editing, and
process filtering. Hooks were provided for integration with
customer databases and subsequent external processing.