One of the key principles in software development is the DRY principle, which stands for Don’t Repeat Yourself. It can also come in different versions like “plan ahead for reuse“. Now, enterprise software differs to other categories of software like computer games in a fundamental way: it is required to process large volume of business transactions data again and again and again and again. Clearly, there are a lot of parts inside enterprise software that can be reused. Collection of reusable parts of software is called framework. It follows that a great framework can help a great deal in development and support of enterprise software.
So what parts of enterprise software get reused again and again?
- User authorization management. In integrated enterprise software, people from multiple departments access the same software, but noone is supposed to be able to see everything. It follows that a robust authorization management system must be in place to cross check every attempt to access any data by any user
Database abstraction. The better designed enterprise software can run on any number of Relational DataBase Management System (RDBMS), database-independence in software parlance, freeing the clients from vendor lock-in. It also provides the development team a central point of control of data structure structure, more efficient than manually synchronising it between the application and RDBMS.
- Form generator. Form has to be generated following same principles for each one of the numerous data objects in the enterprise software. Clearly this is a boring and error-prone task. It’d be nice if the framework can automate this. Automatic form generator also provides automatic synchronisation between data types in RDBMS and on form, reducing time wasted on trouble-shooting such trivial mistake. The auto-generated forms also take care of mandatory/optional condition of each data field as well as on-the-fly data type validation, which reduce possibility of breach of data integrity
- CRUD automation. Create, Read, Update, and Delete are basic data manipulation tasks that have to be attached to every single data objects in the software. Manually creating these will waste a lot of development team’s precious time
- Report generator. An integrated report generator means that developers produce new kinds of report faster, and also give the client a central security control over who can see which reports. Purpose-built reporting software is not good enough here because the security is handled separately off the enterprise software
Data import/export. No matter how integrated an enterprise software is, from time to time, it will need to pull data from or push data to other software.
- Document numbering system. There are lots of documents to be recorded in enterprise software: Purchase Orders, Sales Orders, packing slips, invoices, receipts, journal vouchers, etc, etc. All these documents need to be numbered in systematic way, not just assign 1-2-3 to all document types
- Concurrency control. What happens if 2 purchasing staffs edit the exact same Purchase Order, 1 changing the delivery address and the other changing the quantity? Surely, if the software allows this, chaos would ensue. A good framework provides means to prevent this, probably by way of application-level locking
- Integrated Development Environment (IDE). A well set up IDE can make developers more productive by automating routine tasks like syntax checking, debugging, submission to version control system, or re-compilation
- Application Programming Interface (API). Since it is impossible to handle all aspects of business operation just using single software, it is essential that the framework provides easy 2-way integration with other software
- Other features like developer management system (which developer can change which code), patch management system (install/uninstall, dependency check), or even printer management system (enabling remote printing feature)