|
|
|
|
Technologies
|
|
|
|
Many
skills are required for creating enterprise software solutions. I am competent
in the following areas:
|
|
|
|
Project Methodologies and Tools
|
|
|
Enterprise Architecture
|
|
|
Enterprise, Internet, and Web Technologies
|
|
|
Software Engineering
|
|
|
Programming Languages and Development Environments
|
|
|
Data Modeling and Database Design
|
|
|
Database and Data Technologies
|
|
|
Source Code, Documents, and Version Control
|
|
|
Operating Systems
|
|
|
|
|
|
Project
Methodologies and Tools
|
|
|
|
Every
project must have a clearly defined plan for success. The project plan brings
together a schedule, team roles, actionable tasks, and a process for delivery.
Formal milestones are used to set goals and monitor progress.
|
|
|
|
-
Microsoft Solution Framework (MSF) - MSF is a flexible iterative
framework using a risk-driven model that defines team roles and a cyclic
process. Risks are identified early, monitored continually, and mitigated with
high priority. MSF is designed to prevent risks from turning into showstoppers.
-
Rational Unified Process (RUP) - RUP is a complete framework filled with
detailed processes, documents, and deliverables. While remaining flexible, RUP
provides a well-traveled path to success. Like MSF, RUP uses an iterative
risk-driven approach. RUP covers everything from gathering requirements to
testing.
-
Unified Modeling Language (UML) - UML is a set of definitions and rules
for creating various relational and process models. Specific formats and
entities for diagrams and other documentation are included. UML is especially
useful in providing clear communication between business analysts and technical
teams.
-
Microsoft Project - Project is a full project management tool. Among its
features is a Gantt chart manager that facilitates project scheduling and
tracking including dependencies.
-
Microsoft Visio - Visio is a general-purpose graphical tool used to
create graphs, charts, and many other types of diagrams. With its large library
of entities and connectors, Visio can be used to produce Gantt charts, flow
charts, process diagrams, software architecture, and network topology diagrams,
plus entity-relationship diagrams for UML models.
|
|
|
|
|
|
Enterprise
Architecture
|
|
|
|
Business
enterprises extend to all persons, organizations, and entities related to a
particular business. Information management systems must score well in the
areas of effectiveness, performance, and versatility. Enterprise architecture
can be viewed from the following perspectives:
|
|
|
|
-
Business Perspective - Interested in high-level business strategies,
initiatives, products, services, organizational units, and how each of the
aforementioned relates to the others.
-
Application Perspective - Concerned with information strategies and
application software that serves the needs of the business enterprise.
-
Information Perspective - Involved with the operational data of the
business enterprise. Operational data includes everything from structured data
held in a database to ad-hoc documents.
-
Technology Perspective - Has to do with computational platforms and
services such as hardware, operating systems, and network infrastructure.
|
|
|
These
are separate perspectives on a single architecture. Keeping in mind that
technology is a business enabler, models and approaches have evolved that allow
business requirements to drive operational solutions.
|
|
|
|
-
Service Based Logical Model - This model is logically abstracted from
technology. Three services are defined include user services, business
services, and data services. User services are the presentation layer, business
services are computation, and data services are back-end persistent data access
and storage. This model is the realm of business rules and the business
solution architectures.
-
Software Architecture and Development - Here, the logical business
architecture is implemented as software. Software should be componentised and
versatile regarding physical location. If possible, the software should be
installable on a single machine or distributed. Software architecture spans all
of the service layers.
-
Physical Architecture - The physical model is where software is deployed
to provide an operational solution. This is the realm of operating systems,
hardware, and infrastructure.
-
N-tier Physical Architecture - N-tier is the classic physical model used
by the Internet and most enterprise systems. Users have thin-client computers
with the user interface and some business computation in the form of
client-side scripting. Web services and most business computation happen in a
middle layer. Data is serviced and persisted in a backend data layer. Each of
the physical layers may be distributed among separate computers in different
locations. The enterprise is connected through a network infrastructure.
|
|
|
|
|
|
Enterprise,
Internet, and Web Technologies
|
|
|
|
Enterprise
computing is about integrating systems and reaching out to users. The Internet
is an amalgamation of many enterprises into a huge conglomerate. Internet
technology provides the infrastructure and protocols for communication. Web
technology provides navigation and access to users. Enterprise, Internet, and
Web technologies are interwoven. Scalability, durability, and availability are
key issues. Thus, proper choosing of technologies and implementations is
essential.
|
|
|
|
-
Microsoft .Net Framework - .Net is an enterprise level initiative from
Microsoft that provides new interoperability through open standards. In
particular, .Net heavily uses XML, the de facto standard for data interchange
on the Internet. .Net also brings a new application program environment using a
virtual machine similar to Java. Distribution and installation of software is
tremendously simplified. .Net programs and components are fully compatible and
can be intermingled. A large library of specialized objects is included with
.Net.
-
Windows DNA - Microsoft Windows Distributed iNternet Architecture
(DNA) is a suite of technologies that allow the creation of high-performance
enterprise processing systems. The DNA framework is an n-tier distributed
architecture. DNA covers everything from Internet browsers to backend data
systems.
-
ActiveX - ActiveX is a general term for the technologies included in
Microsoft DNA. Among these are MTS, COM, DCOM, COM+, MSMQ, ADO, OLEDB, and many
other technologies.
-
Microsoft Transaction Server (MTS) - MTS is a server-based component
technology that allows clients to execute programs on a server. MTS provides
enhanced scaling, security, and manageability. Plus, MTS effectively enhances
database performance through connection pooling. Microsoft Visual Basic is the
most popular language for creating MTS components.
-
Microsoft Message Queue Server (MSMQ) - MSMQ uses a versatile
store-and-forward technology for situations where systems can't be directly
connected or where a direct connection is undesirable. MSMQ, MTS, and custom
adapters can be combined to create an excellent high-performance Enterprise
Integration Application (EIA).
-
Java Server Pages (JSP) - JSP is a server-based technology, that are an
extension to the Java servlet technology that was developed by Sun. JSPs have
dynamic scripting capability that works in tandem with HTML code, separating
the page logic from the static elements -- the actual design and display of the
page. Embedded in the HTML page, the Java source code and its extensions help
make the HTML more functional, being used in dynamic database queries, for
example. JSPs are not restricted to any specific platform or server.
-
Active Server Pages (ASP) - ASP is a server-based technology that can
provide a fully interactive browser-hosted user interface coupled to backend
functionality. When combined with enterprise technologies like MTS and MSMQ,
ASP can be part of a high-performance enterprise solution. ASP scripts can be
created in a variety of scripting languages, although VB Script is the most
popular. ASPs are restricted to the Microsoft Windows platforms.
-
Active Server Pages .Net (ASP.Net) - ASP.Net (originally called ASP+) is
the next generation of Microsoft's Active Server Page (ASP), a feature of their
Internet Information Server (IIS). It is different than its predecessor in two
major ways: it supports code written in compiled languages such as Visual
Basic, C++, C#, and Perl, and it features server controls that can separate the
code from the content, allowing WYSIWYG editing of pages. Although ASP.Net is
not backwards compatible with ASP, it is able to run side by side with ASP
applications. ASP.Net files can be recognized by their .aspx extension.
-
Hyper Text Markup Language (HTML, DHTML) - HTML is the content language
of the Internet. HTML carries the text and images along with formatting
information to web browsers. Also, HTML can be used to create interactive
forms. Client-side scripts, such as JavaScript, can be contained in HTML.
Dynamic HTML (DHTML) provides even more interactive capability using an
interrupt-driven virtual connection between the client and the server.
-
Extensible Markup Language (XML) - XML is a data packaging and access
technology that carries both data and metadata in a hierarchical data
structure. Metadata is the 'data about the data' that relates an unambiguous
identifier with each item of data according to its place in the structure and a
name. Since an XML document is composed of plain text characters, it is well
suited for intersystem communication. Under some circumstances, XML is useful
for persistent data storage.
-
Document Object Model (DOM) - The set of rules and relations that define
the way that XML documents are formed, navigated, and manipulated.
|
|
|
|
|
|
Software Engineering
|
|
|
|
Software
engineering is the practical craft and applied science of designing the
programmatic nuts, bolts, and assemblies that will be coded into an executable
program. This discipline lies between high-level solution architecture and
coding.
|
|
|
|
-
Object Oriented Analysis (OOA) - In software engineering, OOA is the
process of recognizing what objects will need to implement architecture. Often,
a software engineer is responsible for designing classes that have a technical
purpose at a lower level of abstraction than business objects. Database
connection objects are an example.
-
Object Oriented Design (OOD) - Objects are instances of classes. Classes
have interfaces that define properties and methods, plus code. Classic object
models call for modularity through encapsulation, polymorphism, multiple
inheritance, Object oriented design has to do with designing class templates,
interfaces, and arranging object relationships.
-
Component Oriented Design (COD) - Component Oriented design addresses
the need for bundles of objects related by coincidence into a single container.
In particular, components are handy for distributed computing. When a component
is intended to be instantiated on the same machine that will use it, the
component interface generally exposes object interfaces directly. But, if the
component will be distributed and accessed over a network, its interface is
designed to minimize network traffic.
-
Practical Considerations for Network Computing - Classic OO can work,
but perform miserably in distributed computing. The issue has to do with the
amount of network traffic ('round trips') generated by accessing objects. For
each property or method that is accessed, at least one round trip occurs - that
is in addition to the round trip to instantiate the object! For that reason,
distributed components, such as those for MTS and DCOM, are usually designed to
pass data and call methods in the least number of round trips. Generally,
designing objects with traditional interfaces and bundling those objects into
components with interfaces optimized to minimize round trips will address this
issue. Within the component, there is a control procedure that manages the
objects, coordinates execution, and handles the exposed interface. In effect,
the component functions as a sort of batch processor. Knowledge and experience
are the key factors in creating high-performance distributed applications.
-
Fragile Hierarchy Syndrome - When designing objects that inherit from
other objects, and especially in the case of multiple inheritance, structures
and relationships can result that create a tangled web of dependencies - this
is fragile hierarchy syndrome. The best rule is to avoid hierarchies with a
depth greater that three. Also, there should be truly compelling reasons to use
multiple inheritances. Knowledge and experience are the key factors in creating
high-performance distributed applications.
|
|
|
|
|
|
Programming
Languages and Development Environments
|
|
|
|
Programming
is the art and craft of implementing rules and procedures in an executable
form. As information technology has advanced, so have programming languages and
their environments. Compatibility, extensibility, and maintainability are huge
issues. The following set of technologies compliment each other and can be used
to create powerful enterprise software.
|
|
|
|
-
C# (Pronounced 'C Sharp') - C# is the flagship programming language for
Microsoft's .Net Framework. C# is a fully object oriented (OO) language that
uses the rich library of .Net objects. Almost any type of program, from
stanalone to distributed component, can be created with C#. Also, C# can use
existing MTS components and other COM and DCOM executables including exe and
dll.
-
Visual Basic .Net (VB .Net) - Like C#, VB .Net is a fully object
oriented (OO) language that can use all .Net objects. With VB .Net, anything
from standalone programs to distributable components can be created. Again like
C#, VB .Net can use existing MTS components and other COM and DCOM executables
including exe and dll.
-
Visual Basic 6 (VB) - Microsoft Visual Basic is an extremely versatile
tool that can be used to create Standalone, client-server, and n-tier
applications. VB forms provide rich user interfaces. VB can also be used to
create COM, DCOM, COM+, and MTS components. For practical purposes, VB is an
object oriented (OO) language that provides a fast path to quality software.
-
VB Script, JScript, and JavaScript - VB Script, JSript, and JavaScript
are general scripting languages that can be used for client-side or server-side
scripting such as ASP. VB Script is the scripting language for many Microsoft
products. Scripts activate quickly and exist as plain text. JavaScript is the
clear choice for client-side scripting since it is the most widely supported.
JSript is Microsoft's clone of JavaScript.
|
|
|
|
|
|
Data
Modeling and Database Design
|
|
|
|
Business
data is critical. Data must be safe, secure, and usable. Database systems
provide reliable storage and access by pairing a specialized file system with a
management system. The management system allows both administration of the
database and access to the data through a specialized programming language or
an application program interface (API). By far, the most popular database
language is Structured Query Language (SQL).
|
|
|
|
-
Data Modeling - This is a concept from UML. Data modeling attempts to
represent real data and business processes in entity/relationship diagrams.
Often, the entity relationships are represented in USE/CASE diagrams that
examine various scenarios (cases) and shows how entities are used. Data
modeling is extremely important to most phases of a project. Data modeling is
used to create database schemas. In an abstract sense, a data model can be
mapped to a corresponding relational database schema.
-
Relational Database - This is a structure that is used for storage and
retrieval of data. The primary goals of a database are to properly represent
and preserve the integrity of the data through relationships. Relational
integrity is enforced by rules in the form of checks, constraints, and
assertions. The structures and relationships are contained in metadata called
the database schema. Proper relational integrity is achieved through a process
called normalization. Data is stored in tables with like types in the same
table. Unique identifiers called keys are used to identify individual data
members. Foreign keys are used to define relationships between tables.
-
Relational Database Design - At a high level, relational database design
is done by creating an accurate data model and implementing it as a schema. Of
course, the data is as complex as the business, so this is not always a trivial
task. This is a task where understanding the data is essential, so business
analysts must work very closely with database administrators.
|
|
|
|
|
|
Database
and Data Technologies
|
|
|
|
Data
is the essence of any information management system. Data management systems
must provide facilities for storing, retrieving, and calculating data, plus
database administration. Also, data technologies must provide secure and
reliable transactions. Database programming languages must be powerful and
versatile. Choosing the correct architectures, schemas, and technologies
requires full understanding of all facets.
|
|
|
|
-
Lightweight Directory Access Protocol (LDAP) - An application protocol for
querying and modifying data using directory services running over TCP/IP. LDAP
deployments today tend to use Domain Name System (DNS) names for structuring the
topmost levels of the hierarchy. Deeper inside the directory might appear entries
representing people, organizational units, printers, documents, groups of people
or anything else that represents a given tree entry (or multiple entries).
-
Structured Query Language (SQL) - SQL is a database programming language
used for data access, data manipulation, and general administration. SQL is
implemented in most databases including Microsoft SQL Server and Oracle
Database.
-
T-SQL - T-SQL is the transactional SQL implemented in Microsoft SQL
Server and is used for virtually all data and administrative functions. Stored
procedures, triggers, and other programs are created in T-SQL.
-
ActiveX Data Objects (ADO) - ADO is an advanced and versatile data
access technology used for both synchronous and asynchronous data transactions.
ADO can be used to access Microsoft SQL Server, Oracle Database, and most other
major databases. ADO is the core data access and transfer technology for
Windows DNA. Using technologies such as COM, DCOM, MTS, or MSMQ, ADO recordsets
can be disconnected and transmitted across a network to other processes. Also,
ADO has a nice set of functions for searching and sorting recordsets.
-
Microsoft Data Engine (MSDE) - MSDE is essentially a single-user version
of SQL Server without some advanced features. MSDE is replacing Microsoft Jet.
-
Microsoft Jet Database Engine (Jet) - Jet is the database engine behind
Access Database. Jet is a query engine the it designed to work with Microsoft
Database (mdb) files. Jet databases are usually accessed using ADO or Data
Access Objects (DAO).
-
Access - A Microsoft database used for single-user and small-group
systems. Access uses a combination of a rich user interface, interrupt driven
forms, Visual Basic for Applications, SQL, and administrative tools to provide
a classic programmable 'fat' client or standalone system.
|
|
|
|
|
|
Source
Code, Documents, and Version Control
|
|
|
|
Just
as the general information of a business is valuable, so is all of the
information related to software projects. Source code, design documents,
project management documents, and many other types of information must be
protected and stored in a manner that preserves the state of the project at any
point in time. Version control systems also control access to sensitive and
critical information using individual and roll-based access rights. Also, these
systems prevent overwrites of information by allowing only one individual to
work on an item at a time. Most of version control systems use a
check-in/check-out system with the ability to rollback changes.
|
|
|
|
-
Microsoft Visual Source Safe - This is a version control product that is
useful for housing source code, executable files, documents, or any other type
of file. Source Safe is included with Microsoft Visual Studio and integrates
with all of the Visual Studio programming languages.
-
Merant PVCS Version Manager - Similar to Visual Source Safe, PVCS has
full version management facilities, integrates with Visual Studio, and
integrates with other products including some from Merant.
|
|
|
|
|
|
Operating
Systems
|
|
|
|
Operating
systems provide the platform for application software, management of users,
network services, and a large array of other facilities that bring computing to
life. Choice of operating system is arguably the greatest technology decision.
|
|
|
|
-
Window 7 - Unlike it's predecessor Windows Vista, which introduced a
large number of new features, Windows 7 was intended to be a more focused,
an incremental upgrade to the Windows line, with the goal of being
compatible with applications and hardware with which Windows Vista is
already compatible. Presentations given by Microsoft in 2008 focused on
multi-touch support, a redesigned Windows Shell with a new taskbar, referred
to as the Superbar, a home networking system called HomeGroup, and
performance improvements. Some standard applications that have been included
with prior releases of Microsoft Windows, including Windows Calendar, Window
Mail, Window Movie Maker, and Window Photo Gallery, aren't included in
Windows 7. Most are instead offered separately at no charge as part of the
Window Live Essentials suite.
-
Windows Vista - Provides the same functionality as Windows XP, but
with greater security. Microsoft's primary stated objective with Vista has
been to improve the state of security in the Windows operating system. One
common criticism of Windows XP and its predecessors is their commonly
exploited security vulnerabilities and overall susceptibility to malware,
viruses and buffer overflows. It also contains many changes and new features,
including an updated graphical user interface and visual style dubbed Aero,
a redesigned search function, multimedia tools including Windows DVD Maker,
and redesigned networking, audio, print, and display sub-systems. Vista aims
to increase the level of communication between machines on a home network,
using peer-to-peer technology to simplify sharing files and media between
computers and devices. Windows Vista includes version 3.0 of the .NET
Framework, allowing software developers to write applications without
traditional Windows APIs.
-
Windows XP - Designed with the Internet in mind. XP is a member of the
Windows NT/2000 family and marks Microsoft's move from software as a product
to software as a service. To wit, XP has new facilities such as Internet
umbilicals for remote computer management and e-commerce.
-
Windows 2000 Server - A scalable multitasking operating system that
includes advanced component services (COM+), Internet services (IIS, ASP),
asynchronous messaging services (MSMQ), and roll-based security. This is the
preferred platform for many server-based products such as SQL Server, Exchange,
and many more. Windows 2000 is an excellent platform for custom applications
developed in Visual Studio 6. When updated with .Net services, this operating
system can host .Net applications developed in C# and Visual Basic .Net.
Windows 2000 also works well as a traditional file and print server.
-
Windows 2000 Professional - For most purposes, Windows 2000 Pro the
single user version of Windows 2000 server. Will not host some server
applications.
-
Windows NT 4 Server - When combined with the Windows NT option pack and
other updates, Windows NT4 Server provides scalable component services (MTS),
Internet services (IIS, ASP), and asynchronous messaging services (MSMQ), plus
it works as a host for many server applications. A good platform for
applications created with Visual Studio 6.
-
Windows NT 4 Workstation - For most purposes, Windows NT4 WS the single
user version of Windows NT 4 server. Will not host some server applications.
-
Windows ME, 98, and 95 - While these versions of Windows work well for
many standalone applications and as browser-based Internet clients, these are
not true multitasking operating systems and are not usually considered for
enterprise solutions.
|
|
|
|
|
|