Posted by: ahmedashfaque | October 21, 2014

Difference between a human brain & a computer – part 3

In last post we have seen how computers evolved in last 5-6 decades to take on more and more functions resembling a human brain. We will continue this discussion in this post.

Now a days a lot of research is being done by computer scientists to make computers think like a human brain. Now computer technology is making much progress towards making computers to think by using technologies related to learning abilities. Human brain learns from experiences. When a toddler accidentally touches a hot object, it realizes what could be hot object and how touching a hot object could be harmful. in fact human brain develops and understands much of the physical world by learning from experiences. Without this learning ability of the human brain, an adult brain could be as good as that of a 6 year old kid.

How a computer scientist will make a thinking computer? Traditionally computers were a merely computation devices. You give some input in form of some instruction to a computer and the computer will do computation and give you output. If you want the computer to think then you will have to create learning libraries and install them with the computer. Whenever a computer encounters some problem and doesn’t know the answer, it will be given ability to search previous experiences which are similar to the present one (though not exactly the same) and infer and find out a close solution and then take it as a learning lesson. Next time, the same problem is posed to the computer, it will not have problem in giving the right answer. this is how a human brain works.

Creating such a functionality in computers has been difficult. it is becoming a reality only now. Techniques like fuzzy logic is used to infer a solution from searching close alternatives already existing in the memory of a computer and finding out the most close alternative out of all alternative solutions. Some searching algorithms used these days include Tabu search, annealing algorithm etc.



Posted by: ahmedashfaque | October 20, 2014

Difference between a human brain & a computer – part 2

In the last post we had seen how a human brain works. We will continue to discuss further in this post.

When computer scientists thought of making a machine which can do some work similar to what a human brain does, the first thing which came to their mind was doing calculations. As has been seen in the last post, human brain keeps doing some kind of calculations all the time, but it was realized that there is a shortcoming to the way a human brain does calculation. This shortcoming is that it is slow in doing so. A computer can do faster calculations.

This realization led to making of first mechanical computers (or rather calculators). These calculators could do calculations faster than a human brain. Then by 1041 diode valve based computers were invented. These large computers could not only do calculations but could do some more. Algorithms were developed for these computers and using punch cards, many tasks like finding out scientific calculations could be done. As computers evolved more, many kinds of applications were developed and computers keep doing more and more kinds of stuff. By 1960’s computers were able to do complex things like making business plans, help companies doing everyday business by executing business transactions etc.

Since then the main use of computers have been in using them in business. But advance in computer technology also helped them being used in other areas like making weather forecasts, using them in defense intelligence, making computer based games, using them in communications field etc.

Now that use of computers have been firmly established in many fields, computer scientists are building computers which can think like a human brain. Computers can now see, feel, smell, hear and taste like a human being though not at the scale at which humans can do these things. But in future we will see computers which can do all these things at par with a human being can do these things.

Emotions, judgments and complex thinking process of a human brain is something which a computer is still incapable of. But with more advances in computer technology, these things will become a reality soon.

Posted by: ahmedashfaque | October 19, 2014

Difference between a human brain & a computer part 1

Ever since computers were invented, computer scientists have tried to emulate the human brain in building computer systems. After all computers are supposed to do calculations and many functions which are done by a human brain.

Off course primitive computers of the early days were able to do very basic functions. The current computers have become very sophisticated and can do a lot of things. Still when it comes to comparing the human brain, computers are way behind.

Let us first understand how our brain works. We can then move over to see how and where a pot of progress has been done in building computers and in which areas research is going on.

Humans are gifted with senses of vision, touch, smell, taste and hearing. What we see, eat, touch, smell or hear is done though our sensing devices in form of our nose, taste buds on our tongue, ears, eyes and our body. The signals from these sensory organs is sent to our brain and our brain processes these signals and tells us if what we ate was yummy or what music we heard was melodious etc.

Our brain is also capable of processing many types of signals at the same time. This is known as parallel processing. So we can hear & enjoy music and at the same time we can read a book. Imagine if our brain was not capable of doing parallel processing.

For our everyday work , we do a lot of calculations. In fact our brain is doing calculations all the time even without our realization. For instance, when we are shopping for goods, our brain is working and doing calculations and telling us which goods are worth the money we are spending or which dress looks better of the 2 selected dresses when we look in the mirror and trying to finding out a better choice. When we taste a new recipe, our brain does calculations & tells us if the recipe is better than the one we tried last week.

Our brain is the best computer ever invented. We should be thankful to God for giving it to us.

In next post i will discuss more about computers & our brains.

Posted by: ahmedashfaque | October 14, 2014

What is a project division? Excerpts from my book

