Learn How to Fix “Runtime Error 53 File Not Found” Easily

Computer errors generally plague us a lot. They have to be removed immediately before they can cause any further problems. One such error is the run time error 53. It shows the message “runtime error 53 file not found”.

In this error, problem occurs when a software program that is installed on the PC shows this error because it is trying to reach a DLL file that has been removed from the windows registry. This registry contains all the files that are used by Windows for executing any kind of commands by human users. This DLL file might have never been installed on the computer itself.

To fix runtime error 53 from your system, some simple steps have to be followed. Such steps include clicking on the start menu and then landing at the control panel. After you reached the control panel, open the programs and features icon. Open up all the programs stored in the computer through it. Uninstall the program, which produced the run time error 53 message. A window will also open up telling the user that the program has been removed from the system.

To make sure that the DLL file is stored again on the computer, one has to remove the program and then put it back. The program can be reintroduced into the system through a hard disk or a CD. Instructions will appear on the screen as this program gets installed. After clicking on the install it now option, the user will see the option of terms and conditions on the screen. Click on the “I agree” choice to continue with the installation. The operating systems that generally display this error are Windows XP, Windows Vista and Windows 7.

Run the program to ensure that runtime error 53 is not displayed again. If the error is still being produced, then contact the company, which supplied you with the software.

It is also intelligent on your part if you find out about the compatibility of your software with the operating system of your computer or other software. You can find out about this compatibility through an online research. The website of the software developer can also yield you such details. Tell the software developer about the intricacies of your system to get an adequate response from him about the runtime error 53.

However, the last and most easy solution to fix “runtime error 53 file not found” error is using windows registry cleaner software. Registry cleaner software can always eradicate any registry errors produced by wrong entries, which cause a runtime error 53. It can delete all the useless entries in the registry that are causing such an error. Using such software can ensure that you get an error-free system.

Posted in general | Comments Off on Learn How to Fix “Runtime Error 53 File Not Found” Easily

The Advantages of Working With a Software Boutique Company

First of all, a boutique is a small shop where clients can find dedicated merchandise and unique items, or products which are produced in small quantities. The advantage of entering in such a shop, compared to big supermarkets, is that here you’ll also find staff ready to assist you and to give you guidance step by step. Indeed, one may say that a boutique charges higher prices, also in comparison to chain stores, which is definitely true. However, once you bought something from a boutique you’ll have the feeling that you own a unique item, which will differentiate you from the rest, and isn’t this what we all want – to be unique?

Software boutiques are a new way of defining petite software companies which are focused on a certain niche, and which are able to offer specialized support to their customers. Even more, such a firm is able to offer a unique product, tailored on the client’s needs and requirements. But, let’s see what advantages does a customer have when collaborating with a software boutique company:

Tailored product

A software boutique takes the client’s specifications and transforms them into a customized piece of software. Practically, if you are not satisfied by the mass-produced software programs which you can find, then a boutique company will tailor a product according to each and everyone of your requirements. The outcome will be a software product which is able to fit perfectly your company’s needs.

Niche focus

Generally, a boutique company is focused on a certain niche, for example developing applications and software products using Microsoft technologies. The advantage of having such a partner, is that you’ll have the confidence that he has the knowledge and proven experience to offer you the best advices regarding that specific area, and that he’s always updated with the latest technologies.

Crystal clear communication and dedicated support

Having a smaller amount of projects, a boutique software company can offer its clients dedicated support, according to every client’s need through a direct communication flow. This means that the information won’t need to travel through several departments until it reaches you, so that you’ll always be updated with the status and the quality of the work.

A good communication, not only that can save time, but also can make the development process more efficient. For example if you want a specific functionality for your application, collaborating with a boutique firm, you’ll able to keep track of the development process and promptly interfere in the development process if the work isn’t going in the desired direction, or if you want to change the approach. Also, fewer the clients, better the support. Practically, a software boutique will offer you their entire attention and expertise, whenever this is required.

Every client is important

For a boutique company every client is important, and because they can’t afford to lose a client, they can’t really afford to do a bad job. Every development project is treated with care, and you’ll know for sure that your project will be handled by the best men.

Posted in general | Comments Off on The Advantages of Working With a Software Boutique Company

Advantages of Antispyware Programs

Much like the antivirus programs, now a days anti spyware programs also is a must if you are browsing the net. Most of the antivirus programs provide a good job by taking care of the computer viruses. However, many of them fail to detect the spyware which gets installed onto the PC when connected to the internet. This is where Anti spyware programs comes to help. They do a good job by protecting our computers by identifying the spyware and promptly remove them.

There are so many antispyware programs are available in the market. Both in the Online as well as near to your computer retail showroom. However, you have to ensure that you buy a good Anti spyware program which fulfills the requirements what it promises. Also, make sure to check that the software works on your Operating System. Most of them work on Windows Operating system; however, there is no harm in double checking the same.

Some of the characteristics of a good antispyware program is as below.

Real time scanning

Real time scanning is the heart of these type of programs. The program once installed should reside on your system tray and should be able to do a real time scan in the background. This way it should be able to identify all kinds of threats like Adware, spyware, Trojans and the harmful key loggers.

Automatic Updates

There is no point in having an Antispyware software program which does not update the spyware definitions automatically and at periodic intervals.

Customer Support

