Featured post

Using Twilio to answer phone calls

In a  previous post , I wrote about how to use  Twilio  to send an SMS message. This time, I'm going to show you how you can u...

Popular Posts

FREE SOFTWARE OF MOBILE AND COMPUTER.....FREE NIMBUZZ SOFTWARE....FREE TRICK TO HACKING WITH UC BROWESSER....ALL free PROXY SOFTWARE...all wall paper...alll.games

Search This Blog

This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Friday, 19 July 2013

Causes Of Software Project Failure


Most software projects fail completely or partial failures because a small number of projects meet all their requirements. These requirements can be the cost, schedule, quality, or requirements objectives. According to many studies, failure rate of software projects is between 50% - 80%. This essay is a compilation of failure causes of software development projects; this essay summarises several areas that play a vital role in software project failure.
So, what really is the reason for software project failure? The sad fact is that software projects fail because we do not recognize that good engineering principles should be applied to software projects just as they are to building office buildings. We try to defend ourselves by saying that software construction is "different".
One of the most serious complaints against software failure is the inability
to estimate with acceptable accuracy the cost, resources, and schedule necessary
for a software project. Conventional assessment methods have always produced
positive results which contribute to the too well-known cost infested and
schedule slippage.
Over the last 20 years many cost and schedule estimation techniques have been
used with mixed sensation due to restrictions of the assessment models. A major
part of the estimations failure can be due to a lack of understanding of the
software development process and the effect of that method used in the project
plan, schedule and cost estimates.
Failure Case Studies 
Below are few of the case studies considered which will be analysed to fetch
the main reasons of failure of the software system.
Northumbria University developed accounting software to manage its day to day
business. The project could not come up with the desired results and failed to
meet the deadlines. Te investigations showed that the basic project management
procedures were not followed. This case study is referenced in this essay at
different points where necessary. [1]
Thai subsidiary (SMTL) of a Hong Kong-based multinational company (SMHK)
engaged in the manufacturing of electronic equipment. They implemented an
integrated software package; which was a failure at the several factors. These
factors were mostly management related. Such as a poor fit between the business
process assumptions inscribed in the software and the business processes in SMTL,
poor leadership at different levels, cultural differences, organizational
environment, and poor human resource management.
St John's Hospital is a District General Hospital provides medical and
nursing services, which includes both general surgery and medicine.All these
services are supported by diagnostic imaging, laboratory, ambulance, pharmacy
and therapy services, which are all on site. As the major hospital in a tourist
area, it deals with many visitors in the holiday season, generating a large
amount of non-booked admissions work.
Software Management & Leadership 
It has been shown repeatedly, that effective leadership is essential for successful IT implementation (Klenke, 1994). A leader must also have cultural sensitivity, communication skills, creativity, ability to delegate, and the ability to develop and retain human resources (Luthans, 1994). The software manager at (SMHK) was a western, where as the lower managers were Eastern. So there was a cultural clash going on always. Jack (Manager) always try to introduce creative thoughts. And most of the time the lower management could not do them. Hence there was a clash going on all the time.
Employees also felt that management hardly ever "listened" to their concerns
or attempted to address them. Consequently, many employees were eager to leave
the company, and did so as soon as they found alternate opportunities in other
companies.
Project Planning & Scheduling 
Project planning means creating work breakdown, and then allocate responsibilities to the developers over time. Project planning consists of construction of various tasks, timelines and essential pathways including Gantt charts and PERT charts and different written plans for various situations.
It is quite usual in software development process to work backward from the
project end date which results in complete software project failure. It is
impossible that a project can be completed efficiently from the planning stage
to the implementation stage.
Allocation of roles and responsibilities has to be clearly defined, and it
becomes crucial while hiring the stall from outside. University's higher
management failed to apply the basic project management rules which laid to the
project failure.
Proper scheduling is also required before the start of the project. It
includes the time scheduling, teams scheduling. Project managers don't know what
they have to plan and schedule. They just only tell the programmer what to do
and the programmers can come up with a proper solution.
The development was moved to a new office and the office was not fully
equipped with the proper infrastructure. As time is also a big factor in success
or failure of a project. So it delayed the development process and contributed
towards the project failure. Infrastructure was not fully scheduled and
management team didn't know where and how the project development will be
started.
The top secret of a winning software development project is to control the
quality up and lower the risk. Contingency plan is also the part of planning. In
case things went wrong then this plan can be followed to lower the affect of the
failure of project. Same was the case with university's accounting software. The
management team had no such a contingency plan nor did they evaluate the risk
involved in the development of the new system. So it caused more trouble without
the backup system or backup plan.
The management just try to follow the methodologies like SDLC or RAD, but don't know which methodology to use and at which time should apply the right technique.
Cost Estimation 
Cost estimation is mainly involved the cost of effort to produce the software project. But it's not limited to the effort only. It also includes the hardware and software cost, training the employees and customer, travelling to the customer, networking and communication costs. Cost estimation should be done as a part of the software process model.
Cost estimation needs to be done well before the start of the project
development. Failure of the budgeting for the cost of the project results in
complete disaster. As stated above the infrastructure cost, development tools
cost and hardware cost also needs to be estimated first.
Same thing happened to university's accounting system development. They
purchased the new system well with out any serious estimation of the cost and
the income sources.
Below are the reasons why wrong cost estimation is done.

