Terrace has been building innovative custom software for business since our founding in 1992. We are proud to offer our customers advanced software development services focused on emerging and established technologies.
Clients select Terrace software development services to pioneer projects utilizing emerging technologies and to predictably execute projects utilizing established technologies.
Terrace software development services encompass the full cycle of development from inception through deployment and maintenance. We have aggregated these activities into the following four segments to document our approach:
Terrace utilizes an 'Agile' development methodology in all our projects. Agile development places emphasis on short software development 'sprints' and prototyping over long 'big bang' development cycles. A classic 'big project' would be released in several incremental segments using an agile methodology in order to increase efficiency, reduce errors and compress the total development process.
Our three phases of activities utilize and leverage the latest tools and techniques in software development. All projects are different and require varying levels of analysis, design, testing and documentation activities. The drivers which typically affect these activities include 1) application complexity, 2) team composition, 3) project schedules and 4) project budgets.
Terrace works with each client to recommend the appropriate level of analysis, design, testing and documentation activities during the project proposal / work order process. Our goal is to execute lean projects which meet budgetary and scheduling goals while managing risk. Over our history, Terrace has a very strong track record leading projects from inception through implementation using this proven approach.
Every project will require some degree of analysis before design and development can begin. Analysis is essential in order to document requirements. Terrace is not a big believer in dwelling on analysis to document each and every screen, action, data element, report and interface. This would be expensive and time consuming. Terrace does believe in developing requirements sufficiently to document a 'scope of work' which will govern activities, schedules and budgets throughout the lifecycle of the project. Then we like to leverage iterative development to finalize every element of the deliverables.
Terrace will recommend specific activities during analysis/design depending on the size and complexity of the project. The list below represents a superset of the activities which might occur over an analysis/design phase of one of our projects:
- Data Gathering / Interviewing
- Documenting the Business Process
- Define the Process Model / UML
- Define the Data Storage / ERD
- Define Preliminary User Interface / Screen Mockups
- Define Object Model / Business Rules / Algorithms
- Define Reporting
- Define Interfaces
- Define HW/SW Infrastructure
- Define Conversion Plan
- Develop Project Plan
Development, testing and implementation will begin once analysis/design activities are complete for that portion of the application. Agile development methods enable starting some development activities prior to completion of all analysis/design activities. This enables the Terrace team to work concurrently on analysis/design and development/testing in order to compress the development schedule.
Terrace will recommend specific activities during development/testing depending on the size and complexity of the project. The list below represents a superset of the activities which might occur over a development/testing phase of one of our projects:
- Create User Interface / Prototype
- Create Data Storage / ERD / Test Data
- Develop Object Layer / Rules / Algorithms
- Develop Reports
- Develop Interfaces
- Develop Test Scripts / Cases
- Unit Test - Test Data
- System Test - Test Data
- Develop Conversion Programming
- Unit Test - Converted Data
- System Test - Converted Data
- Resolve Bugs / Optimize Performance
- Create Training and User Documentation
Terrace offers software maintenance services for custom software applications. Software maintenance typically follows a subset of the activities outlined above. Terrace will maintain your custom software on your cloud and in-house hardware and software infrastructure.
Terrace will recommend specific activities during application maintenance depending on the size and complexity of the application. The list below represents a superset of the activities which might occur during maintenance of your custom software application:
- Maintain Application
- Resolve Bugs
- Implement Enhancements
- Optimize Performance
- Update HW/SW Infrastructure
- Gather Initial Requirements for Next Release
Predictability is the number one goal for all Terrace projects. Terrace's 'secret sauce' is our ability to develop innovative software predictably for a reasonable cost. Terrace was built on a culture of strong project management and control.
Each project begins with a scope document - our Work Order. Our work orders describe the scope of work for the project including a description of the work, the task list associated with the work, the deliverables which will be produced during the project, the completion schedule for the project, the resources which will be assigned to the project and the fee schedule for the project.
Once the Work Order is approved and signed, Terrace then tracks all activity on the project for each resource in our TimeSheets software. Time is tracked by resource by task and includes a written description of the activity associated with each time entry. Every project is tracked through weekly status reports to the client outlining the past, current and future activity on the project.
The list below documents the activities which will occur during the lifecycle of each of our services engagements:
- Project Work Orders
- Project Management
- Task Estimating
- Daily Time Tracking
- Weekly Status Reporting