Most of the time you will not be require to call up their helpdesk as the software will work automatically provided if the operating system is compatible and all the installation prerequisites are met. However, if you run across any installation problems or some kind of bugs customer service comes in handy.

Posted in general | Comments Off on Advantages of Antispyware Programs

The 4 Elements That Makes Up A Personal Computer System

There are 4 elements that make up a personal computer system: the user, software, hardware and the electricity all working together for the whole system. Each of these elements is essential to the system itself.

The user is the person's who perform the task using the computer system. The nature of the task depends upon the application program or software that is needed to perform the task. The software that the user used requires certain hardware components to function properly.

The hardwares of the personal computer system are made up of its equipment that are usually connected (the computer, monitor, printer and so on). It is defined as hardwares because you can physically touch these components. The programs are called softwares since their function can only be used when the computer is turn ON. Software is a set of coded instructions that the computer uses in order to carry out the user's tasks.

The user can only use the computer when it is turned ON. Without any electrical power to run through the personal computer system, it will not function. The ability of the personal computer system to control its components is through a series of on / off signals.

Here is how it works, when a user tries to type a document or a letter using his / her personal computer. The first thing the user do is to turn ON the power for the computer. Choosing a Word Processor software in order to write the document. The user uses the hardware such as the keyboard to write the content of the document; The typed document is then displayed onto the monitor screen. After the user finished writing his / her document. The user will use the software to instruct the printer to print the document. The software works together with the hardware components (the keyboard, monitor and printer) to accomplish the task that the user requested.

All of the four elements: the electrical power, hardware, software and the user work together to make up a personal computer system.

Posted in general | Comments Off on The 4 Elements That Makes Up A Personal Computer System

10 Top Reasons Why I Have to Upgrade My Computer

The rate at which technology is improving is very fast and in the time you get comfortable with the computer hardware you have bought, several new and improved models appear in the market. While some people prefer to keep their computers state of the art, most of us have a 'If it is not broken, do not fix it' attitude when it comes to upgrading or replacing our computers.

This is a strategy that could prove expensive in the long run. It is always better to upgrade your computer on a regular basis, especially if you have had it for over 2-3 years. Even if your computer has had a large trouble-free existence, you really need to consider periodic upgrades and here are the reasons why you must dos so:

1. Increase in Processing Speed ​​- This is one place where you really get to notice an improvement in performance. If you are upgrading from a Celeron 433MHz processor to a Pentium 4 1.6GHz, you would really notice the difference in performance!

2. Faster Memory Access – Improvements in CPU speed are typically accommodated by improvements in the speed at which data transfer occurs between the CPU and RAM. This is another area that provides an improvement in performance.

3. Size and Capacity improvements – Technology drives a reduction in component size coupled with an increase in storage capacity. This means that a RAM card or hard disk of the similar size as the older ones in your computer could have double the capacity!

4. Software Compatibility – Many of the new software packages you may wish to use in order to improve your productivity or entertainment experience may not function well on you old computer. It is better to upgrade your computer to enjoy the benefits of new software fully.

5. Obsolescence of Hardware – As your hardware gets older; Getting a replacement will get more difficult once manufacturers start phasing out the production. With improvement in technology, the older hardware becomes cheaper initially and becomes expensive as supply dries up.

6. Technical Support Issues – Many manufacturers stop providing technical support for older components as they cease production. The older your computer gets, the harder it is to find help in fixing it when it malfunctions.

7. Development of New Hardware – New hardware products appear in the market frequently that revolutionize your computer experience and are based on newly developed technology. The chances of your old computer supporting new devices are very low.

8. Faster Devices – Your old computer may not be in a position to accommodate the speed at which the new devices communicate.

9. New, Fast Communication Protocols – You may not be able to implement new or faster communication protocols in your old computer because the hardware is unable to support them.

10. Operating System and File Format – Your old hardware may not be able to run newer operating systems and some of the file formats may not be supported.

Posted in general | Comments Off on 10 Top Reasons Why I Have to Upgrade My Computer

Introduction to Silk Test Architecture

Normal use of an application consists of a person manipulating a keyboard and mouse to initiate application operations. The person is said to be interacting with the GUI (Graphical User Interface). During Silk Test testing, Silk Test interacts with the GUI to submit operations to the application automatically.

Thus Silk Test can simulate the actions of a person who is exercising all the capabilities of an application and verifying the results of each operation. The simulated user (Silk test) is said to be driving the application. The application under test reacts to the simulated user exactly as it would react to a human rest. Silk Test consists of two distinct software components that execute in separate processes:

The Silk Test host software

The 4Test Agent software

Silk Test host software

The Silk Test host software is the program you use to develop, edit, compile, run and debug your 4Test scripts and test plans. This manual refers to the system that runs this program as the host machine or the Silk Test machine.

The Agent

The 4Test Agent is the software process that translates the commands in your 4Test scripts into GUI-specific commands. In order words, it is the Agent that actually drives and monitors the application you are testing. One Agent can run locally on the host machine. In a networked environment, any number of Agents can run on remote machines. This manual refers to the systems that run remote Agents as target machines. This manual refers to the systems that run remote Agents as target machines. In a client/server environment, Silk Test drives the client application by means of an Agent process running on each application’s machine. The application then drives the server just as it always does. Silk Test is also capable of driving the GUI belonging to a server or of directly driving a server database by running scripts that submit SQL statements to the database. These methods o directly manipulating the server application are intended to support testing in which the client application drives the server.