Real Estate Software - An Agent's Guide to Software


Each, day thousands of real estate professionals go online to research real estate software. But what is real estate software, and how can it help you improve your real estate business? These are the questions we will address here.
What is Real Estate Software?
When we talk about real estate software, we're actually covering a wide spectrum of software products. In general terms, real estate software is any software that helps you manage some aspect of your real estate business.
The "some aspect" part of that definition is important, because to date there is no real estate software that will help you manage all aspects of your business. Instead, most types of real estate software are designed to help you manage a certain element of your business, like contract preparation for example.
Various Types of Real Estate Software
Below, we look at some of the most popular types of real estate software. As you will see, each type of software is designed to help you perform a certain part of your real estate business. Please note that this list is not all-inclusive. There are more types of real estate software than I could possibly cover in this one resource. So at the end of this guide, I've listed some additional resources where you can find any type of real estate-related software imaginable.
Content Management Systems
Some types of real estate software are designed to help you manage property listings on your website. Basically, these are content management systems (CMS) that have been adapted for real estate purposes. A good example of such a program would be Realty Manager by Interactive Tools.
Such programs allow you to add, edit or remove property listings (including house photos) within your real estate website -- without any knowledge of web coding. If you have listings on your website that require constant management, you can see the convenience of this kind of real estate software.
Real Estate Contract Software
As the name implies, this type of real estate software helps agents prepare real estate contracts. As you well know, contracts are a big (and often time-consuming) part of the real estate business. So anything that can streamline and simplify the process would be welcomed by real estate agents. That's what contract-management software strives to do.
One of the best features of real estate contract software -- a feature you should look for when purchasing this type of software -- is the ability to create contract templates by pulling in required disclosures and other commonly used items from your city and state. This way, once you have the real estate contract software set up how you want, you would simply enter new client details and listing prices to generate contracts.
Real Estate CMA Software
Once again, the name tells you what this type of real estate software does. CMA software helps you prepare comparable listings / sales reports that you can show to clients. The biggest benefits of this type of software are time savings, professional appearance, and basic mathematical functions. CMA software will help you produce an attractive and informative CMA report in less time than doing it without software assistance.
Contact Management Software
Contact management software is not to be confused with contract management software. Though they only differ by one letter, these two types of software have nothing in common. Contact management software helps you manage your contacts, or client communications.
Most of these applications are built around databases. You enter client information into the database (with details such as name, phone number, neighborhood of interest, etc.), and then you can easily search the data later.
When choosing a contact management solution, look for one that allows customization of the data fields. You want the ability to create whatever info fields for each contact that's important to you. All of these programs will let you enter the basics, like name, phone number, address and the like. But what if you wanted to also label people with buyer vs. seller? Or by price range? Or by the neighborhoods they're interested in? You'll need this kind of flexibility, and any good contact managements solution should offer it.
Real Estate Educational Software
This is another popular type of real estate software. As the name implies, this kind of software helps you advance your professional education. The most common types of real estate educational software are the test preparation programs. These programs help you prepare for state licensing exams and other real estate-related professional exams. For just about every real estate exam you can imagine, there's a piece of software that can help you prepare for it.
Virtual Tour Software
Virtual tours are extremely popular among real estate professionals these days. Home buyers love virtual tours, so when you add them to your real estate website, you've increased your website's value for your key audience. The only problem is, virtual tours are not an easy thing to put together. That's where this type of real estate software comes in.
One way to create virtual tours is to have a virtual tour company do it for you. With this option, you shoot the photos or film footage yourself, and send it to a virtual tour company who creates the finished product. But for the more adventurous agents, there is also the virtual tour software path. Using this software, the agent creates his or her own virtual tours, using photos taken by the agents themselves.
Real Estate Website Software
This software covers a pretty broad spectrum. Real estate website software can help you with many aspects of your website, from creating graphics to capturing leads. But one product rarely does it all. Most types of real estate website software are highly specialized, performing a certain aspect of website enhancement.
Conclusion
So we've seen that for every type of real estate business function, there's a piece of software to help you do it more efficiently and (ideally) more effectively. Does that mean you need all of the real estate software on this list? Obviously not. My advice is to look at the business functions where you spend the most time, and shop for a software product that can simplify that process for you.
It's also a good idea to play around with different types of real estate software before buying. Most software vendors have either a free trial or an online demo through which you can judge the product for yourself. If you come across a software vendor who offers neither of these trial options, then keep shopping. When purchasing real estate software, always follow the rule of "try before you buy."


