Updated March 25, 2013  Technologies
Mission & Core Values  
  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.
  Copyright RickDawson.net. All rights reserved.