Posted in general | Comments Off on Introduction to Silk Test Architecture

Introduction to Fixed Asset Management

There are obvious benefits from implementing and maintaining a record and control over assets. Savings can be obtained from being able to both see current asset deployment and thenby maximizing their use. Monitoring assets will reduce unauthorized use or misappropriation and insure employees leaving a firm return assets under their control. In some cases a system is mandated by government regulations, terms of lending, public grant terms, insurance terms etc. One person can maintain and manage all fixed assets of a business if they have software to assist them. Computer systems and software available reduce complexity, save time and prevent mistakes. Why use an asset management software program?

While paper and pencil methods can be used, software programs assist in the recording, maintenance and auditing of assets. This saves time and gives a clear picture of assets since sorting and viewing in different ways is quick and easy.

The most basic 'solution' would be using a spreadsheet program such as excel. Even after migrating to software specifically designed for asset management there are times that a spreadsheet program may continue to be useful.

What is an Asset?

What you call an asset often depends upon your business activities. The first thing that comes to mind is fixed assets such as computers, production equipment, office furnishings etc. You might even wish to consider employees as assets or even service and maintenance contracts. A flexible asset management software program can provide a way to track many things most of us would not consider to be assets.

What are my first steps in setting up a system or 'solution'?

1: Decide what assets will be managed.

The more assets the more work in setting up your system. Limiting assets to only those over a certain dollar value is a good idea.

2: Deciding what characteristics of assets it is important to record within the software.

Your choices will not only have an effect upon the amount of work required but also the amount to which you can manipulate and view asset information by sorting on asset information field or combination of fields.

For example if you setup a field for 'location' then you can sort data to see what assets are in each location. If you also have a field for 'type' or 'class' then you could further sort and display to show only certain types of assets such as computers at one or more location.

As in every aspect of life one has to make tough choices between what is ideal and what is feasible. Your choices will have an effect upon data data when new assets arrive as well as collecting information about existing assets. Choices you make will also have a bearing upon your choice of software since some may not handle everything you want. One such a limitation is found within the AssetTrakker Pro software program. TrackitSoftware does not provide a method of tracking depreciation because it was felt this added too much complexity requiring the collecting and maintaining of a lot more data. Additionally, they felt, handling depreciation requires superior knowledge of government rules and regulations beyond the expertise of the very people that stand to benefit most from asset management. Accounting departments already calculate and account for depreciation. * Some software does promote depreciation calculation but only limited functionality that in most cases is not the way regulations demand.

Some help!

Below is a listing of Asset Attributes 'fields' for your consideration. You will not want to use all of them for your own 'solution' and may well have additional ones you need.

Asset #: The key identification reference used to track assets. They can be straight numbers or a number with an alphabet prefix. (0001 or A001). This number is used for audit purposes and for cross-reference.

Make: Manufacturer

Model: Use when arranging service or buying parts. Use as allowed grouping by model type.

Serial #: Specific asset identification. Needed when making warranty or insurance claims.

Cost to Repl .: Estimate the cost of replacing an asset. Useful for planning, risk assessment and insurance.

Cross Ref. #: Reference other asset number or tie together group of assets.

Type: Can be used for general grouping such as furniture, computer, shipping, etc.

Condition: Helpful to see what is likely to require replacement or decide on service needs.

Description: Other detail in addition to make, model, and serial number.

Memo: Additional information about the asset. If a computer you might want to list details of the hardware configuration or even the programs installed on it.

Department: This is helpful for sorting assets by department to assist in auditing.

Location: Good field to have so that a search / sort can give you a clear view of where assets are located.

Used by: Necessary if you have assets in the personal possession of an employee and / or assets off business concessions.

Date Assigned: Useful if assets are moved around or for telling how long an asset has been at its current location.

Expected EOL: The anticipated date when the asset will no longer be useful.

Funded by: Source of funds if provided by Bond Issue, or outside funds (loan) or a grant.

Cost: Total cost of acquiring an asset.

Date Acquired: Helps give some idea when replacement may be required.

Disposed: Indicates an asset has been disposed of.

Disposed Date: Date asset was disposed of.

Business Use%: Used if an asset is not used full time by the business to break down asset use. Not for everyone, but a field that imagination might find an indispensable use for.

OUT: Used for Tool / Equipment Tracking,

Taken By / In From: Used for Tool / Equipment Tracking to indicate who is taking or returning item.

Date Due: Used for Tool / Equipment Tracking to show when an asset is due back.

Recovered Value: Net proceeds of the disposal of an asset.

Disposed Detail: Notes on how and where an asset was treated of.

Warranty: Indicates if asset is covered by a warranty or could be used if covered by a service / maintenance contract.

Warranty Expiry: It is useful to see what expiries are approaching for tracking maintenance or service agreements. Helps prevent paying for service covered by warranty as well as prompting the repair of items before expiration.

Image: Can assist in asset identification or where 'look' is an important feature. Useful if insurance claim ever made.

Value: Could be amount the asset is insured for. Risk exposure control.

Leased: Helps keep track of Leased vs Owned assets.

Lease End: Used to warn when assets have to be replaced or the lease has to be renewed according to the terms of the lease.

