Development Process
Manao Software’s development process is based on what is referred to as an "Agile" process. This is a process where small, incremental pieces of code that perform some specified functionality are delivered to the client on a fairly frequent basis (normally 1-3 week intervals). This is in contrast to older, traditional methods of development where you conduct 100% of the requirements gathering first, then 100% of the design, then 100% of the coding, etc. The Agile methodology eliminates a great deal of project failure possibility because it encourages change and revision. Change and revision are almost guaranteed as a project progresses and with an Agile process, you are much more capable of accommodating those changes while minimally impacting the project’s budget or timeline.
SCRUM
There are many different development methodologies that follow the Agile concept. The one that Manao Software has adopted is called SCRUM. Yes it is a funny name and it isn’t even an acronym. However, it is one of the industry’s leading methodologies and we have been using it very successfully here at Manao for a long time now. This generally entails working very closely with the project’s sponsor/owner (you) and the development team. It also means the frequent, iterative delivery of functionality as mentioned above. We create what’s called a "Product Backlog", which is the list of items you want in the application, and then prioritize them into “Sprints”. A “Sprint” is the timeframe in which to complete a specific set of features that you have prioritized. Each Sprint will deliver some working, testable aspect of the application.
Architecture Design
The key concept in our design process is that good software that is flexible for change, easy to maintain by other programmers, has a long usable life, and provides a good ROI requires that the code reflects the core concepts within the business domain and that this code is consolidated into a separate layer of the application. We call this process "Domain Driven Design". The logic is that your business is not as likely to change over the years as much as the technology that your applications are based on, and by creating separate "layers" to your application, one layer can change without affecting (or minimally affecting) any of the other layers. For example, a hospital probably works with “Patients” and “Rooms”. This is unlikely to ever change. It might expand in its context and functionality, but it will still be dealing with "Patients" and "Rooms". However, user-interface, database, and communications technologies can change rapidly. Therefore we model the "Domain Layer" (your business) first in diagrams using a graphical design tool. These diagrams illustrate the key concepts in your business.
Once we have agreed on the key concepts of your business' domain, we then can start coding these pieces regardless of what database, software frameworks, or user-interface is desired. The "Domain Layer" containing the "Domain Objects" is where the true value of the application is and where you and Manao’s architect will need to spend the most time working together.
The first step in creating the "Domain Model" is to agree on terminology and what they mean in the real world. This is what we call the "Common Language". This is the most critical part of the design process. This is where we have to translate your domain concepts into programming code. We will be taking your requirements and our conversations and incorporating this into a "Domain Model" diagram with an accompanying "Domain Object" dictionary.
Application Architecture
Here is the basic, simple version of our "Application Architecture". Manao Software has developed an architecture based on Microsoft technology including the Microsoft MVC.NET framework. This framework provides us with a great deal of features that would otherwise need to be hand coded. It also provides a template for creating web applications following Microsoft's Microsoft Application Architecture Guide. Without getting technical, let us say that the combination of the MVC.NET framework, the design approach we take, and a couple of other industry standard technology frameworks for things like database access, all add up to what Manao feels is a high-quality architecture for advanced web application development. If you would like to know more about the technologies and frameworks we use, please continue reading here.
Contact us to find out more, or read more about our ASP.NET custom software development services.