In an age of ever-changing requirements, rapidly evolving technology, and discussions over tabs or spaces, never forget the importance of requirements gathering, framework design, and unit testing. These often involve many players: from the clichéd client who doesn’t know what he wants, the product manager who only budgeted for code production, the lead software development engineer who didn’t account for requirement changes, to the developer who feels unit testing is a waste of time and is eager to start writing code.
These challenges may have been exacerbated by a misinterpretation of the Agile Software Development Methodology. Specifically, its principles and values have been cherry-picked, and in some cases, butchered. Here’s a few examples:
This is not to say Agile is broken or that Agile shouldn’t be adapted to fit each enterprise’s needs. Au contraire, I always advocate for choosing the right tools to solve a given problem. For instance, don’t use assembly language for complex UI design. Furthermore, each problem is unique and distinct. There is no “one size fits all” solution. Object-oriented design patterns are a great foundation but they may need to be adapted, depending on the specific problem being solved (keeping in mind that any adjustment should be in accordance with good object-oriented software design).
However, everyone must understand and properly execute the foundations of software development, regardless of the methodology, tools, and processes. Let’s discuss a bit more the impact of foregoing these principles when it comes to Enterprise Mobility.
Gathering requirements is not simply an act of “deciphering” what the customer wants but also a process of informing the client of things they might not be aware of and offering design-appropriate solutions for these cases.
Consider the scenario of a simple mobile enterprise application used to gather sensitive, personally identifiable employee information which will eventually be stored in the cloud. Capturing and storing text is a simple enough task for any software engineer. But without a strong background in handling personal data, the necessary security precautions regarding online storage may be ignored, or worse, the sensitive data may wind up being broadcast unencrypted across the internet, compromising the social security numbers of all employees.
Of all aspects of software development, mobile applications for the Enterprise are the most prone to requirement changes. These can be as simple as an extra entry on an input screen or as complex as a complete backend overhaul. In either case, a few lines of code or an environment configuration change with a full round of testing can mean weeks, or even months (in the latter case), in Software and Quality Assurance expenses if the framework wasn’t properly designed in the first place.
I’m not here to evangelize on the principles for properly designing software frameworks, nor am I trying to teach good framework design in a few paragraphs. That would be impossible. No programmer is born knowing how to make software which is maintainable, scalable, extensible, et al. Nothing but experience, dedication, and eagerness to learn can afford a software engineer a glimpse into the fascinating world of framework-design theory.
When it comes to enterprise mobility, the backing of a team experienced in framework design along with the proper allocation of time and the facilitation of resources is paramount to avoid an out-of-control change-spiral—whether during development or years after the release.
Given the requirement-change proneness intrinsic to Enterprise mobile application development, unit testing becomes an inevitable consequence. Any and all changes—particularly those derived from shifts in requirements—must be proven to have not introduced undesired side effects. The early implementation of unit tests across the application will significantly improve end-product quality, as well as provide another tool for streamlining the identification of issues.
Yes, creating unit tests can add to the cost of development. However, this initial investment will undeniably pay huge dividends when an otherwise hard-to-track bug gets unveiled and is fixed in practically no time.
Although software development involves many more practices than those mentioned above, the ones I focused on fit nicely together in a succession chain: the earlier stage gives way for the following stage’s natural execution. For instance, modeling all the (functional and non-functional) requirements towards a well-formed Application Public Interface makes the creation of unit tests a breeze. If your organization needs help with requirements gathering, framework design, unit testing, or any other aspect of mobile application development, please don’t hesitate to reach out to us. We’d love to get you started.
Software Architect at Propelics
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
|cookielawinfo-checbox-analytics||11 months||This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".|
|cookielawinfo-checbox-functional||11 months||The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".|
|cookielawinfo-checbox-others||11 months||This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.|
|cookielawinfo-checkbox-necessary||11 months||This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".|
|cookielawinfo-checkbox-performance||11 months||This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".|
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.