Lease Start: Commencement date of lease on leased equipment.

Lease Co: The name of the company from which an asset is leased.

Audit Date: This column records the date the batch scans of assets were made for audit purposes.

Auditor: Record the name of the person who performed the audit.

What next?

By now you have a good idea of ​​what asset information you want to track. Before looking at the various software packages available you should consider how many people will be entering data and how many will be accessing the data. For a smaller organization it is likely that just one person will be involved but in larger firms despite a number will wish to participate. Your situation could require purchasing more than one software license and the software must support multiple users.

Use a Barcode Scanner?

A barcode scanner can be used to speed data entry and auditing. This will add to the cost and most lower priced software packages offer limited support for barcode scanners. If properly incorporated into software a scanner can provide excellent value and save a lot of time, particularly for annual audit purposes.

Below are outlined the types of barcode scanners used with asset management software.

A 'dumb' tethered ccd scanner is cheapest and purchased for around $ 70. This can only be used when plugged into the computer and acts just to a keyboard in that you scan a barcode and it is put into whatever cell or space you are in.

A 'laser' tethered scanner is more money but will be able to scan smaller barcodes and sometimes have a defect field of view (easier to scan a barcode quickly).

A ccd or laser scanner which has built in memory so scans can be made and then the scanner can be brought back and plugged into a computer, and those scans uploaded. This is extremely useful for audit purposes. For maximum utility your software should be optimized to take advantage of this 'batch' memory capability. A capable unit can be obtained for around $ 150.

A laser scanner with internal memory, as well as an input screen and keys, means that after scanning a barcode you can add additional information. These are more expensive and again their use has to be integrated into your management software. While prices are coming down you are looking at units in the pocket pc price range plus scanner cost. It is usual for software utilizing these units to also, for some reason, be priced higher.

Asset Management Software

The range of prices for asset management software is $ 200 to $ 10,000 and all require you to do the entry of existing asset data as well as some setting up for your requirements. Some offer telephone advice at additional cost but hands on assistance only comes with expensive packages (this level of software requires expensive sales force and marketing expense so possibly their price, for the features provided, may seem high).

Purchasing Criteria a lot of people seem to use. You may have more.

1: Price 2: Ease of implementation of system 3: Ease of use 4: Ability to fit the business 5: Functionality 6: Potential to handle growth

What you can obtain for a reasonable price

A program with full relational database, such as MS SQL Server Express, or open source database. Today there is no reason to set for less power or quality. Microsoft provides their SQL 2005 'Express' DB version at no cost.

A program that allows you to attach images of assets. While not necessary for everyone it is something that someday you might want to use.

A program that integrates the use of inexpensive 'batch' memory barcode scanners because, if not now, at some point in the future such an accessory will save time and money. Used in auditing it assures an asset was actually seen as barcode had to be scanned.

A program that will permit the management of 10,000+ assets. With decent memory in your computer and a fast full relational database engine there is not much of a limitation anymore and while certain functions may slow down a bit even a low cost program should handle over 10,000 assets.

A program that is flexible so you can take advantage of features later instead of having to implement everything at once.

* If more than one person is to be given access to the database then you should ensure that different levels of access can be set for different users to prevent unauthorized changes to data.

What you can get but not cheaply.

A program that integrates directly into your current accounting system.

A program that has full professional depreciation calculations.

