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.
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
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).
Active Server Pages (ASP) - ASP is a sever-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.
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 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.
Coming soon
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.
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.
Embedded Systems are omnipresent in our daily lives, in the form of all the devices that we use. Wireless phones, television, electronic devices, home appliances, office equipment and several other products have embedded software in them.
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.
Windows XP Microsoft's latest operating system is 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 NT4 Workstation For most purposes, Windows NT4 WS the single user version of Windows NT 4 server. Will not host some server applications