In instances when it is felt that the requirements are not clear enough to proceed with the later stages of the project, it makes a lot of sense to divide the project into two parts. The first part will deal with developing the requirements to the point where they can be taken for designing the application, and the second part will deal with the development of the software application. This is a good way to remove all uncertainties from the project. The requirement development part of the project may not have a fixed deadline denoting completion (as there is no previous knowledge as to how many requirements are there in the first place), but when the requirements are crystal clear, the other part of the project to develop the software application will have a lot of clarity, and thus, timelines and cost can be predicted with some good accuracy.
One alternative to project division is also available. It can be done this way. First, the customer can ask for open bids from service providers with just the preliminary information which is available about the project. At this stage, price or any monetary information for the project is not included. Once a suitable service provider is chosen, he can be asked to make detailed requirement specifications. These specifications are then handed over to a third party expert who provides project size information based on the requirement specifications. He hands over the project size information to the customer and the service provider. The customer in turn can calculate the required budget for the project given the prevailing market rates for software development costs. The service provider calculates the schedule and the number of people required to do the software development on the project based on its productivity level. So at this stage, project budget, project duration, and the number of people on the project is fixed. Later, if the requirements are modified, then the impact of the change on project schedule, project budget, and project team size can be calculated, and the project information can be adjusted accordingly.

On paper, this arrangement looks good. But what are the weaknesses of this model? Well, one point of contention is how good the bidding process will be. After all, without detailed information being provided for the bid, how can service providers make good bids? Then, how is the customer going to know which bid is good and which one is not in the absence of vital information on bid responses like project cost, project schedule etc. So the bid selection will be mostly arbitrary. This is the weak point in this model.

Posted by: ahmedashfaque | October 13, 2014

Excerpts from my book on software engineering & project management

I have purposely chosen a case study that pertains to a company that is developing a software product. Agile development models are currently the rage, and this is for good reason. For product development, agile methodology is truly amazing. Nevertheless, this methodology has some shortcomings, one being difficulty in adapting it for geographically scattered teams that may be working in different time zones. In such a situation, the most challenging aspect of project management is to be able to communicate effectively. Agile methods demand that all team members be co-located so that high-bandwidth casual communication can take place among them. This makes offshore teams a complete no-no. The other shortcoming of agile methods is lack of documentation. Five years down the line, when the product has grown enormously and most of the original team has moved elsewhere, it will truly be a daunting task for a new member to understand all that code and make required changes. It will be simply impossible! To understand what I mean, look at the codes of some of the largest software products like Linux, which was built as an open source project using some sort of agile methodology. It is indeed extremely difficult to change any code inside the Linux kernel. The third shortcoming of agile methods is their inability to adapt to parallel and concurrent development. This means that if a large product is needed to be developed quickly, it will not be possible to do this with agile methods. So if a product containing one million lines of code is needed to be developed in a short time of 1 year (that is right, 1 year to be exact), then the total effort required for this project will be 500 months for one person to write it if we take productivity figures of 2000 lines of code per month per person (which is quite reasonable). This means about 42 years. Now if we want to do this in 1 year, we will need 42 people to do it. Managing 42 people on an agile project is impossible. At the most any agile methodology permits 20 people. Many projects are even bigger than one million lines of code. Most government, banking, and large corporate software products consist of more than 10 million lines of code.

In these cases, agile methods will not work. You need to adapt some method that will permit parallel development where many teams can work on the project concurrently so that the product can be developed within 1–2 years instead of, say, 10 years.
The case study presented in this book is a good example of how to adapt to given situations and be successful. After all, offshoring provides several benefits and cannot be ignored. Documentation too is a very important aspect of software product development and should be adhered to. This case study provides a good insight as to how to address the challenges of communication management, documentation, and concurrent development even when the development methodology is to take the benefits of agile methods.

Posted by: ahmedashfaque | October 12, 2014

Wonders of software!

Hardware devices like TVs, music players, Radios etc. have played important role in our lives to fulfill needs of entertainment, news & information for a long time and still continue to do so. You control these devices through hardware control systems. There are knobs or buttons for audio volume control, channel change control, video color management, video brightness control etc. on these devices.

Now these same devices can be controlled using software. Most people use software devices like Real Player, Win Amp and other multimedia player devices which control video & audio hardware devices on user’s computers. Now you can even control your refrigerator, Air conditioners, heating systems, TVs etc. using remote control software devices using internet etc.

What is the difference between a hardware control & a software control for these devices? Why software control devices are better than hardware control devices? Let us discuss these topics in detail.

Hardware control devices are mostly directly connected with the hardware device itself. Hardware control units can at best be mounted on a remote control device. In te first case, operating the control devices is inconvenient. For example if you want to change channel of a TV set then you will have to get up from your sofa, go to the TV set and change the channel from the control unit of the TV set. Each time you need to change a channel, you have to do this exercise. When remote controls were invented, they helped in solving this problem. The conventional remote control is still a hardware device connected to the TV through infra red signals.