A program that runs directly off your company server (lower cost software runs off workstations and while a central database can be located on your server and accessed by individual workstations this is not the same as complete software being server based with applets on workstations.

Hand holding and in house training to get your system up and running. There are firms that will sit down with you and ask you all the right questions, set up your software, audit and list all your assets and then train your staff how to operate and maintain your 'solution'. Most, to my knowledge, will recommend a mid to high priced software because it is easier to sell (commission higher as well) and easier for them to install due to their familiarity with it.

Nuts and Bolts

Gathering your Asset Information How you perform this step depends upon your situation. In our discussion below we assume you do not have existing asset information, in an existing excel spreadsheet or other format. If you do then you would save work by exporting / importing that data into your asset management software.

Starting your Asset Listing and Numbering from Scratch

This is an advantage because you are not limited by inherited constraints. Of course it is more work, as you can not just load in existing asset information but have to collect everything yourself.

Collecting asset information is time consuming. Getting this information accurately, with as little work as possible is important. Thinking about how to do the job and planning will help make this big job easier.

The following is how I suggest doing this but you may have your own, sometimes better plan.

Create data entry sheets that you will have people write in information about assets under their control. Your asset management software may create these or you could make up an excel spreadsheet to obtain them.

Try and obtain some 'buy in' from the department or location manager with control over assets. The closer to the asset you can allocate some responsibility the better that asset will be controlled. 'It's my department's asset' is more powerful an incentive than 'it's IT Dept's asset'.

Final steps

After entering data, that your co-operative managers helped you obtain, it is time to work with that data within your asset management software. It should not take long to become familiar with how it can present information to you on screen and in reports.

Now sit back and enjoy how easy it is to manage your assets.

Posted in general | Comments Off on Introduction to Fixed Asset Management

Schedule Slippage – Root Causes

“The single most important task of a project: setting realistic expectations. Unrealistic expectations based on inaccurate estimates are the single largest cause of software failure.”- Futrell, Shafer

Introduction

With global and competitive market, it is very important to launch a product or service in the market on time, ahead of competitors. Definitely, timely launch depends on on-time-completion of the product development projects. Project planning has lots of challenges to overcome in order to finish the project on time – right from schedule predictability, envisioning future/possible risks and coming up with mitigation plans.

This article talks about some of the challenges, often faced in the Software Product Development industry that causes the schedule slippage.

Schedule slippage: Delay in the project completion from its initial estimated date of completion.

Each project plan will have a planned completion date (NRA, RA), and a bounding box or upper limit in schedule. Nowadays, it is a common practice to have three dates associated with any project plan:

  • Non-Risk Adjusted (NRA) date: Project completion date assuming no hurdles – Ideal conditions.
  • Risk Adjusted (RA) date: Project completion date assuming some risks will come on the way and will need extra time to attend to them.
  • Bounding Box (BB) or upper limit: The upper limit on the project plan before which the project has to be finished under any circumstances – Generally decided by the top management based on product/services roadmap and launch in the market.

Under ideal circumstances, any project is scheduled to complete by NRA date. Considering some risks that may come on the way and would eat some time off the schedule, the project should be over by RA date. If the risks were not envisioned and hence not planned well, then project may get delayed and would complete after RA date. Project completion crossing the RA or upper limit is neither good nor expected out of a well-planned project.

Root Causes

As we always plan for a project to get over before RA date, seldom is the case it happens as expected. There are multiples reasons for schedule slippage, right from improper planning, lack of resources to unplanned requirements and rework that eat away vital time off the planned schedule.

A typical project development process – Each project will have a team (development, testing and other functions) that will work through a process (requirement analysis, schedule estimation, design, implementation and testing) to deliver a product to the customer/end user. Each entity that participate in the project – directly or indirectly affect the schedule.

From the development process, we can identify the items that can cause delay in the execution of the project – for example, misinterpreted or unclear requirement adds up to completion time, unavailability of development tools or resources can prolong the project duration. Various processes like schedule estimation, detailed design and product development if not executed skillfully, may significantly blow up the project cycle.

For better understanding all these possible causes that may result in schedule slippage are categorized .

Let’s have a detailed look at the root causes of schedule slippage category wise.

1) Schedule Estimation: “The key is not to prioritize what’s on your schedule, but to schedule your priorities.” – Stephen Covey

For a project to be executed on time, it is very important to have it planned very well. Any mistake in project schedule estimation reflects as delay in the project completion from its deadline. There are several factors that contribute to improper schedule estimation:

· Underestimation of technical complexities: At the start of the project, many of the team members may not have thorough knowledge of technical complexities and hence their estimation would be incorrect. Sometimes it may so happen that the person giving estimates for a particular task is having no idea about the technical challenges involved in carrying out that particular task. You might hear, towards the mid/end of the project life cycle when the task is not finished on time – “Oh, I didn’t know that this feature also requires 5 more tasks to be done!” or “I was thinking this task to be so simple, but I under estimated it!”. · Lack of Design/Big picture: It is important to have a bigger picture / overview of the complete project to understand how a particular module/feature would fit in to complete project. Product or system level design helps in understanding the interfaces among other modules and the required coordination for product assembly and hence, a better insight into the work involved. Often, estimates without focus on detailed design tend to deviate more from the actual time taken for finishing the job. · Integration Testing: While making a project plan, testing also needs to be accommodated in the schedule. At times, the unit testing or testing done by individual contributors on their module is taken into account but not the system level testing. Toward the release, when all the individually tested modules are brought together, a system level or integration testing is a must. Having the time for integration testing not accounted in the overall project schedule will cause delay in the project completion.

· Unplanned dependencies: Project planning is not only about breaking the project into minute tasks and managing them. A well-planned project schedule also needs to consider certain unplanned dependencies. Some of these are:

o People: Optimum utilization of human resources calls for same set of people working in multiple projects. A person may not be available to work for currently planned/assigned project due to extended/unplanned work in another parallel project. Another issue related to people could be unplanned/unexpected attrition that will affect the project plan. Time is also lost in mentoring of new member by a senior (more experienced) person which goes unaccounted if not planned.

o Tools & Equipments: Project can be delayed if team is waiting for release of upgrade or procurement of any vital tool (hardware or software being used in the project) or if the equipments required for development and testing are not available. “We had a 3-months project for validating our existing solution on new product platform using customer DUT (device under test). We had to wait for the DUT for nearly 1.5 months as it got stuck in customs. After getting the DUT, we realized that it’s been damaged partially during transportation. As a result we had to ask for another DUT and whole project took more than 5 months to get finished.” – I am sure that such cases will be quite familiar to many organizations. Other reason for timely unavailability of tools / equipments is that they are shared among various projects to reduce the operating cost. Any unplanned dependency on their usage or wrong assumption about availability of these shared resources would cause delay in the program. Team members might have to work on shifts to optimize the usage of shared resources which can cause reduced work hours and/or productivity loss and results to schedule slippage.

“I was waiting for Matlab license to be released by another person in the team but he left the office without doing so and I lost 3 hours figuring out what to do?” – is it something you faced before?

