An Object Model and the Data Dictionary

by HSG on Jul 09, 2012 in Enterprise Rule Applications

data dictionary workThe mainstay of a corporation is the data that it possesses. By data, I mean its customer base, information about the use of its products, employee roles and responsibilities, the development and maintenance of its product lines, demographics of supporters and naysayers, financial records, projected sales ... It is in the organization of this data that advancements to the bottom line are often realized i.e. the nuggets of gold are found. Defining what is important, properly cataloging the information, developing a comprehensive protocol to access and update this information and discerning how this data fits into the corporate venacular is basis of this data organization and may be the difference between moving ahead of the competition or being the one to fall behind.

Whenever we attempt to develop an Enterprise Rule Application, we must begin by harvesting the data upon which those rules are built. This is by no means an easy feat as it requires a thorough understanding of the business, industry, the players and their respective roles and the intent of the application. Depending upon the scope of this undertaking, it is almost always safe to say that no one individual is completely knowledgeable to all facets needed to comprise the entire application.data dictionary

Teaching You Tools to Become Empowered
To build a successful business and career, you must always keep up with changes in the IT Marketplace. AWS, Office 365, LinkedIn, Sales Force, SEO, Social Media are just a few examples of where knowledge is a huge factor for success.
Training with HSG addresses your knowledge gaps and provides you with the requisite tools to outpace the competition.

The intial stage of this endeavor is, obviously, to decide upon the intent of the application. This requires knowledge of what is essential, what is an add-on and which of all these requirements/options can be successfully implemented in the allotted period of time. The importance of this stage cannot be stressed enough; if the vision/goal cannot be articulated in a manner that all can understand, the knowledge tap will be opened to become the money drain. Different departments may compete for the same financial resources; management may be jockeying for their day in the sun; consulting corporations, eager to win the bid, may exaggerate their level of competency. These types of endeavors require those special skills of an individual or a team of very competent members to be/have a software architect, subject matter expert and business analyst.

Once the decision has been made and the application development stages have been defined, the next step is to determine which software development tools to employ. For the sake of this article, we will assume that the team has chosen an object oriented language such as Java and a variety of J EE components, a relationsional database and a vendor specific BRMS such as Blaze Advisor. Now, onto the point of this article.

hsg data dictionaryGathering data in order to create an object model requires the expertise of a variety of individuals often those that work outside of the realm of software development. The vernacular they employ to describe the business, data, forms, work flow, activities, roles and responsibilities is often greek to the IT development staff while the inverse holds as well; conversations about class diagrams, objects and data types are completely foreign to many not tasked with the responsibilities of information gathering or writing code. To come to a comprehensive understanding, it is at this phase of development that a data dictionary is required.

A data dictionary is a list of business terms used to describe the data, a definition of each term, the type of the data i.e. an int, string, char, etc., the constraints on the data (item can only equal one value; item can equal a range of values; item is limited to anyone of four values), the default value and how this item relates to other data values. As an example, pretend that we are working on an application that handles some sort of bidding requests. The table below illustrates a simple example of a data dictionary and User type entries:

Data Description Type Default Constraint
First Name first name of app user String none cannot be null or empty
Last Name last name of app user String none cannot be null or empty
User Name user id needed to login to the app String root

cannot be null or empty,

cannot be user's email address,

cannot be longer than 10 characters in size,

cannot consist of non-numeric characters with

the exception of '@', '&', '?', and '!'

password password needed to login to app String admin

can be any character including a space,

must be at least 10 characters in size,

must be changed every six months

email user email address String none

must be of type assigned to the purchasing corporation,

free email addresses such as google, yahoo ... do not

qualify

ranking

user selling rank status. used to

increase the page rank of user's

item when buyer conducts a search.

rank is determined by length of time

user has bee a seller and number of

items user has sold. user's rank can

also decrease if user does not sell

consistently every month. rank is

also determined by the volume and

worth of the items they sell.

int 1

must be between and including 1 through 10. users with

a ranking of 10 are considered exceptional. the system

can only allot for 500 of such individuals at any time.

admin

if user is an admin, they are able

to edit the item descriptions of other

users. this includes placing items in

the proper category. user cannot

change item price. however, user

can remove item from the list if this

item is deamed to be inappropriate.

bool false value can only be true or false

The reader should be aware that a data dictionary can be quite extensive, often detailing hundreds, if not thousands, of entries. Perhaps a considerable amount of this information already exists within database tables in one or a number of databases within the organization. In this case, it may be more appropriate to print and include the metadata of these tables and follow this approach to create the data dictionary. Nonetheless, it is important that all of those involved in the application's development are provided with this repository of terms, realize their use, are able to make changes/recommendations and can glean business decisions/rules from the constraints and use of this data. A review board is an obvious requirement.

