Java IoT Authors: Pat Romanski, Elizabeth White, Liz McMillan, Zakia Bouachraoui, Yeshim Deniz

Related Topics: Java IoT

Java IoT: Article

The Proof Is in the Concept

The Proof Is in the Concept

In a large project, designing for performance often turns out to be a chicken or egg situation. In a J2EE project, this is even more evident. Typically when business and functional requirements are handed down to the technical team, the first step is to map the functional subsystems into software components, and then to hand out the design of those components to respective team leads for design and implementation. This is part of the responsibilities of the project architect. At this stage in development, the onus is on the architect to make decisions on identifying potential bottlenecks in the system and recommending alternatives based on standard architecture patterns and guidelines.

In an ideal project, the design of each module involves taking all the performance characteristics into consideration and building out the functionality. If a formal design and development cycle is followed, the team may be able, even enforced, to take care of performance issues early on in the project. However, the luxury of doing this is often not there. Typically, most projects are driven by an urgency to demonstrate the functionality of the system to the client. Although well-coordinated teams design and develop with performance criteria in mind, focusing on performance issues puts the team in danger of missing the boat.

One of the reasons such projects lead to disaster is that often a technical proof-of-concept initiative that's undertaken at the beginning of the project ends up creating the framework for the full solution. A common point of confusion between different stages of a project is the proof of concept (POC) and the prototype. A proof of concept is geared toward demonstrating functionality. A prototype should be an implementation of the full solution that tests minimal functionality. A proof of concept doesn't need to consider performance characteristics, while a prototype should tweak out performance characteristics before the full functionality is implemented.

In a J2EE project, the architecture of the full solution needs to deal with the issues of load balancing across different hardware machines: integration with legacy systems; decisions on using the best technology such as EJBs versus JDO, application server clustering, etc. On the other hand, a POC needs to primarily deal with deployment in a minimal environment to demonstrate maximum functionality.

The support provided by the J2EE platform to implement different stages and environments is quite good. Application servers allow the same code base to be deployed in different environments with well-defined migration paths. For example, you can deploy multiple applications in the same instance of the server, multiple servers on the same machine, or multiple servers on different machines. If you've designed the code base correctly, the migration from one to the other should be well defined. While a POC typically has "throwaway code," designing with migration in mind facilitates at least some degree of reuse.

My current client has opted to invest both capital and resources into a well-defined POC. I think this is a worthwhile investment. Our project team is well aware of the life cycle of the POC, and the compromises we are making in terms of performance, the different architectural configurations, and the different issues involved in migration. This becomes even more crucial when integrating new third-party tools into the architecture. In our case, this involves a J2EE-compliant business rules engine and a workflow engine.

Organizations that decide to invest in such initiatives early on in the project end up working smarter and not harder. J2EE offers the capability to achieve this from a platform perspective as well as in the form of well-documented guidelines and patterns.

More Stories By Ajit Sagar

Ajit Sagar is Associate VP, Digital Transformation Practice at Infosys Limited. A seasoned IT executive with 20+ years experience across various facts of the industry including consulting, business development, architecture and design he is architecture consulting and delivery lead for Infosys's Digital Transformation practice. He was also the Founding Editor of XML Journal and Chief Editor of Java Developer's Journal.

Comments (2) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.

Most Recent Comments
Michael Neumann 05/07/03 03:24:00 AM EDT

Although there was an attempt to clarify the meanings of "Proof-Of-Concept" and "Prototype" I have to disagree.
Actually a Proof-Of-Concept ought to do exactly that: give a solid feedback upon the basic charactaritics of a specific concept. Therefore any statement wath a POC has to proof is dependent on the concept and can't stand for its own. With a concept for the algorothmic layout of a GUI for example you might not need to proof the performance. On the other hand if the concept you're trying to proof is a concept concerning data-transfer with optimization for time & space your POC would have to address exactly these aspects.

Chris Thompson 05/06/03 08:10:00 PM EDT