o Other programs: If multiple programs have deliverable dependencies, then delay in one project will have cascaded effect on other projects, which directly or indirectly depend on its deliverable. “We got delayed because we had to wait for a critical UI component from the framework project team” or “We didn’t plan for bug fixes for a component which was supposed to be delivered defect free for our usage” are the common scenarios for delays in program which are dependent on other program deliverables. Parallel programs may affect the schedule of your program in a different way as well – Sometimes, management changes the priority of the programs running in parallel. If your project is considered as a low priority one then there might be lack of resources assigned to your project that may result in schedule slippage.

· Beta releases: How many times we seek feedback on our product during development? And how often we allocate time for it? It’s important to plan beta releases if we desire to have our product validated by expert users or lighthouse customers during development. Getting feedback from beta customers becomes important especially when their requirements echo that of a mass customer base. Process of giving workable releases to customers, collecting their experience, having their feedback analyzed, and then incorporating in the final product version takes significant time.

· Risk mitigation and plan B: Every project will have some or the other risks. These risks can be of varying severity and probabilities. While making project plan, it is important to treat the risk individually based on their severity and probability of occurrence. If high probable risks with higher severity are not planned with their mitigation plan (or plan B), they will have huge impact on schedule deviation from planned one. As in one of the previous examples quoted, getting a DUT on time for validation was a risk. Had there been a mitigate plan (plan B) like – Validate with other DUT or if DUT is not available here, let one developer travel to customer’s place and finish the validation on time, the schedule slippage would have been avoided.

2) People: Ultimately, projects are executed by people who may not be skilled or talented. Hence, looking for perfection in projects involving human beings may not be a feasible thought. Certain unpredictable and hence unavoidable issues under this category are:

· Poor leadership: Before thinking of project execution, it is project planning that actually would set the platform of success. Execution of the project depends on its team while planning is taken care by the project leader. The project leader is expected to have enough technical know-how to understand the project goals and to the details of the tasks involved. Poor leadership and superficial knowledge of assignments often results in invalid effort estimation and ad hoc task delegation causing stress and possible delay in project execution. People leading the team are also responsible for keeping the team spirit and motivation level upbeat. Poor personal commitment due to lack of motivation results in loss of productivity and may cause schedule to slip. Another reason that adds up to delay in projects is inability of leadership team to track the schedule progress and take the correction action.

· Attrition: If the project duration is large and job market is hot, it may be difficult to retain people in the project till its completion. Attrition may further delay the completion especially if the person leaving the job was in critical path. A person leaving the organization would leave a gap in the project that a new person may not fill immediately, which in turn causes sudden reduction in the task force.

· Learning curve: When ever a new person or team member is included in the project, he or she may require some time to understand the project to keep in pace with other members. Learning curve is needed for new team members, joining the team either due to attrition or due to any specific technical competency requirement. · Context switching: In smaller organization or groups where people work on multiple projects simultaneously, it is important to have some buffer for context switching. A person planned to work in project ‘A’ for two hours after a gap of two weeks, would take more than scheduled time to complete that task. Gap of two weeks and the fact that he or she was involved in other project would require some time for the member to get back to the context of current project. · Global development teams: In an era of globalization and outsourcing, it is common these days to have development team distributed over different geographical regions. Project plan needs to account for different time zones and working culture. You might expect an input for your task on Monday morning your time but it may be Sunday late evening for that person and finally when the input arrives, you might be on your way to home after work.

Sometimes schedule estimation might go completely wrong if you have not understood the work culture of the region your teammate belongs to – “In my previous work, I was given a task to be completed with a heads up that its very critical task and needs immediate attention’. When I asked my project lead how many days/hours I have for it, I had been time for 2 weeks for high priority and ‘immediate-attention’ work.” Definition of ‘urgent’, ‘high priority tasks’ changes with culture and region.

· Communication Issues: People communicate differently. If important issues are not brought to the notice of the team members, or are not escalated on time, the entire project may suffer. Often fear of embarrassment stops team members from reporting issues faced during execution leading to more time being spent on that task that can easily be executed additional help.

3) Customer Involvement: These issues are quite serious if customer or end users of the product are involved in the development phase. Understanding customer’s priorities, defining your expectation from their involvement needs to be clear and in agreement with both the parties.

· Expert user testing: In the beginning of the project, expert user testing cycle needs to be planned. Process of giving builds or releases for testing and collecting their feedback, analyzing and incorporating them in your product takes significant time which, if not planned, can delay your program. · Timely feedback: “I got feedback from customers for features, delivered in development milestone-1, after milestone-5 towards the release. These feedbacks are critical but now I am worried how to incorporate them without affecting the schedule.” It sounds like a common problem. Incorporation of feedback from customers needs to be planned well taking a commitment from the customer. · Product requirement specification review: Having a product requirement review planned and executed will keep you on right track throughout the project. Reviewing the requirement specification will avoid requirement related defects fixing which otherwise would have delayed, the project.

4) Ambiguous Project Requirement: For any project to be initiated, the first thing is to have requirements for it. In the product development life cycle, requirement phase acts like a foundation. Clear requirement or vision for the project navigates the team to success. However, requirements may not be clear at the time of estimation and may result in delay in the project completion. Issues related:

