Tuesday, October 6, 2015

Tuesday, December 9, 2014

Agile Development for IoT Solutions

Development for IoT  will include multiple domains such as  green building, smart grid, industrial  monitoring, agriculture, smart cities, healthcare, connected homes, telematics and supply chain, safety and security, forest and wild life, automotive, natural disasters, etc. 

Agile development for IoT (Internet of Things) or Internet of Services (IoS) involve three distinct stages as below: 

1. Sensors which collect data (including identification and addressing the sensor/device)
2. Application to collect and analyze this data for further consolidation and,
3. Transmission of data to the decision support system. Agile Analytics may be used for the development of decision making process.

Model Driven Architecture (MDA) can help accomplish agile development fulfilling the fundamental requirement of complex association between data collection points, iteratory / evolutionary development, change management, version control etc. which include modeling of standard interfaces associated with sensors.
For example IoT development for smart cities will include below list of entities
• Smart parking.  • Intelligent transport system.  • Tele-care.  • Woman Safety • Smart grids. • eHealthcare. • Smart urban lighting.  • Waste management.  • Smart city maintenance. • Digital-signage. • Water Management

The data collection point can be done using model for each aggregated entity using the entity model and association between the entities can be defined. Then using entity modeling tool the interface can be modelled using standard message, exception / error messages, events and protocol. This modeling will help to generate soap / REST specification using either XML / JSON / Text format as per convenience.

The entire process can be developed considering future requirement for change management, version control and other non-functional requirement such as single sign-on, caching, HA, event polling or pushing and other utility services which are applicable from case to case. The information flow can be designed using common data model, which will help the application to collect the data and process based on data structure, specific business policy and practices.

Following SOA principles of parallel development of system architecture and business process architecture will help achieve agile development of complete end to end IoT solution.  


Your comments and feedback on specific issues with aggregated entity and association between entities and agile development management are welcome.

Saturday, November 29, 2014

Blogger: Agile Development in Digital World - All posts

Blogger: Agile Development in Digital World - All posts

Agile Development using the right technology and tools

Digital service / system development and managing changes in complex software-based systems requires creativity, agility, and enabling tools. Without preparation for appropriate technology and tools, change is costly and risky.
Agile development is ultimately driven by the suitable state of the art tools and technologies to ensure the holistic objective is met by simply aligning with the Organization structure, goal and process. To ensure effective agile development, choice of right tools based on purpose of the overall product / solution architecture of the business objective plays a critical role.
The discussion revolves around most suitable technology for agile technology and general agreement comes to a point based on wider usages and acceptance globally and at the same time prioritization of competitive non-functional requirement of business goal. In different cases non-functional requirement such as reliability, security, performance, flexibility, operating cost, development cost, customer SLA, customer engagement etc. takes priority among themselves and finally decision is drawn.
In digital world REST architecture and RESTful development is considered to have edges other conventional technology such as Soap / WSDL considering few non-functional requirements to have higher priority over others and there is whole gamut of standards, guidelines and best practices are evolving to make use of REST / JSON web services. On the database layer SQL vs NoSQL is also being discussed to take care of unstructured and structured data together.  On the middleware similar options available on hub / spoke, publish / subscribe, workflow, ESB concept supporting multiple technologies.
Once the technology is finalized based on complete end to end requirement of the project, the decision on selecting tools becomes critical to bring agility on the ground. The situation here requires thorough understanding on pain point for sponsors to effectively benefit from agile development and it should not lead to achieving one or two objectives like reducing timeline at higher cost and lesser satisfaction by employees or customers.  There are many commercial and freeware tools available to help capture requirement through model to help Model driven development and testing, but with many limitations. Some of the critical requirements of technology and tools are mentioned here for your review and feedback.
1.       Technology should have
a.       Well defined roadmap.
b.      Easy to understand and implement
c.       Adhered to best practices, standards and guidelines of established SDOs.
2.       Tools should be able to
a.       Capture all functional and non-functional requirements
b.      Provide version control to facilitate change management
c.       Create specification and document
d.      Test the system from all aspects such as unit testing, integration testing, system testing and acceptance / functional testing.
e.      Report on progress to meet project requirement
f.        Make presentation on issues, challenges and risks
There are many more points which can be added based on your feedback.
Agile development can be beneficial when everything done for the development of products, services, and solutions is done with most optimized way and at the same time when users of the developed product bring agility in the society. 

Wednesday, November 26, 2014

Agile Development using the right technique

Agile development ultimately driven by the suitable state of the art technique to ensure the holistic objective is met by simply aligning with the Organization structure, goal and process.  Agile development is very much associated with requirement capturing using “User story” template for better alignment. But there are many cases where requirement is being captured using Use Case template, Story Point and Model driven Architecture.
Out of many ways of capturing requirement and defining acceptance criteria, MDE / MDA proves to have advantage over other mechanism due to below reasons.

1.       User Story – Aligns very well with business requirement and business value, but technically bring lot of challenges to handle change request, version control, and effort estimation. Effort estimation using story point has been always ambiguous with a degree of accuracy varying from +/- 30% and this figure in effect introduces 60 % risk to project timeline and cost.

2.       Use Case – This technique is not very often used with agile development using scrum, but there are many projects, which kick start using Use Case document. This technique of requirement capture is subject textual description of all functional, behavioral, non-functional and system requirement, which always brings in understanding gap between the customer and developer. And also this technique brings in all challenges such as change management, version control and effort estimation.

3.       MDA / MDE – This technique has been used but very rarely in Agile development for digital services and it proves to be much more reliable and overcome many short coming identifying through user story and use case template for requirement capturing. The major advantage was observed with the viewing of business requirement, implementation, effort estimation and version control.
 MDE / MDA tools are available today which transform the business model to database in SQL or NoSQL format, generate specs for Soap, REST and many other technologies. The tools are capable of capturing non-functional, behavioral and functional requirement and combine them to Database, API and connectors for realization of business requirement. This mechanism brings in lot of advantage over other technique. However it is open debate and discussion.

Your feedback and comments on advantage and disadvantages of various techniques are welcome. 

Monday, November 24, 2014

System Development using the Agile process

Successful digital service providers will be the ones who are agile and fast-moving, highly efficient and customer-centric and those who know how to partner to deliver the services their customers want.
 
Agile development is in practice for a decade now and still many organizations prefer to continue in their traditional process for software development instead of adoption of agile process. The current situation is not because the benefits of agile development is not well understood, but due to lack of micro level plans for adoption.  There is possibility for every software project to adopt development principles and manifesto to large extent. Typical list of process steps are mentioned below.
 If all processes and principles mentioned in agile processes are followed in an ideal condition, then project success rate in terms of meeting timeline and budget is likely for more than 90 % project. But in reality the success rate is very low and that brings the question mark on where things go wrong. Most important among all points is the customer and customer interaction, which never happens. Agile process makes it little linear by mentioning that customer proxy can take the role of customer in case customer is not available due to the busy schedule. Most of the failure happens due to this reason as agile process story estimation and story point computation starts with proper understanding between the group of developers and customers.

The root cause of agile project failures are due to below mentioned reasons, which worth noting to incorporate in the successive agile projects.

    1.       Involvement of actual customer rather than proxy customer
    2.       Include the cost of customer/s time in the budget
3.       Ensure technical customer and cost controlling customer/s are included for collaboration with          the development team, which is very difficult to achieve in mega projects.
4.      There should be some other parallel collaboration between customer and developers other than       system / software development.  For example some team game or cooking or trekking should               be considered as other areas of collaboration which opens up understanding of body language             with ease during discussion on stories and acceptance criteria.