Posted by: ahmedashfaque | July 16, 2018

Multinational online store project

I have created a multinational online store software product. Some of the salient points include:

  • As many countries can be created in the system as required.
  • Create currencies for each country.
  • Support for different pricing for each product for different countries.
  • Session management for browsing

You can download the source code of the project from the below files. All instructions are contained in the files themselves.

Java classes

database script

JSP files

Technical and user manual

This project is part of my book “Software Engineering in the Agile World”.

Posted by: ahmedashfaque | June 26, 2018

Functional programming vs. object oriented programming

Recently I have been creating a lot of software products for students. In these projects, I use both functional programming and object oriented programming. Even though most people discourage using functional programming, I find that each type of programming has its own benefits and drawbacks. So here are my takes on both techniques. Please also note that I have compared these 2 techniques for web based applications.

Object oriented programming revolves around interactions of objects during run time of any software product. These objects contain their own data (attributes) and have their own behaviors (methods). You can imagine them as similar to real world objects. At the same time, you also need to keep saving data generated from these interactions in a database. One problem area about this aspect is that you need to create and maintain these objects and only afterwards you think of saving generated data in the database. In many cases, this turns out to be an overhead. Suppose, you need to create all these objects for saving generated data just once and then you need to create another set of objects and again need to save data to the database just once. Definitely it looks like creating all these objects just once and destroying them after saving data to the database is an inefficient way of programming. In such cases, functional programming will do the job in a better way. In functional programming, only small pieces of code may need to be written and data will be saved quickly in a database. There won’t be any overhead involved here.

In one more instance where functional programming will be better suited is in cases where there is lots of intermingling of request and response events are involved. Generally in web programming, a form is presented to a user and the user provides some inputs on this form. This is the request part of events which happen with web based software products. Based on this request, the business logic of the software product gets invoked and some response events take place. Now suppose, some part of the response from an earlier request also need to be handled at the same time, a new request event need to be managed. In such a scenario, object oriented programming is not easy. Functional programming works better here.

From the above discussion, it appears that when coarse grained programming is required then object oriented programming is better. But when fine grained programming is required then functional programming works better.

Posted by: ahmedashfaque | April 25, 2018

Software engineering in the agile world: Indian edition

My book “Software Engineering in the Agile World” was published on Amazon on January 4, 2018. The Kindle edition has a list price of USD 9.80 and the paperback edition has a list price of USD 27.50.

I wanted to give my readers a better price than what is there on Amazon. So i have published “Software Engineering in the Agile World” book in India with a list price of USD 8.5 (Indian Rupees 550.00). It has been possible for me to reduce list price of my book extensively as book publishing costs in India are much lower compared to costs in other countries.This book is also available for shipping to other countries. Due to high shipping costs, the total cost for the book may be high to countries which are far away from India. However if the book is shipped in bulk then shipping costs can be reduced extensively. So I am looking for people who want to purchase my book in bulk and distribute it in their countries. In USA, the total cost may come to USD 14.50 per book if purchased in bulk. This cost is much lower than the list price of USD 27.50 quoted on Amazon for the same book.

“Software Engineering in the Agile World” is already being used or approved for software engineering courses at many universities in countries including USA, India, Bangladesh, Pakistan, Nepal, Jordan, Iran, Malaysia, Egypt, Kuwait, Israel, Australia etc.

I hope more and more people will benefit from the lower costs of my book. The publisher Flushing Meadows Publishers is my own publishing house. So you will always get best support when you buy it.

Posted by: ahmedashfaque | April 23, 2018

Why object oriented programming seems difficult?

Most people will agree that object oriented programming seem difficult as compared to functional programming.  Let us understand why this is so.

In functional programming, you create a function when it is required and do all the required computation through this function. For example, suppose you are creating a web page where a customer is buying a product from the online store. In this case, you will create a function on the same web page which is used for creating customer orders (which will provide the functionality so that the customer will be able to successfully create an order to buy a product from the online store). In functional programming, software source code is almost always is written at a place where it is needed. Only some utility functions are written and stored and is called when it is needed. For example, you can create a security module and call it whenever security checking is needed (for example to ensure only a verified person has access to secured portions of a software product).

