Architecture design, Platform, Technology - consulting & mentoring

Project Success requires solving business problems by applying appropriate processes and software solutions.
Our knowledge at Xanadu begins with solid Object-Oriented fundamentals. We feel that software built today originates from excellent Object-Oriented skills. This is the starting point in building flexible, scalable, performant systems.
Solid Object-Oriented fundamentals are appended with the timely application of design patterns and best practices. Design patterns and best practices must be applied judiciously in order to maximize architecture understanding, simplicity, and reuse.

We offer a range of software architecture consulting services including:
Architectural Guidance
Enhancements, maintainance, scalability, and performance are typically not a problem until well into the product lifecycle. We provide the architectural guidance necessary in order to future-proof those solutions.
Strategic guidance: If you have decided that you need help on software architecture, but you are unclear how best to hire an architect, or how to use an architect on your team, we can advise you on the common organizational patterns and pitfalls.
Short-term guidance: Often development teams have strong implementation skills yet can benefit from the skills of an experienced architect to point the system in the right direction and help make key decisions that have long-term implications.

Early Stage Project Participation and Mentoring
The early stages of a project are the most critical. It sets the tone for team performance and stakeholder interaction. By participating during these early stages, we encourage solid application/infrastructure design, efficient team collaboration, and active end user participation. Sometimes team capabilities and/or development practices do not match project expectations. We share our efficient and agile processes, as well as our technical expertise so that software development teams maximize their productivity.
Skills transfer: Our architects work side-by-side with your development team, mentoring them during product development, and enabling your team to apply software architecture techniques autonomously during their next project.
Outsourcing: Use one of our architects when your team needs a “ringer” on the project.

Product Strategy
Our product strategy service can aid business leaders in thinking through early product concepts and defining clear business goals. The objective of this process is to ensure a stable base for the project requirements. All software requirements should support your specific business goals as well as provide you with a way to track your project success after launch.

Technology Consulting
Technology is always changing. So how will you know if you should build a custom solution or choose an out-of-the-box platform? Our years of experience can help you make that decision. Our knowledge of available platforms and modules can help you weigh short-term development costs versus long-term scalability needs to find the most cost-effective solution for the long haul. In some cases, we can even help you estimate the development cost to outsource the project.

We keep abreast of any new software concepts and theories, so that our solutions are not only applicable now, but easily enhanced and reused for the future.
Design Patterns
Design Patterns capture solutions that have been developed and evolved over time. They are simple and elegant solutions to specific problems in object-oriented software design. These are based on industry standards and business practices.
Service-Oriented Architecture (SOA)
Service-Oriented Architecture employs Web Services at the protocol level to build loosely coupled, plug-and-play software systems. It increases the reuse of disparate applications and legacy systems that may or may not be built on top of differing technology. It is a higher level of software development that takes advantage of existing systems, and easily allows new systems to be used by future systems.
Software Factory
A Software Factory is a development environment configured to support the rapid development of a specific type of application. Software Factories are just a logical next step in the continuing evolution of software development methods and practices. However, they promise to change the character of the software industry by introducing patterns of industrialization.

Typically, software architecture and development takes a many-pronged approach, culling ideas from disparate groups in separate meetings.

In creating architectures, we address