Article Source: http://EzineArticles.com/487256

List Of Top Accounting Software For Your Business


Simply put, accounting is the lifeline of a business. Accounting deals with summarizing, analyzing and reporting the financial data and information about a business. An accounting software records and processes the accounting transactions of a business within its functional modules. Financial statements consisting of the balance sheet, profit and loss account, and statement of changes in financial position can be easily prepared with an accounting software.
An accounting software is all about the various functional modules that it has. Some of them are- General ledger which takes care of the company's financial dealings; Accounts Payable where the company enters its bills and pays the money it owes; Accounts Receivable where money received is entered.
The different categories or types of accounting software are as follows:
a) Small business/personal accounting software which are mainly meant for home users. They are simple and inexpensive with simple functioning such as management of budgets.
b) Low end accounting software are for small business markets that are capable of serving a single national market. Such software are characterized by 'single entry' products.
c) Mid market accounting software are for companies with large businesses. These software are capable of serving the needs of multiple national accountancy standards and facilitate accounting in multiple currencies.
d) High end accounting software are complex and expensive business accounting software that are also known as Enterprise Resource Planning or ERP software.
However, you have to keep certain things in mind before buying an accounting software, like the prices of the software, its different features, its after-sales support and alike. Most of the accounting software include all the important accounting modules. The more specialized features a software has, the more expensive it becomes. Your software features must be compatible with your business. Also, the after-sales support is important like FAQ package, local service center and others.
There are a lot of top accounting software available in every category. So, it is not easy to select the best ones. Below are top five accounting software in every category.
A. Small business/personal accounting software:
1.ePeachtree (Best Software)
2.MYOB Plus for Windows (MYOB Software)
3.Peachtree Complete Accounting (Best Software)
4.QuickBooks Online (Intuit)
5.Small Business Manager (Microsoft)
B. Low-End Accounting Software:
1.BusinessVision 32 (Best Software)
2.MAS 90 & MAS 200 (Best Software)
3.QuickBooks Pro 2003 (Intuit)
4.ACCPAC Pro Series (ACCPAC International)
5.Vision Point 2000 (Best Software)
C. Middle-Market Accounting Software:
1.ACCPAC Advantage Series Corporate Edition (Best Software)
2.Great Plains (Microsoft) MAS 90 & MAS 200 (Best Software)
3.Navision (Microsoft)
4.SouthWare Excellence Series (SouthWare)
5.SYSPRO (SysproUSA)
D. High-end accounting ERP Market:
1.Axapta (Microsoft Software)
2.e-Business Suite (Oracle)
3.MAS 500 (Best Software)
4.Solomon (Microsoft)
5.ACCPAC Advantage Series Enterprise Edition (Best Software)
In compiling the above list, a variety of factors such as feedbacks from customers, scalability of the software, and after-sales support are used. Also, the different attributes for different categories have been considered like for ERP software, attributes such as manufacturing solution, supply chain solution and database solution. The above compilation may not be all inclusive and some people might choose to differ with it but it is almost near to perfect list.


Article Source: http://EzineArticles.com/395741

What is Software Piracy?


