Creating a new or re-engineered application means employing new technologies users may not be familiar with at design time. Being able to model, or prototype, the proposed system has great advantages for both the user and the designer.
1. Select Appropriate Technologies and Operating Environment
Early in the design process, our software architects must finalize the appropriate technologies to use in the development of the system. These decisions have functionality consequences for the user and cost consequences for IT. This process calls upon the knowledge and experience of the software professional to develop an environment that uses the appropriate technologies for the client in a cost-effective manner.
2. Define, Create, and Normalize Database Schema
Defining and creating data elements (with all of their attributes), tables, views, and stored procedures is a critical step in the design of successful applications. TEI has used SQL analyzer products to analyze relational databases for performance and reliability and to speed up the application design process. Our analysts are required to use this or similar software tools to model, configure, and optimize normalized relational databases.
3. Create/Model Minimal Working User Interface
Working models, or prototypes, of the final product, are important parts of our methodology. As quickly as is practical, our software professionals develop minimally functional working models of the user interface. For Windows-based applications, this means using Microsoft VisualStudio.NET (Visual Basic, C#, or Visual C++), or similar Interactive Development Environments (IDEs) to build working forms, message boxes, menus, or other user interface components to give the look and feel of the system early on to the client and the designer.
1. Identify/Develop Component Technologies
During this phase, programmers become fully engaged in developing the program code that results in executable files. It is important that our analysts use the appropriate technologies for the client’s specific set of requirements in order to achieve a technologically sound result.TEI analysts and software developers are required to keep abreast of current technologies by seminars, professional journals, and working with client software and other professional contacts. This translates into clean designs and well-written code that can be easily maintained.
2. Layer in Business Rules to Working Interface
As component objects (forms, browser-based components, etc.) become more fully developed, the business rules developed during the Requirements Analysis phase are layered into the code. These rules, especially time-dependent activities, can be the most difficult part of the project for the programmer, and, consequently, logic errors will often show up much later during the system testing phase.
3. Conduct Unit Tests
An integral part of our web and application development for the individual software developer is unit testing each component. Our project manager, along with our project technical leader, is responsible for “bullet-proofing” all code before the working executable is viewed by users. Our test plans typically require test scripts and actual unit testing to be performed by team members other than the programmer who developed the code. This requirement avoids the possibility of the programmer testing his own biases.
4. Create Output/Interface (Reports, Interfaces to Microsoft Word, Excel, Outlook, Etc.)
After the primary interface is completed, and while unit testing is being conducted, we program any reports or other paper-output requirements. One approach that has worked exceptionally well integrates Microsoft Office products into the design of the system. For example, performance reports with dates, numbers, and statistics are placed directly into a Microsoft Excel spreadsheet; and, letters, reports, and other documents are formatted (including color fonts) in Microsoft Word, then displayed for viewing and editing before printing.
5. Perform Fully-Functional System Tests
The final part of the Design and Programming phases is the fully functional system test. We believe system tests must be more extensive and in-depth than using scripts. A complete system test in a “near go-live” environment with users involved is the best way to assure a successful implementation.
TEI methodology for implementation uses a structured, step-by-step, Gantt chart approach. In the last phases of every project (especially long projects), users, programmers, and all involved are anxious to see the results of their work, and a structured “tick list” approach to these final phases of the project ensures that no shortcuts are taken that would impede a successful implementation.
1. Migrate Data
Mapping data elements and tables from older, generally non-relational databases to newer relational databases such as Oracle, Microsoft SQL Server, and others usually requires more than simple imports or exports. Typical problems involve differing operating system platforms, differing data types, multiple instances of the same data element located throughout the department, and flat files to normalized tables.
2. Deploying the Web-Based System
Implementing new or legacy systems is also a structured process requiring strong project management and people skills, especially in skills transfer and user training. Three areas we have traditionally focused on in implementations are: (a) additional hardware and equipment required for a fully implemented system, (b) documentation and skills transfer from project team to IT staff, and (c) user training.
a. Additional Hardware and Equipment
Planning for new IT Data Center and user hardware has always been important, but browser-based applications now place more pressure on application developers because of the many choices available for servers and client interfaces. This phase, while an important part of our Application Development Methodology, is predominantly a technical issue because of configuration, performance, reliability, and usability issues. Our Chief Software Architect regularly consults with IT staff on hardware-related issues throughout the life of the project and participates completely in technology choices and their proper installation.
b. Skills Transfer
Web or Application Development using IT contractors such as TEI means project-type work with a beginning and an end. At the end of the project, IT staff must be familiar with all aspects of an application (database, program code, dependencies) for support and enhancement once the project is complete. This is best accomplished by having IT staff personnel participate in the development of the application so that when the project is complete, there is not a steep learning curve. When IT staff is not available for participation, the learning curve is steeper, longer, and relies more heavily on properly documented application and database functionality.
c. User Training
User training is equal parts people skills and technical skills. TEI uses a combination of classes and one-on-one training to train users to use the new system. On occasion, we have employed qualified specialists to develop training material and conduct training classes.