An Object Model and the Data Dictionary
The 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.
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.
Gathering 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 |
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.
Once 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
Course Directory [training on all levels]
- .NET Classes
- Agile/Scrum Classes
- Ajax Classes
- Android and iPhone Programming Classes
- Blaze Advisor Classes
- C Programming Classes
- C# Programming Classes
- C++ Programming Classes
- Cisco Classes
- Cloud Classes
- CompTIA Classes
- Crystal Reports Classes
- Design Patterns Classes
- DevOps Classes
- Foundations of Web Design & Web Authoring Classes
- Git, Jira, Wicket, Gradle, Tableau Classes
- IBM Classes
- Java Programming Classes
- JBoss Administration Classes
- JUnit, TDD, CPTC, Web Penetration Classes
- Linux Unix Classes
- Machine Learning Classes
- Microsoft Classes
- Microsoft Development Classes
- Microsoft SQL Server Classes
- Microsoft Team Foundation Server Classes
- Microsoft Windows Server Classes
- Oracle, MySQL, Cassandra, Hadoop Database Classes
- Perl Programming Classes
- Python Programming Classes
- Ruby Programming Classes
- Security Classes
- SharePoint Classes
- SOA Classes
- Tcl, Awk, Bash, Shell Classes
- UML Classes
- VMWare Classes
- Web Development Classes
- Web Services Classes
- Weblogic Administration Classes
- XML Classes
- Ruby on Rails
5 December, 2024 - 6 December, 2024 - Introduction to Spring 5 (2022)
16 December, 2024 - 18 December, 2024 - Working with Elastic Search
20 November, 2024 - 21 November, 2024 - Microsoft Azure AI Fundamentals (AI-900T00)
25 November, 2024 - 25 November, 2024 - VMware vSphere 8.0 with ESXi and vCenter
9 December, 2024 - 13 December, 2024 - See our complete public course listing
did you know? HSG is one of the foremost training companies in the United States
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.
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.
Upcoming Classes
- Ruby on Rails
5 December, 2024 - 6 December, 2024 - Introduction to Spring 5 (2022)
16 December, 2024 - 18 December, 2024 - Working with Elastic Search
20 November, 2024 - 21 November, 2024 - Microsoft Azure AI Fundamentals (AI-900T00)
25 November, 2024 - 25 November, 2024 - VMware vSphere 8.0 with ESXi and vCenter
9 December, 2024 - 13 December, 2024 - See our complete public course listing
consulting services we do what we know ... write software
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.
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