We have been working together for many years and we use similar methodologies, which will provide consistency for our clients. We believe that the sharing of information is an essential part of the software development process. Our principal members share this information with one another, which allows us to build on one another's ideas. This enables us to maintain our competitive edge by keeping our methods ahead of the field standard. We have extensive industry experience and like to apply our knowledge in practical pragmatic ways. We are familiar with Agile Practices, Architecture, Analysis and Design, Design Patterns, Frameworks, Quality Assurance, Refactoring, Reuse, Testing, and Industry Standard Best Practices for Software Development.
Our team has worked with many large organizations providing assessments and follow-up consulting, mentoring, development, and training. These organizations include: Caterpillar Inc., Iron Mountain, Cisco, ezCaretech, GE Healthcare, Illinois Department of Human Services, Illinois Department of Insurance, Illinois Department of Public Health, Innovated Professional Solutions, Ernst and Young, Motorola, Alcatel, Navy Surface, and Air Warfare Systems. Freddie Mac, First Union Bank, Itaú-Unibanco, PayPal, Progressive Insurance, State Farm Insurance, UOL-Pagseguro, Vanguard, Wells Fargo, ....
Mentoring and Consulting
The principals of The Refactory have found that consulting and mentoring are incredible opportunities for growth and understanding within the field. Our principal members have both consulted and mentored extensively within the commercial world to bring a consciousness about frameworks, objects, patterns, adaptive systems, and other groundbreaking research to life.
Ralph Johnson is one of four authors of the best selling book “Design Patterns” and has been dealing with objects since their inception; Don Roberts is an expert with analysis, design and software development – specifically OO systems; Don Roberts and John Brant are co-authors of the first commercial refactoring tools; Joseph Yoder has taught, mentored, consulted, and managed various software projects for many years, including applying patterns, designing architecture, creating adaptive object models, utilizing agile methods, developing frameworks, refactoring existing systems, object oriented software development in Java, C#/.NET, Smalltalk and C++, and web design and cloud services.; Brian Foote is the author of over two-dozen published patterns and has been working with frameworks, patterns, and objects for years.
Analysis & Design
Analysis and Design are important aspects in order to fully understand the evolution of existing systems and the development of new ones. The Refactory, Inc. principals are some of the most well-respected framework developers, object-oriented designers, and pattern writers in the field and each has focused on analysis and design of object-oriented systems for years. We specialize in light weight methodologies, specifically those now being recognized as Agile Software Development.
The Refactory specializes in the development of quality systems through the use of frameworks and refactoring, using light-weight programming methodologies (agile practices), testing (pragmatic TDD), refactoring, and adaptive object models. Our agile methods increase production speed while maintaining adaptability and ensuring quality systems.
Architecture
As computer and software systems evolve more complexity due to changing business and home user requirements, effective software design becomes more important than ever. As software systems evolve, they often become less manageble, as simple expedient solutions are implemented with no concern for the overall function of the application. Over time this eventually leads to the need for the refactoring of the entire system or the design of a new one. While this cycle is not always inevitable, it's process can be, if not prevented altogether, at least substantially slowed with the use of proper software architecture.
The Refactory specializes in the development of architecture through the use of frameworks and refactoring, using light-weight (agile) programming methodologies, (pragmatic) testing, and building adaptable systems. Our Agile methods increase production speed, while maintaining adaptability and ensuring quality architecture.
Building Adaptable Systems
Architectures that can dynamically adapt to changing requirement are sometimes called “reflective” or “meta” architectures. We call a particular kind of reflective architecture an “Adaptive Object-Model (AOM)” architecture. It is a model based on instances rather than classes. Users change the metadata (object model) to reflect changes to the domain model. These changes modify the system's behavior. Adaptive object models support changeable domain modules by casting business rules as interpreted data and representing objects, properties and relationships in external declarations. Adaptive object models also make it easier to allow users to add new rules and features to the system without new programming. This type of architecture is ideal in today's market of ever-evolving business requirements.
The Refactory has provided services developing adaptive object models in such industries as the insurance domain, health services, manufacturing, and to financial institutions. Clients such as the Illinois Department of Health and Iron Mountain Fulfillment Services have benefited from the successful deployment of dynamic architecture by The Refactory.
Frameworks
A framework is a piece of software that provides reuse at larger granularity, enabling not only code reuse but also design reuse. Frameworks use techniques that allow applications to specialize logic to solve a more specific problem. The Refactory utilizes contemporary techniques for building frameworks. It starts from the fundamental object oriented techniques to achieve behavior adaptation, such as inheritance and composition, and goes through the usage of more advanced techniques, such as reflection and metadata. Frameworks are reusable designs for an application or a subsystem expressed as a set of classes and the way that instances of these classes collaborate. A framework describes not only how to partition the responsibilities of a system among its components, but also how to think about a problem.
The Refactory has done groundbreaking work in the area of framework and object evolution. We have applied these insights as we have cultivated frameworks for a number of domains. We can train your development team on framework basics and/or we can assist your team by developing the core of your framework and collaborating with your internal team on the results.
Refactoring
Refactoring is the process of changing software without altering its external behavior. Refactoring software to make it maintainable and extendable has become a recognized best practice and has been incorporated into many Agile practices such as Scrum, TDD and XP. Refactoring improves the structure of the design of a system to allow for later extensions or to make maintenance easier. Toward this end, we refactor software in a disciplined way to minimize disruptions and to allow the system to safely evolve.
The Refactory can assist by providing an analysis of your current system, with an eye toward pinpointing "mud" and "code smells." Our analysis will lead to suggestions for evolving your current system by mentoring, consulting, and training your current team, or we can assist your team by providing the core of your refactoring and collaborating with your internal team on the results.
Software Development
The principals of The Refactory are recognized as experts in the object oriented programming field. We have worked extensively with object-oriented programming including development through C#/.NET, Java, Smalltalk and C++. We have specialized in the development of frameworks, refactoring, using light-weight programming methodologies, testing, and building adaptable systems.
The Refactory can assist by providing a team of developers to provide the software solution for your company, or by providing the necessary tools to your development team, including training, mentoring, and consultation, leading to the ideal solution for your software needs. We have the skills, experience and ambition to make your project successful.