Creating a software is an art, and here at KTL, we take it seriously!
Building software that meets business requirements is quite a tedious process. It involves various disciplines to come together in order to gather requirements, design, code, test and deploy. The journey of a software does not end here, in fact it is just set on a long sail and is expected to do its duty and perform here on. This is when the durability of the software is tested and it is rated as mediocre or class apart. I am going to discuss a few principles that we follow to make a software that customers want to ‘Take Home’ and ‘Keep’.
- Modular, Modular, Modular! Instead of building a monolithic application, we focus on building small chunks of code that are fully tested. These small units of code are functional and independent. The following are the characteristics of a modular architecture:
- Separation of concerns: This involves separating sections such that each section is addressing a separate concern. These sections are not dependent on each other and are oblivious to each other’s existence. We have adopted design patterns like MVVM and MVC in our recent projects to support modular programming.
- Reusable: The mantra is DRY; Don’t repeat yourself. Repeating fragments of code can be extracted into separate functions. User controls and partial views can be used for repeated controls.
- Testable: Independent modules that can be fully tested in isolation. We use NUnit and Moq testing frameworks to support testing.
- Layered architecture: Separating client-server application into logically separated layers namely, presentation, business and data access. The entire layer can be swapped or replaced with a new layer without rewriting the application.
- Loosely coupled/High Cohesive: Components that are independent but work together as a functional unit.
- Fits the ‘Agile’ Bill.
- Customization: A Tailored Software
- ‘One size fits all’ might be true sometimes but in most cases businesses have needs and rules that need customization. We make tailored software to achieve this.
- Extensible Software: A software that grows
- The only thing that is constant is ‘Change’. The scope of a software project might change during the course of building it or even in the future. With passing time, as the business grows, the software is expected to grow as well. Building extensible software is the answer to this.
- Decomposition and Abstraction
- We decompose the code, and decompose it little more, until we can’t decompose it further. Dependencies are removed, Abstraction is introduced.
- Black box with hooks
- Think of your existing code as a black box. Now if your existing code needs modification then you will have to crack open the completely tested and working code, and it is like opening a can of worms. Instead, imagine if your black box came with hooks and extensions which will allow you to extend features without disturbing the working code.
- Decomposition and Abstraction
- A Balloon Twister Trick – Have you seen a balloon artist at a kid’s birthday party or a fair? He molds and shapes the balloon to get different structures. Assembling a software is somewhat similar. You have the basic blocks of code and you assemble them together to make a working model.
- E.g. using modules ‘Customer’, ‘Product’ and ‘Order’, we can build a new module for viewing ‘Order History’.
By leveraging these basic steps it is possible to create a lasting software with strong foundation. We do this and more at KTL Solutions. To learn more about our development projects or get an estimate for your next software project, contact KTL Solutions at 301 360 0001.
MINAL WAD | Business Solutions Developer
Ever since Minal joined KTL Solutions in March 2008, she has been diligently working as a Business Solutions Developer, providing customized software that integrates with Dynamics GP. She has a passion for using technology to solve real-world problems, and it is this passion that enables her to deliver projects with exceptional quality in time and within budget. Her role as a business analyst, is a new found skill, and she has been able to successfully demonstrate it in some of her recent projects. She is proficient in C#, ASP.Net, SQL Server, Sharepoint, WPF, Entity Framework, MVVM and Database Design. Minal has over 8 years of experience as a developer. Prior to KTL, she worked with Microsoft in Fargo, ND, where she was a part of Dynamics Axapta team. She holds a Master’s degree in Computer Science from Oklahoma State University. She involves herself in training and certifications that keeps her abreast with new technologies.