hsg data dictionary umlOnce the data dictionary has been created or at least detailed to the satisfaction of many involved, a uml model should be created that incorporates the object model, the relationship of objects to one another and their quantities. When needed, activity diagrams should also be supplied to picture the context in which these objects are to be used.

Since these objects will be used within business rules, it is important that the object model be stable before rules are developed as even the slightest changes to the model may introduce considerable compiler errors which can result in hours of waisted time spent chasing the bug(s). A solid understanding of uml, object design, data isolation and software architectural expertise is required to avoid these pitfalls as it may not be feasible to generate a stable object model prior to rule development.

The purpose of a data dictionary is to act as a development aid used to successfully create applications. As such, the user should not be mired in confusion as a result of too much extranious information or too little substantive information being included. Avoid the development bottle necks by creating a clear and concise description of the business data. A good guage of a quality data dictionary and resulting uml diagrams is how easily they can be read and understood by a new hire. If this individual can the require expertise from these publications in very little time to become a productive team member, job well done!

other blog entries

Interesting Reads Take a class with us and receive a book of your choosing for 50% off MSRP.

did you know? HSG is one of the foremost training companies in the United States

Information Technology Training that enables companies to build better applications and expertly manage the software development process.

Our courses focus on two areas: the most current and critical object-oriented and component based tools, technologies and languages; and the fundamentals of effective development methodology. Our programs are designed to deliver technology essentials while improving development staff productivity.

Personalized courses for unique business and technology needs

An experienced trainer and faculty member will identify the client's individual training requirements, then adapt and tailor the course appropriately. Our custom training solutions reduce time, risk and cost while keeping development teams motivated. The Hartmann Software Group's faculty consists of veteran software engineers, some of whom currently teach at several Colorado Universities. Our faculty's wealth of knowledge combined with their continued real world consulting experience enables us to produce more effective training programs to ensure our clients receive the highest quality and most relevant instruction available. Instruction is available at client locations or at various training facilities located in the metropolitan Denver area.

consulting services we do what we know ... write software

Design and Development
Application lifecycle management
We generate use cases, UML documentation, architect the system, create an object model, iteratively develop the system, unit and system test and modularize where necessary. These types of engagements are typically longterm and, almost always, incorporate a variety of software technologies.
If you are in need of expertise but only require the assistance of one or two engineers, the Hartmann Software Group can be of help. Instead of procuring talent by way of a placement agency who is likely to contact us, come to the Hartmann Software Group directly. You may realize some savings.
Mentor
The best way to learn is by doing.

The coaching program integrates our course instruction with hands on software development practices. By employing XP (Extreme Programming) techniques, we teach students as follows:

Configure and integrate the needed development tools

MOntitor each students progress and offer feedback, perspective and alternatives when needed.

Establish an Action plan to yield a set of deliverables in order to guarantee productive learning.

Establish an Commit to a deliverable time line.

Hold each student accountable to a standard that is comparable to that of an engineer/project manager with at least one year's experience in the field.

These coaching cycles typically last 2-4 weeks in duration.

Provide Expertise
Services for your business growth.
With the introduction of smart devices, e-marketplaces, electronic forms, SEO practices, big data, virtual office environments, media streaming and so much more, there is hardly a business whose livelihood is not, in some way, dependent upon the inclusion of such software functionality into its online presence, work environment and product offerings. Such inclusion often presents a complex array of challenges that are far beyond the expertise of the business as it demands an understanding of technological options, modular decomposition, backend systems integration and web services. Most importantly, the business requires IT talent and expertise; this is where the Hartmann Software Group shines. To that end, here is an overview of some of the services that we offer:

Business Rule isolation and integration for large scale systems using Blaze Advisor

Develop Java, .NET, Perl, Python, TCL and C++ related technologies for Web, Telephony, Transactional i.e. financial and a variety of other considerations.

Windows and Unix/Linux System Administration.

Application Server Administration, in particular, Weblogic, Oracle and JBoss.

Desperate application communication by way of Web Services (SOAP & Restful), RMI, EJBs, Sockets, HTTP, FTP and a number of other protocols.

Graphics Rich application development work i.e. fat clients and/or Web Clients to include graphic design

Performance improvement through code rewrites, code interpreter enhancements, inline and native code compilations and system alterations.

Mentoring of IT and Business Teams for quick and guaranteed expertise transfer.

Architect both small and large software development systems to include: Data Dictionaries, UML Diagrams, Software & Systems Selections and more