Wednesday, January 18, 2012

The Problem of Analysis and Identification in Software Change Management




Studies in the field of Software Change Management have helped IT managers to identify a number of problem areas in software development. Problems related to software change management tend to occur in five areas: analysis and identification related problems, communication issues, decision-making challenges, effectiveness roadblocks, traceability issues and problems with tools. If we examine each of these we can see a number of important issues that frequently crop-up, especially within third-generation languages (3GL).

Today, I’d like to focus on a high-level review of analysis and identification related problems in software change management. How can we identify and analyze problems in our software to best understand and realize where we have errors that require correction. More importantly, how can we change our approach to application development in a way that reduces the impact and likelihood of errors?

Analysis and identification problems can be seen in several areas. First of all, problems with analysis and identification are driven by concurrent and parallel development approaches. The problems occur because with concurrent efforts it becomes more difficult to determine root causes of program errors. This is exacerbated by the fact that standalone testing does not find the problems leading to the error conditions. Solutions can be found by reducing the number of developers, engaging in  more frequent cycles (such as with agile development or SCRUM), testing without compiling and ultimately by delegating more basic functions to an application platform in a post-3GL approach.

Another factor driving analysis and identification problems is code optimization. For one thing, optimized code, especially optimized C, C# and C++ code is very difficult to understand. In addition, with optimized code, object oriented development tends to create a ripple effect that is not apparent in typical source. Code optimization issues can be avoided by leveraging pre-optimized code, i.e., avoiding heavy 3GL development projects with more advanced development platforms.

A third factor leading to analysis and identification problems comes from the use of shared software components. Here we see impacts across the code base and ripple effects. These can be avoided through better pre-planning, wise use of inheritance principles and by leveraging a platform rather than resorting to line-by-line coding.

The need for high reliability makes the problem of analysis and identification of the impact of software changes particularly important. It is difficult to predict the impact of changes and at times corrective actions may seem difficult or impossible. Avoid this sense of being overwhelmed by engaging in iterative development and testing. Make use of an application platform to better overcome challenges in the analysis and identification of software change management problems. 

Sunday, December 11, 2011

Developing Portable Business Apps for the BlackBerry


In the recent IBM Tech Trends 2011 report,  IBM reported that 70% of the more than 4,000 members of its developerWorks community who participated in a recent survey planned to develop mobile apps for Android. Not surprisingly, a mere 19% planned to develop for iOS. It is interesting, however, that 9% have already indicated plans for WebOS. About 35% and 25% plan to develop mobile apps for Windows 7 and BlackBerry OS respectively. A population bias against Apple’s iOS can be expected in the developerWorks community, so no one should try to read the death of Apple into these numbers. If anything, this is a good indication that while most of the non-Apple crowd will be developing for Android, significant numbers will also develop for Windows 7, iOS and BlackBerry OS, and a growing segment has already focused its attention on WebOS.



Magic Software’s uniPaaS Application Platform provides developers with the ability to develop for multiple mobile operating systems and tailor the look and feel for each mobile environment without having to develop using multiple languages.

To get started as a uniPaaS mobile developer, try attending the live webinar Developing Portable Business Apps for the BlackBerry. The webinar will be broadcast live Wednesday, December 14, 2011 11:00 am Pacific Standard Time or may be viewed as an on-demand recording here after that date.  

The webinar description states that: “Now you can develop business apps for the BlackBerry that can be easily ported to other mobile platforms as needed in the future. Get just the right level of functionality, interactivity and integration with back-end systems for your BlackBerry users today while preserving your options to deploy to native Android, iPhone or Windows Mobile environments in the future. See a hands-on demonstration and see how the same application platform can deploy cross-platform HTML5 apps as well.”

Tuesday, November 29, 2011

Building Apps Quickly with uniPaaS and the SQLite Gateway




Magic Software’s uniPaaS Application Platformincludes a SQLlite gateway to support the SQLite database. So does uniPaaS Jet, the free distribution single user version of Magic Software’s uniPaaS application platform.

Those already familiar with SQLite will know that it is a single user, self-contained transactional SQL database engine that does not require a server or any installation or configuration.

The SQLite gateway is integrated in uniPaaS and available with every installation of uniPaaS.
SQLite can be thought of as a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite claims to be the most widely deployed SQL database engine in the world and the source code for SQLite is in the public domain.