In object oriented programming, you create classes and write all the functions inside those classes. The functions thus are not written where they are actually used. So in most cases, functions are called when they are needed. For example, if the online store was being built using object oriented programming (e.g. compiled Java classes) then things would be done differently. Instead of writing the software source code for creating orders for the online store; the source code will be written inside Java classes and not directly on the web pages. These Java classes will then be called from the web pages to provide the required functionality.

Writing code directly at the place where they are needed is very straight forward. So programming job is simpler. But when code is written at some place and then used at some other place makes programming more difficult.

This is the reason, object oriented programming seem more difficult than functional programming.

Posted by: ahmedashfaque | March 14, 2018

Technical support software product free download

Today I have completed design and implementation of a software product which can be used for providing technical support. This software product is part of my effort to provide many software products to students and budding software engineers so that they can learn how software products are built. I have provided complete documentation as well as source code free of cost. You can download them from this website from the software engineering page – I am also providing links to the files below:

  1. Java Server page files
  2. Java class files
  3. database design
  4. Technical documentation

This effort is part of my book “Software Engineering in the Agile World“. This book has become a textbook at many universities in countries including USA, India, Bangladesh, Australia, Canada, Jordan, UAE, Israel, Pakistan etc. Professors from around the world are praising this book for its simple and easy to understand language, excellent linkage between software engineering processes and Scrum processes, excellent object oriented design and programming coverage etc.


Posted by: ahmedashfaque | January 26, 2018

Software Engineering in the Agile World

I love doing 2 things in life: writing books and creating software products. The twain meet through my books and accompanying software products. I have been writing textbooks on subjects related to software engineering for the last 10 years. My previous book “Foundations of software engineering” was received well at many universities in USA, India, Canada, Australia, UAE, Nigeria, Jordan, Israel, Malaysia and universities in many other countries.

I have written my new book “Software engineering in the Agile World” based on the feedback I received from many professors from Universities around the world. Some important features in my new book include:
* Hands on approach to learning software engineering,
* Easy to understand object oriented programming concepts,
* Database programming including Entity relationship diagram,
* Model-view-controller architecture,
* Building a software product as a Scrum project,

* Use of agile models (Scrum) in building software products, etc.

I have used an easy to understand language in writing my book so that it is easy to grasp even difficult concepts of software engineering by almost anyone. No prior knowledge in software engineering including software programming is assumed from readers of my book to understand the concepts provided in my book.

A complete case study to build a complete software product is provided in my new book “Software Engineering in the Agile World”. The case study is based on creating a smart city system which will provide information about various facilities available in a city (parks, zoos, museums, restaurants, malls, colleges, libraries, industries, hotels etc.). All the requirement specifications, software architecture and software design is provided in the book. The source code of this software product can be downloaded from my website This case study is based on Scrum. The software product is built incrementally. The Release and Sprint plans have been created accordingly (there are 10 Sprints in 3 Releases of the software product). I have also provided the design and source code for this project on my Google drive. To access my google drive, you will have to send an email to me as all material there is not in public domain.

A recorded video lecture series on a course in software engineering is provided on my youtube channell. This lecture series is completely based on my book. All the videos are contained inside my youtube channel
I have also provided all the instructions (including youtube videos at the channel mentioned in the above link) as to how to install the source code of the software product and run the application. If you still find difficulties then you can send me an email and I will help you out.