There are several kinds of software piracy. The bottom line is when software is pirated, the developer does not receive compensation for their work.
Effects of Software Piracy
When software is pirated, consumers, software developers, and resellers are harmed. Software piracy increases the risk consumer's computers will be corrupted by defective software and infected with viruses. Those who provide defective and illegal software do not tend to provide sales and technical support. Pirated software usually has inadequate documentation, which prevents consumers from enjoying the full benefits of the software package. In addition, consumers are unable to take advantage of technical support and product upgrades, which are typically available to legitimate registered users of the software. Pirated software can cost consumers lost time and more money.
Developers lose revenue from pirated software, from current products as well as from future programs. When software is sold most developers invest a portion of the revenue into future development and better software packages. When software is pirated, software developers lose revenue from the sale of their products, which hinders development of new software and stifles the growth of the software company.
Kinds of Piracy
End User Piracy -
Using multiple copies of a single software package on several different systems or distributing registered or licensed copies of software to others. Another common form of end user piracy is when a cracked version of the software is used. Hacking into the software and disabling the copy protection, or illegally generating key codes that unlocks the trial version making the software a registered version creates a cracked version.
Reseller Piracy -
Reseller piracy occurs when an unscrupulous reseller distributes multiple copies of a single software package to different customers; this includes preloading systems with software without providing original manuals & diskettes. Reseller piracy also occurs when resellers knowingly sell counterfeit versions of software to unsuspecting customers.
Indications of reseller piracy are multiple users with the same serial number, lack of original documentation or an incomplete set, and non-matching documentation.
Trademark/Trade Name Infringement
Infringement occurs when an individual or dealer claims to be authorized either as a technician, support provider or reseller, or is improperly using a trademark or trade name.
BBS/Internet Piracy -
BBS/ Internet Piracy occurs when there is an electronic transfer of copyrighted software. If system operators and/or users upload or download copyrighted software and materials onto or from bulletin boards or the Internet for others to copy and use without the proper license. Often hackers will distribute or sell the hacked software or cracked keys. The developer does not receive any money for the software the hacker distributed. This is an infringement on the developer's copyright.
Another technique used by software pirates is to illegally obtain a registered copy of software. Pirates purchase the software once and use it on multiple computers. Purchasing software with a stolen credit card is another form of software piracy. Unfortunately there are many kinds of software piracy that has hampered the software industry.
These types of software piracy have hampered the software industry. For the software industry to prosper and further develop useful software for consumers please support and pay for software. This results in better software for all.


Article Source: http://EzineArticles.com/16268

How CRM Software Works -- Creating Customer Satisfaction with a Click


When people ask, "What is CRM?" the literal answer is, "Customer Relationship Management," but that doesn't really convey much in terms of what all CRM does for a business. This CRM definition is too narrow to really explain everything the system does if it is working to its fullest potential and is user-friendly enough to expand and grow as a customer-client relationship changes and grows.
CRM in the broader sense encompasses not only customer relationship management itself but how customer relationship management is handled and the most important elements of a CRM program that are essential to its being successful. The range of CRM software options vary from those that provide simple customer tracking and live chat capabilities to the more complex CRM solutions that can integrate all of the customer relationship data an enterprise has on each client past, present and future in a dynamic information data network.
What should I look for in a CRM software package?
If there's an ideal CRM software package that works for every company and every situation, it hasn't been discovered yet, simply because every company has slightly different needs for their customer relationship management needs as well as software implementation.
In general, however, when you are looking for a strong CRM software package there are a few things to keep in mind. If you are shopping for a CRM package, try to forget about the initial price tag at first (as difficult as this may be) and focus on the adaptability, usability and integrity of each system you evaluate as it relates to your particular needs. A few things to consider:

o What are the most important facets of customer relations are we looking to address, and does this CRM software support tracking and updating all aspects of this? For example, if your company wants to customer service to have ready access to changes in customer spending habits and an opportunity to offer new product options based on these records, make sure this capability is built into the software. Customization down the line will be time-consuming and expensive -- if you have a primary goal, make sure it is standard in your CRM software package.
o Will the CRM software package integrate smoothly with all platforms currently in use at your company? If you will have to re-enter all databases such as client names, addresses and phone numbers, this will significantly increase the amount of money you'll spend in the long run. Make sure that you can either integrate smoothly or import all information needed flawlessly.
o Is the product more than you need? An enterprise solution that offers fifteen functions you don't need and never will isn't a bargain if you will never expand into that market niche. Just because it's available doesn't mean you have to have it. Selling custom-sewn hats? You won't need a CRM software package for tracking million-dollar overseas accounts.
o Has this CRM software package been used for a company of your size before? If it has been used for companies up to 10,000 and you have 150,000, the system may simply not be able to sustain the volume of data and crash or develop glitches. Look for something more powerful with a support system capable of understanding the size of your company. 
Can you build me a dream CRM software package?
Hmm...let's see. The best CRM software package would be optimally functional across all platforms and have its own customer support backing it, and .... Well, let's take a look at our own list of what we'd really like in a CRM software package if money was no object and we could "have it all," so to speak:

o A CRM software provider that has partnerships with other vendors for support in the event you need it for integration of platforms.
o Extensive training from certified CRM software technicians who will walk your people through the process of setting up, using and training others on the system.
o Full data migration capabilities to and from all programs in current use to the new CRM software.
o Offsite server storage backup for all information in the CRM system for added security.
o A toolbox for company programmers for customizing templates for company use -- this will save huge amounts of time by eliminating the need to write custom codes from scratch.
o Either in-house consultants or a choice of contracted consultants they recommend (try not to be at the mercy of one consultant when there is a problem).
o A CRM software package designed by a company familiar with our specific industry and its structural needs. 
The best CRM software packages enable customer service representatives to review the account information of each client or customer when they are talking to him or her and immediately understand something about that person's needs, wants and spending patterns.
For banks, CRM software can indicate their banking patterns -- are they investing through the bank? Have they recently looked into a money market fund? Do they have substantial funds that could be put to better use than languishing in a simple CD?
A mail order company can note your shopping tendencies and make Christmas shopping suggestions based on past purchases by seeing that you buy a lot of kids' clothes and that you spend about $200 each holiday. Used correctly, a toy company can steer you toward some bargains and suggest alternatives, enriching your shopping experience and building customer loyalty.
Why does CRM software fail so often after it's put into place?
You've heard the stories about a company buying a CRM software package and then realizing it hasn't really changed anything. The big-wigs are disappointed, customer service is frustrated, and the clients are aggravated with the new changes that don't seem to show any improvements in customer service or client relations. How does it happen?
Because CRM software was purchased that wasn't appropriate, was purchased too soon, or wasn't implemented properly. If you don't purchase CRM software that specifically addresses what your customer concerns are, you may have software that is very detailed in an area you don't need and somewhat lacking in exactly what you do need.
Purchasing too soon means you bought the software before you had evaluated what you really wanted. Many companies by CRM software with a goal "to improve customer relations," which is not a clear business goal! You should have a very specific, well-defined objective that your CRM software solution can address, and you company should have developed a formal objective before you went shopping for a solution. Retaining customers? Improving the size of current customer portfolios? Penetrating a new market niche? Reduce customer complaints? Improve customer repair response? Determine what it is you want to focus on as a goal, and then choose your CRM software solution based on how it will address it.
Finally, implementation of a new CRM program requires proper management support and effective training. That means that management must be behind it one hundred percent, and not have "head in the sand" approach where they determine that "that's for customer service, I never did understand that stuff," and avoid learning how the CRM software works. It is an attitude that will pervade the company.
Second, training is essential and must encompass the company to ensure that all levels of personnel will embrace the new system and understand the genuine need for it and the real goal of what you are trying to achieve with your new CRM software solution.
Some CRM software options for small and medium sized businesses
For small and medium businesses, the most common customer relations management software request is for anything that enhances online communications and improves the time between a customer complaint or question and resolution of the issue for them.
For many companies, there are software solutions that can be purchased or downloaded to be used through their Internet website for basic services such as online customer support through live chat and customer assistance with online purchasing that is both efficient and relatively inexpensive. If your need is primarily to improve sales volume, improve response to customer questions and complaints and to make your company website more personalized, look into these solutions that are at the lower end of the price spectrum while providing solid CRM products:

