The
DIS department develops a CAD sytem that models large power
utilities' electrical network distribution systems. The
CAD system manages massive databases of substations, transformers,
and customers for large power generators such as CP&L and Excelon. The
software can perform dynamic network updates; tracing of electrical
connectivity; heuristic outage detection; etc. It is designed to
handle simultaneous interaction by dozens of operators; during storm
situations, the system must handle data input from thousands of
customer calls as well.
Components
include:
Client
Electrical
network map written in MFC and native C++
List-driven GUI to
model business rules written in Java
Server
Unix
server modules
Modular server design includes separate components
that handle different classes of messages
SmartSockets
client/server middleware provides a publish/subscribe model
Database
Three
schemas stored in an Oracle database (for electrical network data,
power outage data, and admin data)
I
am the lead developer for the map client. Functionality that I
designed and implemented in whole or extended from the beta-level
product of 2000 includes:
Performance
enhancements
Enhanced the performance of the existing beta-level
product to best-in-class levels. The customer is a huge power
utility with a network comprised of 4 million nodes and lines. The
network includes millions of many types of other objects that can be
operated in realtime. The entire network can be loaded at once and
dynamically zoomed and panned. Double-buffered bitblitted display,
in-memory indexed arrays of required display data, and a cell-based
object filtering mechanism for smooth operation.
Dynamic
symbology and annotations
Symbols scale between a minimum and
maximum size as the user zooms in and out. Dynamic annotations as
the user zooms in and out. All symbology and annotations can be
configured to declutter at given zoom levels. The result is a map
that gains detail as the user zooms in and simplifies as s/he zooms
out.
Multiple
view support
Unlimited number of views of the network are
available. View types: geographic, schematic, site, auto-schematic,
zoom overview (bird's-eye), simulation.
Zoom
overview
A bird's-eye view of the map that allows zooming and
panning of the corresponding main view. The bird's-eye view can be
adjusted to target any area of the map. Standard CAD-style
modifiers (shift-mouse to pan, ctrl-click/right-click or mousewheel
to zoom, etc.); extended with Alt- to allow zoom/pan in bird's-eye
view.
Auto-schematic
A
subset of the network can be dynamically selected, and a
non-overlapping schematic layout can be automatically generated on
the fly. Designed to support multiple auto-schematic algorithms.
Includes special symbology to dynamically represent the status of a
cluster of objects ('site').
Custom
coding for every large customer
Every large utility has unique
operating procedures. We maintain many separate code branches to
manage these differences. I have a policy to ensure new
functionality is made as generally useful as possible and
"mainlined" to the main branch. I have submitted over xxx
code submissions over the course of 5 years. Maintained a Java-based
code generator that generated C++ wrapper code for database, to ease
cross-branch maintenance.