More case studies based on object oriented software design and Scrum are available on my website ((given above) and on my Google drive. I will also keep building some more case studies on new technologies (mobile platforms, Artificial Intelligence etc.). All this material will become available on my website and Google drive.

You can buy my book from Amazon. The landing page is provided at The book comes in 2 formats: Kindle and paperback versions.

Warm Regards

Ashfaque Ahmed,


Posted by: ahmedashfaque | September 29, 2017

Why Agile is beautiful?

In Agile methods of developing software products; the emphasis is on thinking small at a time. Project teams work on developing small software products at a time. The small software product referred here is actually a set of software product features, which can be developed and can be deployed within a short period of time (1 weeks to 4 weeks). This is an enormous gain on traditional software development methods which used to take 6 months – 1 year – or even many years.

In many cases, by the time, the software product was ready, it had already become obsolete. You can easily imagine this kind of scenario where a software product being developed took 2 years to complete. By that time many changes may already have occurred in technology (mobile technology including operating system etc.) or business processes (tax system, company focus etc.). So taking such a long time in developing a software product was always a bad idea (may be good when things were not changing that fast. Some 50 years ago or so).

Agile methods changed all that. Now project teams do not consider to build a large software product over a long period of time. Instead they build small increments over a small time frame of some weeks. These small increments in software product are actually some software product features which are developed as per current market demand. This means that software development is always in synch with the market. The beauty lies in the fact that, these small increments in the software product are always executable and thus are a new version of the software product. These software product versions are shippable and can be used  by end users.

Posted by: ahmedashfaque | August 26, 2017

Smart city system project source code

Source code for Smart city system:

I have created another case study for my book “Foundations of software engineering”. I am giving the source code for this software product free to everyone so that people can learn how to build good software products. You can download it freely from the software engineering page.

I have ensured that there are no error in the software product itself. But the source code files may create problems while installation as they are on Microsoft word file. java is very case sensitive and so if any file names have uppercase letters then please make them all lower caps.

The entire source code of the Smart city system is contained in the following Microsoft word files. You can download these files and then separate out various web pages and class files. The web page names are given and below them is the code. Just copy the content of each of the file on a separate HTML page if it is a jsp file, In case of java files, create a package named “smart_city” and create java files as per the java file names given in the java class files document and then paste appropriate source code in each of the class files.

There is also a database creation script file named “smart-city-database.doc”. Install Oracle database and create a user. For this user create the database tables and sequence as given in this document. I have created a user with user name as “city” with a password “city”. If you create a user with different user name and password then provide those user name and password in the “” class file.

If you have problems in installation after downloading then you can send me a mail at and I will try to help.

Download these installation files here:

smart city JSP files

Smart city class files

Smart city technical documentation

Smart city database script

Posted by: ahmedashfaque | July 26, 2017

Software programming – a challenge?

Recently I was working on a project and came on a peculiar problem. I had a single character value coming from method and needed to check its value in another method inside another class.

In Java, there are 2 types of variables dealing with strings. One variable deal with only one character. The other variable deals with strings consisting of more than one character. Generally the string variable type should also be handle single characters. This is the general common sense. But not so in Java.

I had this single character variable value coming from a JSP (Java Server Pages) file. I had to check this value inside a compiled Java class file. I had defined a variable of string type in JSP file and in JSP there is no problem. So I had also defined a variable in my Java class as a string type to check its value.

This program was part of a dynamic web project. I was using Tomcat as the application server. When I ran the program to test i was getting a null pointer exception error in the program. I checked from where this error was coming. I found that the program was not correctly evaluating the checking of the character variable and thus wrongly executing the next piece of code and giving error.

So I had to change the variable type to character from string. When I ran the program, this time it was not giving error.

Programming in any case is not easy even when you have all the tools to debug and test and get error description. Even when your logic is correct, your program may not run correctly due to these small compiler problems and you need to be careful.

Posted by: ahmedashfaque | June 12, 2017

What is a servlet in Java?

In object oriented programming languages, there is a need to create many classes resulting from the breaking of the entire software product. These classes keep all the programming code. Interaction among all these classes is done through method calls.

In Internet programming (software products hosted as websites), writing source code for the software product is a bit difficult. It is because, there are so many components (servers) get involved: you have a database server, an application server, a web server etc. Due to this type of architecture, all outcomes of computations which need to be displayed to the user should be in HTML format so that it can shown on the user web browser.

Due to these practical considerations, the source code needs to be written in scripting languages or a combination of compiled code and scripting languages. Since scripting languages are interpreted and thus run slow (performance issues will arise), writing source code in compiled classes is far better.

But when you have your source code inside a compiled class then accessing it from HTML or scripting web pages is impossible. There is only one way to do it. Define the path of the compiled code file in an XML file and then call this piece of compiled code in your scripts.

In Java programming, servlets are the compiled classes which can be called from scripts. All other compiled classes need to be accessed from scripts only through the servlet classes.

Older Posts »