o LivePerson offers two different versions, Basic and Enterprise that provide live chat, email and a variety of interactive forms customized to meet companies' needs for customer relations. This company has developed live chat solutions and online forms for everything from universities to financial services firms. This company provides a wide range of services, including online marketing, case studies, and software designed to improve online shopping cart capabilities.
o LiveHelper offers many of the same features, and adds real time traffic monitoring and other data assessment features as well. For the price, LiveHelper is a very good CRM software value.
o GroopZ includes customer routing software so that you can transfer entire chat strings from one customer service rep to another if you need be, along with an efficient filing system for chat transcripts and customer records. For improving customer relations, the software support suggests pre- and post-service questions for all customers who contact you.
Also included are templates you can set up with specific, pre-scripted answers to frequently asked questions in online chat to save customer service representatives time and make the process clearer and more efficient. This company does a bit more customizing on the front end to fit your needs, and pricing is adjusted accordingly.
o SupportWizard gives you three CRM options that give you some flexibility -- you can buy, lease or let them host your customer service/relations solutions. Interactive FAQs, live chat, standard answers to frequent questions, and Boolean search capabilities to review past interactions all make this package extremely effective. SupportWizard also has more customizable features than some, including an "escalation alert" that can be tailored to specific situations when a supervisor would be notified if a customer service situation exceeds certain parameters.
This is one of the more expensive packages available, but rather than a monthly fee you are paying for lease or outright purchase options, so factor this into the cost. You will also get spectacular customer support and constant upgrades and patches when necessary. The integration of email, live chat and telephone information into one database is also a plus with SupportWizard.
o BoldChat offers free CRM software for online customer service chat that you can use for a limited time, and offers a $9.95/month and a $39.95/month customized version of their CRM software. Both offer live customer service chat, but one adds customized windows and more options on buttons and the number of available customer service reps you can add.
o CSLive offers the most comprehensive CRM software solution available for small and medium businesses, with live chat, email, and the usual customer service features you expect from a small business CRM solution, but with plenty of extras. CSLive also offers an extensive tracking and filing system, an Internet server site where you can upload and store files of customer help articles that customers can be referred to that can by emailed directly to clients by your reps. Throw in the message center and online meetings, and this is practically an enterprise sized solution at a small business price of $29.95 a month.


Article Source: http://EzineArticles.com/6979

Software Maintenance Implications on Cost and Schedule