Software control systems not only can do the things which a hardware control system can do but they can do a lot more things. One advantage of software control system is that they can be invoked when needed and shut down completely when not needed. For example, the control panel of Win Amp comes up on your computer screen when you start it. When you no longer need it then you close the control panel. When Win Amp is shut down then it does not use any space on your window screen. It also stops using your computer memory. Can you imagine your radio (the physical radio in your car) disappearing completely when it is shut down?

One other advantage of software control units is that you can customize the appearance and usage by choosing appropriate options. For example you can invoke advance sound mixing buttons on your Win Amp just by choosing right options. These options will come on your screen and you can use them. In case of hardware control units this is not possible.

The best advantage of software control units is that now it is possible to control your gadgets remotely using internet. So even if you are at your office. you can switch on your air conditioner at home. This kind of functionality is now coming to most devices we use today in our every day lives.

Posted by: ahmedashfaque | October 11, 2014

software & IT project management differences

Information Technology (IT) projects and software projects are quite different from each other. But many people are not able to differentiate between the two. Let us discuss what exactly are IT & software projects?

A Software product is essentially an invisible, intangible source code when run on a hardware platform like your personal computer, can display or do other things for you. The source code is a set of instructions contained inside a program. A complete software product consists of a large set of such programs.

So when we talk of software project, we are talking about making a software product by writing source code. A software project can be for both creating a new software product or maintaining an existing software product. A project for creating a new software product is known as a software development project. A project where an existing software product is to be maintained is known as a software support project. It is to be noted here that a software product can be maintained either to refurbish it so that the obsolete parts are changed or sometimes a software product has many defects and these defects need to be removed.

An IT product consists of both software as well as hardware parts. Hardware parts could be a computer, an embedded product (e.g. electronic controlling devices for automobiles) etc. Hardware could even be parts of a robot. All hardware parts are made up of electronic chips.

Any electronic device can be run by humans or by some software program. For example, a television set is controlled by a human being using a remote control. A personal computer can be started and shut off be a human being. Any computer program can also be started and shut off by a human being. Parts of a computer program can also be controlled by a human being using menus, push buttons etc. So far, you can see that operating a television set and operating a computer program requires inputs from a human being.

So how a computer program is different compared to a television set? The difference comes from the fact that whenever a computer program is run using some menus or push buttons, the software (the source code) runs and some output is presented to the use of the computer program. In case of a television set, the user actually plays with the hardware. For example, the user can use push buttons on a remote control to adjust sound volume. Here the user is actually directly controlling the hardware.

Generally when we talk of IT projects, some software systems are also involved. These software systems can be either part of the IT projects or can be separate project.

You can now see the difference between IT & software projects.

Posted by: ahmedashfaque | October 10, 2014

my book on software project management is a textbook at universities


My book “Software project management: a process driven approach” is becoming popular at universities around the world. Actually this book focuses both project management and software engineering.

On latest count some 15 universities in USA, 25 universities in India, 3 universities in Canada and many other universities in other countries have adopted my book either as their textbook or as a reference book.

Before the 2015 Spring session, my book is set to be used at more than 100 universities in USA, 100 universities in India and many other universities around the world.

I will update about the list of universities by end of October.

Posted by: ahmedashfaque | October 3, 2014

SAP system integration considerations part 2

In part 1 of this series we had seen some important points about integration of SAP system with SAP & non-SAP systems. In this part we will see some points regarding integration of SAP system with systems of partners.

The most common types of partners for your customer (who is implementing the SAP system) include its vendors, customers, 3rd party logistics providers etc. Proper communication with these partners is very important because without proper communication channels, every day business can not be done effectively. Vendors need to get the purchase orders so that they can ship the raw materials required for your production. Once they receive your POs, they need to confirm it so that the purchasing department can maintain their own purchasing activities. Once the vendors ship your required materials, they need to send shipping notes so that material planning at customer warehouses can be performed in advance. Once goods receipt is done against the shipped material then the vendors should be able to get acknowledgement so that they can send invoices.

Similar is the case for customers.

At each stage of procurement or sales activity, some acknowledgement note should become available to either party. This makes sure that the sales or procurement is smooth with complete information available to both parties involved.

Integration of communication channels for partners is accomplished in SAP through EDI (Electronic Data Interchange) or some internet based communication channel or through the traditional paper based channels like Fax or surface mail. EDI or internet based channels provide real time communication with partners. In SAP you can define partners using partner functions. Once a partner is defined and configured then each kind of communication (acknowledgement for shipping, PO, invoice etc.) is immediately sent and received when any user creates & saves POs, goods receipt etc.

In SAP, configuration of communication messages is done using what is known as output configuration.

Posted by: ahmedashfaque | October 3, 2014

my book is selling at 49% discount now


My book “Software Testing & Quality Assurance: From Traditional to Cloud Computing [Kindle Edition]” is now selling at 49% discount. Don’t forget to avail this offer. The offer is valid for only 2 days.

Go to book page now…

Older Posts »



Get every new post delivered to your Inbox.

Join 50,038 other followers