· Evolving specs: If you are making a product based on a standard which is not yet matured or still evolving, you are more prone to have this risk. Frequency changes in the specs will change the requirement for the project during different stages of product development and team will continue to work on something that is not yet evolved. This results in rework that would delay the project if time for dealing with these changes is not accommodated in the schedule. “We developed an algorithm and hence measurement that was based on certain industry standard. Towards the release of the product, the specs changed and our measurement was no more valid. We had to redo the algorithm to reflect the changes in the specs. This caused our product release delayed by 2 months.” · New requirements: Sometimes new requirements are added as the project evolves towards completion. Implementation of new requirements is not planned at the beginning of the project and hence is not accounted in schedule. Adding new feature without revising the schedule may result in delay.

· Untold expectation: Requirements from the customers may be of two types – implicit or explicit. It is important to have the requirements well documented. Implicit requirements needs to be better defined and documented to avoid any confusion towards the end of the project. Customers may not describe their requirements related to system performance, memory issues, user interface quality and usability but they are very keen on providing feedback in those aspects once the product is given for expert user testing. If we are not clear about such requirements, out design might not address them. Addressing them towards the end of the project may call for design changes and extra work that would delay the project.

5) Unplanned Tasks / Reworks: Bounding box for the project is set by higher management and often lack buffer for unplanned task(s). Having more of unplanned task that creep up at different phases of project can cause schedule slippage. The unplanned tasks or rework may arise due to:

· Sustaining work: In smaller organizations, some of the project team may also be responsible for sustaining / customer support of existing products. These unplanned tasks, which come on event basis, related to customer support are always of high priority. Excess or prolonged sustaining work may take resource out of the planned project causing a potential threat for schedule slippage. · Defect fixes: Defects are bad as they degrade the product quality and consume extra time/effort to fix them. It is good to have testing of the intermediate releases of the project to find and fix defects sooner in the development life cycle. If the fixing-cycle for such internal-milestone defects is not planned, then either the project is either going to slip or product is going to be of poorer quality. Poor programming skill of the team, not adapting to modern programming practices and having ad hoc development processes may lead to higher number of defects which would take more time to fix then planned and cause slippage.

· Task spillover from previous milestone: Tasks that are not completed in previous milestone, due to whatever reason (inefficiency, vacation of the team member, resource crunch etc), will have to be completed in the next milestone thereby increasing the load on the team. If adequate buffer is not planned, these tasks spilled from previous milestone over to next, can delay the project. · Requirement change / refinement: Requirement changes during the product development will result in rework of what has been previously done with first version of requirement(s). Addressing changes in the requirements needs extra time and effort and may cause schedule slippage. In some cases, the requirement from customer is misunderstood resulting in wrong system design and implementation. Additional, unplanned time is lost in correcting the design/implementation which causes schedule slippage.

Conclusion

On time delivery is the challenge software development companies are facing globally. To have a complete control over estimated schedule, it is very important to identify the elements in the development cycle that cause schedule slippage. This article uncovers and explains the root causes of delay in programs using examples from real world. Having an insight to the root causes will help the program managers to make good decisions to avoid future schedule slippage.

Posted in general | Comments Off on Schedule Slippage – Root Causes

Strengths and Weaknesses of Waterfall Approach for Software Development

One of the most famous and widely used approaches for software development is the waterfall model. Waterfall approach is an old technique that has been in use for quite some time, but in modern times agile approach is gaining prominence.

Waterfall approach, as is evident from the name, refers to a systematic approach where one step comes after the other. It cannot go the other way round. The process works like the waterfall effect that flows in one direction, which is from up to down.

In this process the life cycle of the development process is predetermined. All the steps are defined before the start of the project. The approach is predictive, where the team is well aware of the order of each step and therefore works accordingly. It starts from the requirement analysis, the design phase and then proceeds on to the implementation, testing and the maintenance phases.

The waterfall approach can be quite beneficial for those who are quite clear on their requirements. A planned approach works for them because they want fixed processes and budget. Where fixed processes are beneficial, at the same time they can be inconvenient at times. In cases where the client is not clear on the requirements and finds in the middle of the project that he/she wants to change course, this approach can prove to be quite problematic.

Another point of the waterfall approach is that the requirement analysis and design of architectural structure can consume a lot of time. Extensive research is done initially as the next phases depend completely on the planning strategy. However, the good thing is that everything is thoroughly worked out and each aspect is studied beforehand. The developers in such cases know what is expected of them.

A waterfall approach works in a systematic order, with one step following the other and the testing phase comes in the end. If there are any big problems encountered in the testing phase, it means a long process to make the amends. The process can consume extra time and money.

We cannot conclude that one approach is better than the other, as every method would have its own strengths and weaknesses. The determination of success for each method depends on how it is being used and whether the approach suits the scope of work being undertaken. While one approach may be suitable for a particular project, it might become totally useless under different circumstances. For example, some believe that agile methods are not well suited for offshore development, as they require a closer contact and communication that is not possible in an offshore project.

Posted in general | Comments Off on Strengths and Weaknesses of Waterfall Approach for Software Development

Why Do We Need Software Engineering?

To understand the necessity for software engineering, we must pause briefly to look back at the recent history of computing. This history will help us to understand the problems that started to become obvious in the late sixties and early seventies, and the solutions that have led to the creation of the field of software engineering. These problems were referred to by some as “The software Crisis,” so named for the symptoms of the problem. The situation might also been called “The Complexity Barrier,” so named for the primary cause of the problems. Some refer to the software crisis in the past tense. The crisis is far from over, but thanks to the development of many new techniques that are now included under the title of software engineering, we have made and are continuing to make progress.