uniPaaS Jet supports the SQLite DBMS exclusively. The SQLite database, a single-user database embedded in uniPaaS Jet, comes bundled with the platform, eliminating the need to install it separately.

Once again: SQLite is a single user database and is not intended for handling and manipulating data from multiple, concurrent users. Commercial releases of uniPaaS support multi-user databases such as Microsoft SQL, Oracle, IBM DB2, and any other data source through ODBC.

When working with SQLite in uniPaaS, keep the following in mind: 

Table Position
SQLite supports rowid as the table position. The default position is ROWID. Every row of every SQLite table has a 64-bit signed integer key that uniquely identifies the row within its table. This integer is usually called the "rowid". The rowid value can be accessed using a special case-independent name: "rowid". The data for each table in SQLite is stored as a B-Tree structure containing an entry for each table row, using the rowid value as the key. This means that retrieving or sorting records by rowid is fast. Searching for a record with a specific rowid, or for all records with rowids within a specified range is around twice as fast as a similar search made by specifying any other PRIMARY KEY or indexed value.
To be clear, a B-tree is a tree data structure that keeps data sorted and allows searches, sequential access, insertions, and deletions to occur rapidly and efficiently.
Get Definition
For SQLite, if the primary key is a single column that auto-increments, the Get Definition utility will not bring the key into the table structure. This is because there is not a separate index using the column. The index internally refers to rowid.
Hints
Hints are not supported and will be disregarded.
Isolation level
Isolation level cannot be changed. Any changes in the DBMS will be disregarded.
Joins
A join is used to combine rows from multiple tables. Inner Joins are  the most common type of join. Inner joins return all rows from multiple tables where the join condition is met. Outer  Join returns all rows from one table and only those rows from a secondary table where the joined fields are equal (the join condition is met).Inner and Outer joins should be implemented using the same syntax as in the SQL Server.
Transactions
A transactional database is one in which all changes and queries appear to be Atomic, Consistent, Isolated, and Durable (ACID). SQLite implements serializable transactions that are atomic, consistent, isolated, and durable, even if the transaction is interrupted by a program crash, an operating system crash, or a power failure to the computer. In uniPaaS, SQLite physical /deferred transactions are supported.
Array fetching
SQLite does not support array fetching. Therefore, the array size setting will be disregarded and the records will be fetched one record at a time.
Parallel execution
A single uniPaaS engine, or multiple engines on the same machine, may access SQLite via parallel programs. In such a case, only one thread/EXE can open a physical transaction, since the SQLite file is exclusively locked.
APG
Using the Automatic Program Generator (APG) in DSQL SELECT statements will result in the Null Allowed column property being set to Yes.
Identity
Identity should be defined as Type INTEGER PRIMARY KEY.
SQLite does not allow more than one INTEGER PRIMARY KEY fields.
Identity fields are stored as INT64 data types in SQLite; therefore, you should create a Numeric field to hold 8 bytes of data.

There are two other limitations of SQLite worth noting for the uniPaaS developer. You cannot use the ASCIIChr SQL function which converts a number to a corresponding character in the ASCII character set. You also cannot use the InStr function, which returns a number that represents the first position of a sub-string within an Alpha string or an Alpha expression, or at least you cannot use from within a SQL Where range.

SQLite is just another great addition this year to the Magic of uniPaaS.



Monday, October 24, 2011

Enterprise Mobile Mashup Delivers Actionable Information


It’s one thing to be connected via your mobile to relevant information 24/7 and it is quite another to be able to do anything about it. The difference between information and action is the difference between email and apps. On the other hand, action without proper access to information can be dangerous. The solution: enterprise mobile mashups.

As David Akka, Managing Director of Magic Software Enterprises UK points out: “Enterprise Mashup is not something new. Enterprise Mashup is a concept that has been used by many, many enterprises to try to bring information from multiple systems into one coherent view. If you look at the consumer market, for example, estate agents, it’s easy to take information from a property database put it on Google Maps and take information from a police database and put it on the same map in order to present some sort of information to a future purchaser. 

“ The whole concept of that actually has started to take off with mobile devices,” says Akka, eagerly pointing out why mobile devices are so important to business today. “Gartner basically predicts that 50% of the workforce by the end of 2013 will use some sort of mobile device. There’s a big argument whether desktops are dead whether mobile devices will overtake them. It’s not really relevant for this point. The point is that on a mobile device the attention span of the user reduces significantly from about 2-3 minutes to about 1 minute.”