I am a bit suprised that the word Test was not mentioned in an article about Performance. Perhaps Test is included in the POC resources that the article mentions the client is making available. I don't think that one needs to understand the particular definitions or distinctions between a Proof-Of-Concept and a Prototype that were given, but at whatever stage of the project you should have some customer performance requirements that have been expressed somehow (otherwise why bother considering performance) for which you can define and execute a test. At the POC/Prototype stage you shouldn't need any fancy tools, just a written definition of how the test should be setup and a wristwatch for timing how long it took. Even at the paper stage, you should be able to define a test and execute it, for example, when the user hits the submit button how long do you think or estimate that action would spend in each sub-system of the design before the response is seen? Given that time is not free, you can't test everything and test for everything regarding performance, but there should be a vital few performance requirements for which you can. Also early on you may not be able to simulate thousands of users on your system, but you should be able to define a test and how it would work, and from that be able to analyze the pieces of your system would handle those users without crashing for example. What I like about this approach of defining and testing for performance from the beginning is that it helps the development team know what's important, and it allows you to explore the performance requirements further with the customer early on. Maybe a performance requirement is reasonable, maybe not, maybe it would be if you had another million dolars of hardware for the final production system, or maybe the customer would rather have you spend your time focusing on a different performance requirement that is more easily quantified. Another benefit is that provided you have executed and recorded the test results at each stage, it can show progress to the team and the customer as the performance (hopefully) increases from stage to stage or release to release. So my suggestion is to consider testing for the vital few performance requirements from the beginning of the design as that will help you produce a better system sooner. Thanks for the article.

IoT & Smart Cities Stories
DXWorldEXPO LLC announced today that Ed Featherston has been named the "Tech Chair" of "FinTechEXPO - New York Blockchain Event" of CloudEXPO's 10-Year Anniversary Event which will take place on November 12-13, 2018 in New York City. CloudEXPO | DXWorldEXPO New York will present keynotes, general sessions, and more than 20 blockchain sessions by leading FinTech experts.
Apps and devices shouldn't stop working when there's limited or no network connectivity. Learn how to bring data stored in a cloud database to the edge of the network (and back again) whenever an Internet connection is available. In his session at 17th Cloud Expo, Ben Perlmutter, a Sales Engineer with IBM Cloudant, demonstrated techniques for replicating cloud databases with devices in order to build offline-first mobile or Internet of Things (IoT) apps that can provide a better, faster user e...
Bill Schmarzo, author of "Big Data: Understanding How Data Powers Big Business" and "Big Data MBA: Driving Business Strategies with Data Science" is responsible for guiding the technology strategy within Hitachi Vantara for IoT and Analytics. Bill brings a balanced business-technology approach that focuses on business outcomes to drive data, analytics and technology decisions that underpin an organization's digital transformation strategy.
Charles Araujo is an industry analyst, internationally recognized authority on the Digital Enterprise and author of The Quantum Age of IT: Why Everything You Know About IT is About to Change. As Principal Analyst with Intellyx, he writes, speaks and advises organizations on how to navigate through this time of disruption. He is also the founder of The Institute for Digital Transformation and a sought after keynote speaker. He has been a regular contributor to both InformationWeek and CIO Insight...
Rodrigo Coutinho is part of OutSystems' founders' team and currently the Head of Product Design. He provides a cross-functional role where he supports Product Management in defining the positioning and direction of the Agile Platform, while at the same time promoting model-based development and new techniques to deliver applications in the cloud.
Andrew Keys is Co-Founder of ConsenSys Enterprise. He comes to ConsenSys Enterprise with capital markets, technology and entrepreneurial experience. Previously, he worked for UBS investment bank in equities analysis. Later, he was responsible for the creation and distribution of life settlement products to hedge funds and investment banks. After, he co-founded a revenue cycle management company where he learned about Bitcoin and eventually Ethereal. Andrew's role at ConsenSys Enterprise is a mul...
In his session at 21st Cloud Expo, Raju Shreewastava, founder of Big Data Trunk, provided a fun and simple way to introduce Machine Leaning to anyone and everyone. He solved a machine learning problem and demonstrated an easy way to be able to do machine learning without even coding. Raju Shreewastava is the founder of Big Data Trunk (www.BigDataTrunk.com), a Big Data Training and consulting firm with offices in the United States. He previously led the data warehouse/business intelligence and Bi...
Cell networks have the advantage of long-range communications, reaching an estimated 90% of the world. But cell networks such as 2G, 3G and LTE consume lots of power and were designed for connecting people. They are not optimized for low- or battery-powered devices or for IoT applications with infrequently transmitted data. Cell IoT modules that support narrow-band IoT and 4G cell networks will enable cell connectivity, device management, and app enablement for low-power wide-area network IoT. B...
The Internet of Things will challenge the status quo of how IT and development organizations operate. Or will it? Certainly the fog layer of IoT requires special insights about data ontology, security and transactional integrity. But the developmental challenges are the same: People, Process and Platform and how we integrate our thinking to solve complicated problems. In his session at 19th Cloud Expo, Craig Sproule, CEO of Metavine, demonstrated how to move beyond today's coding paradigm and sh...
What are the new priorities for the connected business? First: businesses need to think differently about the types of connections they will need to make – these span well beyond the traditional app to app into more modern forms of integration including SaaS integrations, mobile integrations, APIs, device integration and Big Data integration. It’s important these are unified together vs. doing them all piecemeal. Second, these types of connections need to be simple to design, adapt and configure...