In the early days of computing the primary concern was with building or acquiring the hardware. Software was almost expected to take care of itself. The consensus held that “hardware” is “hard” to change, while “software” is “soft,” or easy to change. According, most people in the industry carefully planned hardware development but gave considerably less forethought to the software. If the software didn’t work, they believed, it would be easy enough to change it until it did work. In that case, why make the effort to plan?

The cost of software amounted to such a small fraction of the cost of the hardware that no one considered it very important to manage its development. Everyone, however, saw the importance of producing programs that were efficient and ran fast because this saved time on the expensive hardware. People time was assumed to save machine time. Making the people process efficient received little priority.

This approach proved satisfactory in the early days of computing, when the software was simple. However, as computing matured, programs became more complex and projects grew larger whereas programs had since been routinely specified, written, operated, and maintained all by the same person, programs began to be developed by teams of programmers to meet someone else’s expectations.

Individual effort gave way to team effort. Communication and coordination which once went on within the head of one person had to occur between the heads of many persons, making the whole process very much more complicated. As a result, communication, management, planning and documentation became critical.

Consider this analogy: a carpenter might work alone to build a simple house for himself or herself without more than a general concept of a plan. He or she could work things out or make adjustments as the work progressed. That’s how early programs were written. But if the home is more elaborate, or if it is built for someone else, the carpenter has to plan more carefully how the house is to be built. Plans need to be reviewed with the future owner before construction starts. And if the house is to be built by many carpenters, the whole project certainly has to be planned before work starts so that as one carpenter builds one part of the house, another is not building the other side of a different house. Scheduling becomes a key element so that cement contractors pour the basement walls before the carpenters start the framing. As the house becomes more complex and more people’s work has to be coordinated, blueprints and management plans are required.

As programs became more complex, the early methods used to make blueprints (flowcharts) were no longer satisfactory to represent this greater complexity. And thus it became difficult for one person who needed a program written to convey to another person, the programmer, just what was wanted, or for programmers to convey to each other what they were doing. In fact, without better methods of representation it became difficult for even one programmer to keep track of what he or she is doing.

The times required to write programs and their costs began to exceed to all estimates. It was not unusual for systems to cost more than twice what had been estimated and to take weeks, months or years longer than expected to complete. The systems turned over to the client frequently did not work correctly because the money or time had run out before the programs could be made to work as originally intended. Or the program was so complex that every attempt to fix a problem produced more problems than it fixed. As clients finally saw what they were getting, they often changed their minds about what they wanted. At least one very large military software systems project costing several hundred million dollars was abandoned because it could never be made to work properly.

The quality of programs also became a big concern. As computers and their programs were used for more vital tasks, like monitoring life support equipment, program quality took on new meaning. Since we had increased our dependency on computers and in many cases could no longer get along without them, we discovered how important it is that they work correctly.

Making a change within a complex program turned out to be very expensive. Often even to get the program to do something slightly different was so hard that it was easier to throw out the old program and start over. This, of course, was costly. Part of the evolution in the software engineering approach was learning to develop systems that are built well enough the first time so that simple changes can be made easily.

At the same time, hardware was growing ever less expensive. Tubes were replaced by transistors and transistors were replaced by integrated circuits until micro computers costing less than three thousand dollars have become several million dollars. As an indication of how fast change was occurring, the cost of a given amount of computing decreases by one half every two years. Given this realignment, the times and costs to develop the software were no longer so small, compared to the hardware, that they could be ignored.

As the cost of hardware plummeted, software continued to be written by humans, whose wages were rising. The savings from productivity improvements in software development from the use of assemblers, compilers, and data base management systems did not proceed as rapidly as the savings in hardware costs. Indeed, today software costs not only can no longer be ignored, they have become larger than the hardware costs. Some current developments, such as nonprocedural (fourth generation) languages and the use of artificial intelligence (fifth generation), show promise of increasing software development productivity, but we are only beginning to see their potential.

Another problem was that in the past programs were often before it was fully understood what the program needed to do. Once the program had been written, the client began to express dissatisfaction. And if the client is dissatisfied, ultimately the producer, too, was unhappy. As time went by software developers learned to lay out with paper and pencil exactly what they intended to do before starting. Then they could review the plans with the client to see if they met the client’s expectations. It is simpler and less expensive to make changes to this paper-and-pencil version than to make them after the system has been built. Using good planning makes it less likely that changes will have to be made once the program is finished.

Unfortunately, until several years ago no good method of representation existed to describe satisfactorily systems as complex as those that are being developed today. The only good representation of what the product will look like was the finished product itself. Developers could not show clients what they were planning. And clients could not see whether what the software was what they wanted until it was finally built. Then it was too expensive to change.

Again, consider the analogy of building construction. An architect can draw a floor plan. The client can usually gain some understanding of what the architect has planned and give feed back as to whether it is appropriate. Floor plans are reasonably easy for the layperson to understand because most people are familiar with the drawings representing geometrical objects. The architect and the client share common concepts about space and geometry. But the software engineer must represent for the client a system involving logic and information processing. Since they do not already have a language of common concepts, the software engineer must teach a new language to the client before they can communicate.

Moreover, it is important that this language be simple so it can be learned quickly.

Posted in general | Comments Off on Why Do We Need Software Engineering?