Abstract The dictionary defines maintenance as, "The work of keeping something in proper order." However, this definition does not necessarily fit for software. Software maintenance is different from hardware maintenance because software doesn't physically wear out, but often gets less useful with age. Software is typically delivered with undiscovered flaws. Therefore, software maintenance is: "The process of modifying existing operational software while leaving its primary functions intact." Maintenance typically exceeds fifty percent of the systems' life cycle cost . While software maintenance can be treated as a level of effort activity, there are consequences on quality, functionality, reliability, cost and schedule that can be mitigated through the use of parametric estimation techniques.
1. INTRODUCTION One of the greatest challenges facing software engineers is the management of change control. It has been estimated that the cost of change control can be between 40% and 70% of the life cycle costs . Software engineers have hoped that new languages and new process would greatly reduce these numbers; however this has not been the case. Fundamentally this is because software is still delivered with a significant number of defects. Capers Jones estimates that there are about 5 bugs per Function Point created during Development . Watts Humphrey found "... even experienced software engineers normally inject 100 or more defects per KSLOC . Capers Jones says, "A series of studies the defect density of software ranges from 49.5 to 94.5 errors per thousand lines of code ." The purpose of this article is to first review the fundamentals of software maintenance and to present alternative approaches to estimating software maintenance. A key element to note is that development and management decisions made during the development process can significantly affect the developmental cost and the resulting maintenance costs.
2. SOFTWARE MAINTENANCE Maintenance activities include all work carried out post-delivery and should be distinguished from block modifications which represent significant design and development effort and supersede a previously released software package. These maintenance activities can be quite diverse, and it helps to identify exactly what post-delivery activities are to be included in an estimate of maintenance effort. Maintenance activities, once defined, may be evaluated in a quite different light than when called simply "maintenance". Software maintenance is different from hardware maintenance because software doesn't physically wear out, but software often gets less useful with age and it may be delivered with undiscovered flaws. In addition to the undiscovered flaws, it is common that some number of known defects pass from the development organization to the maintenance group. Accurate estimation of the effort required to maintain delivered software is aided by the decomposition of the overall effort into the various activities that make up the whole process.
3. APPROACHING THE MAINTENANCE ISSUE Maintenance is a complicated and structured process. In his textbook, Estimating Software Intensive Systems, Richard Stuzke outlines the typical software maintenance process. It is apparent that the process is more than just writing new code.
The following checklist can be used to explore the realism and accuracy of maintenance requirements.
o Which pieces of software will be maintained?
o How long will the system need to be maintained?
o Are you estimating the entire maintenance problem, or just incremental maintenance?
o What level of maintenance is required?
o Is that which is being called maintenance in fact a new development project?
o Who will do the maintenance? Will it be done organically by the original developer? Will there be a separate team? Will there be a separate organization?
o Will maintainers be using the same tools used during development? Are any proprietary tools required for maintenance?
o How much Commercial-Off-The-Shelf (COTS) is there? How tightly coupled are the interfaces?
o Some follow-on development may be disguised as maintenance. This will either inflate maintenance figures, or else cause shortfalls if basic maintenance gets pushed aside. These questions will help you ask whether maintenance is being honestly represented.
o Is the activity really an incremental improvement?
o Are healthy chunks of the original code being rewritten or changed?
o Will additional staff be brought in to perform the upgrade?
o Is the maintenance effort schedule regular and fairly flat, or does it contain staffing humps that look like new development?
4. SANITY CHECKS Although sanity checks should be sought on a year-by-year basis, they should not be attempted for overall development. The reason for this is that maintenance activities can be carried on indefinitely, rendering any life-cycle rules useless. As an example, consider Grady (p. 17):
We spend about 2 to 3 times as much effort maintaining and enhancing software as we spend creating new software.
This and similar observations apply at an organizational level and higher, but not for a specific project. Any development group with a history will be embroiled in the long tail ends of their many delivered projects, still needing indefinite attention. Here are a few quick sanity checks:
o One maintainer can handle about 10,000 lines per year.
o Overall life-cycle effort is typically 40% development and 60% maintenance.
o Maintenance costs on average are one-sixth of yearly development costs.
o Successful systems are usually maintained for 10 to 20 years.
Finally, as in development, the amount of code that is new versus modified makes a difference. The effective size, that is, the equivalent effort if all the work were new code, is still the key input for both development and maintenance cost estimation.
5. FIVE ALTERNATIVE APPROACHES All software estimation techniques must be able to model the theory and the likely real world result. The real world scenario is that over time, the overlay of changes upon changes makes software increasingly difficult to maintain and thus less useful. Maintenance effort estimation techniques range from the simplistic level of effort method, through more thoughtful analysis and development practice modifications, to the use of parametric models in order to use historical data to project future needs.
5.1 Level of Effort As is sometimes the case in the development environment, software maintenance can be modeled as a level of effort activity. Given the repair category activities and the great variance that they show, this approach clearly has deficiencies. In this approach, a level of effort to maintain software is based on size and type.
5.2 Level of Effort Plus Stuzke proposed that software maintenance starts with basic level of effort (minimum people needed to have a core competency and then that that basic core staff must be modified by assessing three additional factors; configuration management, quality assurance, and project management. His process addressed some of the additional factors affecting software maintenance.
5.3 Maintenance Change Factor Software Cost Estimation with COCOMO II (Boehm 2000) proposes a deceivingly simple, but also quite useful methodology for determining annual maintenance. Maintenance is one of the menu selections in the menu bar. In COCOMO II Maintenance encompasses the process of modifying existing operational software while leaving its primary functions intact. This process excludes:
o Major re-design and re-development (more than 50% new code) of a new software product performing substantially the same functions.
o Design and development of a sizeable (more than 20% of the source instructions comprising the existing product) interfacing software package which requires relatively little redesigning of the existing product.
o Data processing system operations, data entry, and modification of values in the database.
The maintenance calculations are heavily based upon the Maintenance Change Factor (MCF) and the Maintenance Adjustment Factor (MAF). The MCF is similar to the Annual change Traffic in COCOMO81, except that maintenance periods other than a year can be used. The resulting maintenance effort estimation formula is the same as the COCOMO II Post Architecture development model.
As stated previously, three cost drivers for maintenance differ from development. Those cost drivers are software reliability, modern programming practices, and schedule. COCOMO II assumes that increased investment in software reliability and use of modern programming practices during software development has a strong positive effect upon the maintenance stage.
Annual Maintenance Effort = (Annual Change Traffic) * (Original Software Development Effort)
The quantity Original Software Development Effort refers to the total effort (person-months or other unit of measure) expended throughout development, even if a multi-year project.
The multiplier Annual Change Traffic is the proportion of the overall software to be modified during the year. This is relatively easy to obtain from engineering estimates. Developers often maintain change lists, or have a sense of proportional change to be required even before development is complete.
5.4 Managing Software Maintenance Costs by Developmental Techniques and Management Decisions During Development
When it comes to maintenance, "a penny spent is a pound saved." Better development practices (even if more expensive) can significantly reduce maintenance effort, and reduce overall life cycle cost. The more effort put into development, the less required in maintenance. As an example, the software development cost and schedule can be significantly impacted (reduced) by letting the number of defects delivered grow. This cost and schedule reduction is more than offset by the increase in maintenance cost. The following discussion is an example of how management decision can significantly affect/reduce software maintenance costs.
Lloyd Huff and George Novak of Lockheed Martin Aeronautics in their paper "Lockheed Martin Aeronautics Performance Based Software Sustainment for the F-35 Lightning II" propose a series of development and management decision designed to impact and reduce software maintenance costs. They propose an eight step process to estimate and control software maintenance . Their proposed steps are:
1. Strive for Commonality
2. Apply Industrial Engineering Practices to Software
3. Engage
4. Adopt a Holistic Approach to Sustainment
5. Develop Highly Maintainable Systems and Software
6. Manage the Off-the-Shelf Software
7. Plan for the Unexpected
8. Analyze and Refine the Software Sustainment Business Case (use Parametric software sustainment cost estimates)
5.5 A Parametric Assessment of Software Maintenance
Parametric models like SEER for Software allow maintenance to be modeled in either of two ways:
Estimating maintenance as a part of the total lifecycle cost. Choosing the appropriate Maintenance category parameters will include an estimate of maintenance effort with the development estimate for the individual software program. Several reports and charts show breakdowns of development vs. maintenance effort. This method is best used to evaluate life cycle costs for each individual software program.
Estimating maintenance as a separate activity. Using the appropriate maintenance parameters for the software to be maintained you can model the maintenance effort as a separate activity. This method will allow you to fine tune your maintenance estimate by adjusting parameters. Maintenance size should be the same as development size, but should be entered as all pre-existing code. This method can also be useful in breaking out total project maintenance costs from project development costs.
A good parametric estimate for maintenance includes a wide range of information. Critical information for completing a software maintenance estimate is the size or amount of software that will be maintained, the quality of that software, the quality and availability of the documentation, and the type or amount of maintenance that will be done. Many organizations don't actually estimate maintenance costs; they simply have a budget for software maintenance. In this case, a parametric model should be used to compute how much maintenance can actually be performed with the given budget.
Estimating and planning for maintenance are critical activities if the software is required to function properly throughout its expected life. Even with a limited budget, a plan can be made to use the resources available in the most efficient, productive manner. Looking at the diagram above, you can see that not only are the multiple inputs that impact the maintenance, but there are several key outputs that provide the information necessary to plan a successful maintenance effort.
6. Conclusion The conclusions of this article are:
o Software maintenance can be modeled using a simplistic method like Level of Effort Staffing, but this technique has significant drawbacks.
o Software maintenance costs can be significantly affected by management decisions during the developmental process.
o Software maintenance can be accurately estimated using parametric processes.
o Software maintenance is best modeled when development and management decisions are coupled with parametric cost estimation techniques.
REFERENCES [1] Software Maintenance Concepts and Practices (second Edition) by Penny Grubb and Armstrong Takang, World Scientific, 2005.
[2] Estimating Software Intensive Systems; Richard Stuzke, 2005, Addison-Wesley.
[3] Lloyd Huff, George Novak; Lockheed Martin Aeronautics; Lockheed Martin Aeronautics Performance Based Software Sustainment for the F-35 Lightning II.
[4] G. Edward Bryan, "CP-6: Quality and Productivity Measures in the 15-Year Life Cycle of an Operating System," Software Quality Journal 2, 129-144, June 1993.
[5] Software Sizing, Estimation, and Risk Management; Daniel D. Galorath, Michael W. Evans, 2006, Auerbach Publications.


Article Source: http://EzineArticles.com/1328928