Since the mobile user may be paying attention for a shorter period of time, they urgently need accurate data streaming to their device and the ability to act on that information by providing an approval, submitting an order, updating location, etc. Enterprise mobile mashup requires the "round trip capabilities" to pull information from enterprise systems, display information in mobile apps, take action from the mobile device and update the backend systems. And with user preferences and loyalties to a wide variety of devices -- BlackBerry, Android, iPhone and Windows Mobile -- there is a need to provide enterprise mobile mashup via cross-platform, cross-device mobile enterprise application platforms that allow core application logic to be used on any mobile smartphone.

David Akka’s excellent interview on Computing.co.uk not only discusses the possibilities but also demonstrates the smarter approach that Magic Software’s iBOLT Integration Platform and uniPaaS Application Platform take in creating enterprise mobile mashup with backend systems such as SAP, Salesforce, Oracle, PeopleSoft, JD Edwards and so on. 

Saturday, October 15, 2011

Creating a Branded App with Magic Software's uniPaaS Application Platform: Mastering the Z-Order of Controls

Creating a Branded App with Magic Software's uniPaaS Application Platform: Mastering the Z-Order of Controls





There is a lot of talk today about the branded app. These are usually mobile apps but sometimes a branded app needs to be a web app or at least an application delivered via the Internet such as a RIA app that floats in a window above the browser -free of all the security and reliability issues that the browser itself imposes. So recently, as the Magic teams from France, Germany, Israel and the Americas headed to Dreamforce ’11 (#DF11) I found myself wanting to keep track of all the sessions we would be participating in at the conference.  Unfortunately, the Dreamforce Chatter application didn't have that functionality. It seemed to me that I ought to be able to add meetings and appointments to the My Calendar section of the Dreamforce app, but alas, I could only add the sessions for which I was eligible to register. So with a little creative daydreaming, I started to wonder, how I might create an event calendar application in uniPaaS and make it look like a branded app for Dreamforce. That exercise got me thinking about the Z-order of controls. 


The uniPaaS Dot Net Tutorial provided the perfect sample program in Events .NET Calendar. But I wanted to make it look like a Dreamforce application. So with a little help from my browser, Photoshop and an understanding of the Z-Order of Controls in uniPaaS, I was able to get my sample application to look just the way I wanted. I wanted a branded app.



From the uniPaaS Jet Dot Net Tutorial, I clicked on the Programs Repository in the Navigation Pane in the upper right and then zoomed (F5) on the Events .NET Calendar. This opens the program in the Studio. I wanted to play with the look of the program because the Control itself was kind of a drab gray typical Windows control.
The first step was to find a couple of images that I wanted to use. My preferred graphic image editor is PhotoShop. I pasted a couple of images into PhotoShop and saved them as JPEG files.

Back in uniPaaS Studio, I selected the Forms tab and zoomed (F5) on the second form which was also named Events .NET Calendar. On the uniPaaS Studio Forms Control Pane, I selected the Image icon and then clicked on the approximate position where I wanted the upper left corner to appear.


Some tweaking of the image position was needed. So the precise X, Y coordinate can be set for the image’s Navigation Control Properties.



The Z-Order of controls in a form is the depth of the controls as you insert them. The Z-Order becomes particularly important when you superimpose controls on top of one another.
Here is an example where images and controls are partially overlayed. You will note that one of the two women in the photographic image is not visible. Why? Because the Z-order of the entire image is essentially underneath the .NET control that contains the calendar.



uniPaaS recognizes two groups of controls with regards to Z-Order:
Group I
Group II
Push buttons
Check boxes
Radio buttons
Sliders
Combo boxes
List boxes
OLEs
RTFs
Tree Control
Subforms
Browser Control
Images
Tabs
Static controls
Edit controls
Lines
Groups

You can rearrange the Z-Order within the two groups, but not between them. uniPaaS automatically arranges the Z-Order between Group I and Group II controls. For example, if you were to place an Edit control on top of a Push Button control, the Z-Order would arrange the controls so the Push Button control would be placed in front. You cannot bring a control from the second group in front of a control from the first group. You use theArrange context menu or the Command palette to display or change the Z-Order of controls on a form.
To adjust the Z-order you have to make sure Automatic Z-Order is not selected on the Command palette. That’s the  icon shown here. You should also learn how to use the other icons to Bring Forward One Level, Send Back One Level, Bring to the Front, Send to the Back and Display the Z-order.
So with very little effort, a ho-hum control can be enhanced with the use of images and become a branded app. When I deployed my Magic Software uniPaaS Application Platform RIA program in a Window over the Dreamforce web page the result was very pleasing from an aesthetic standpoint. 






Friday, October 14, 2011

Learning to Program with uniPaaS


Whether you are a beginning programmer or an experienced hack, learning to program with the Magic Software  uniPaaS Application Platform  is pretty exciting because of the way the application platform allows you to focus on the application design and business logic rather than on the underlying architecture and housekeeping tasks normally associated with programming. With uniPaaS you can create anything from mobile apps to cloud applications and of course standard client-server software as well. 

Magic Software has provided about 1000 sample programs with the application platform to help illustrate all of the capabilities of the platform and make it easier for you to create your own programs.

The sample programs included with uniPaaS are installed in the SampleProjects folder.

Rich Internet Demo: Many of you have seen the Magic Software Rich Internet Demo that is comprised of several applications running in rich client mode. This means they are browser-free, require no plug-in and yet run via the Internet with full connectivity to the server. You can use this platform to create your own cloud or on-premise applications and the RIA demo helps illustrate what’s possible in very basic easy-to-understand samples. The project containing all of the sample programs of the live RIA demo is available at http://riademo.magicsoftware.comand the mobile RIA demo examples can be found at  http://riademo.magicsoftware.com/mobile

Online Samples: A set of online (client/server) examples for multiple client/server ‘how to’ scenarios that are described in the book: Mastering uniPaaS.

Rich Internet Samples:  A set of Rich Internet examples for many rich client ‘how to’ scenarios that are described in the book: Mastering uniPaaS.

Mobile Web Samples:  Web templates based on HTML Merge technology for mobile devices.

.NET Tutorial: A short tutorial with examples explaining how to use .NET in uniPaaS.

All the projects are available with their source code, so you can use them in your applications. 

In addition, to the samples you also have access to the complete resources of Magic Software University. You can also easily download a self-paced course for creating business applications. And for those adventurous programmers who are looking for an excuse to come to “the OC” in sunny California this November we offer uniPaaS courses in our classroom in Laguna Hills, California. Upcoming courses include:




Thursday, October 13, 2011

A Smarter Way to Do Asynchronous Programming


The cover of MSDN Magazine this month carries the main headline: “Asynchronous programming.” Inside you will find three articles about these new proposed features that will make it easier to write code that will help to create efficiencies in Visual Studio applications for asynchronous programming.

The entire article is about how it will be possible in the future to write code that does what the Magic application platform has been doing automatically for its programmers for more than 10 years. Visual Basic and C# don’t have these capabilities yet, but they will in the future the articles proclaim, but it will still require the developer to add special code and the creators of these languages are so far away from a solution that they are using the magazine to solicit feedback on the idea. Wow.

I think it is easy for those of us familiar with uniPaaS seamless efficiency through multithreaded concurrent architecture to forget that other developers must tell their programs how to handle concurrency of task execution. I remember being very impressed with the initial analogy used to explain the Magic engine and the Magic broker: the example used was that of a restaurant with many waiters and a short order cook or cooks who were working on many meals in parallel, breaking down the meal preparation into discrete steps and jumping back and forth between tasks. 

At Magic Software, we talk a lot about how our advantage is a metadata driven architecture, but when you read the articles in this month’s MSDN Magazine it crystallizes some of the low-level nonsense that other developers put up with every single day without realizing that it Is a complete waste of time for them to be creating business applications in those languages (and don’t get me wrong, Java is no better). The sad thing for these developers is that they have to add lots of instructions to their code to tell the program how to process tasks concurrently. Really, in 2011 programmer drones are paid six figure salaries and still writing the same code concepts over and over again? 

Thankfully, there is a smarter way to do asynchronous programming and achieve highly efficient applications without giving it a second thought. That approach is found in Magic Software’s uniPaaS application platform. Even after Microsoft finishes its "enhancements" to C# and Visual Basic (tough luck if you're using a different Microsoft language) you will still have to manually add "await" instructions to your code. And since there was no thought put into forward-migration and everyone handled concurrency differently, you will have to manually strip out all the old concurrency code. Yuck! The three articles were nice, very enlightening as to the tedium on the other side of the fence, but as for me: here’s three cheers for uniPaaS!

To see a sample business application running in Magic Software's uniPaaS application platform see the RIA demo here. To read more about Magic Software's smarter application platform, see the information on the company website.