Archive for June, 2021

Software Maintenance Implications on Cost and Schedule

June 10th, 2021

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 pa

The Best Free Registry Cleaner Reviews Online

June 10th, 2021

At times when you’re computer slows down, experiences BSOD, or really takes time booting up or installing something, there is a really big necessity to clean up. These symptoms indicate that there is a virus infection in your computer or a registry problem perhaps. But before jumping into conclusion of using whatever registry cleaner you first discover, read along.

There are a lot of reasons why you need to check free registry cleaner reviews to help you decide which one to use. First is that you have to download a reputable registry cleaner that will surely be able to thoroughly clean your registry. There are some imitation software that don’t work or might make things worse! It is important to read free registry cleaner reviews so you can download a highly recommended tool that is tested by other users.

Most of the top-rated registry cleaners have very user-friendly interface, yet there are others which are complicated. The free registry cleaner reviews will help you identify registry cleaners that are easy to use. You should also be very careful because there are some registry cleaners that are reportedly causing more damage to the computers. It’s so unsafe, especially when there is no customer support guaranteed. Lastly, it’s good to read free registry cleaner reviews so that you can determine which quality product suits your budget.

You can check many sites to see unbiased and in-depth registry cleaner comparison. The site aims to help you make the right decision in getting the best registry cleaner to use. According to the site, after extensive test, Registry Fix is the top registry cleaning software. It’s really easy to use and is very effective in getting rid of all known errors in computers. Registry Fix gives a free scan.

Another free registry cleaner review will show you all the latest registry cleaners. They’ve highly recommended RegCure as the best registry cleaner. RegCure scans your PC in a matter of seconds then fix corrupt registry immediately. They also recommend RegistryFix, Error Nuker, RegSweep, Registry Easy and RegClean.

Another set of highly recommended registry cleaners from free registry cleaner reviews includes the CCleaner, Reg Mechanic, and Registry Medic. These registry cleaners also have powerful scanning system and are easy-to-use. Reg Mechanic even has an algorithm that can determine which files on the registry are unnecessary and which ones needs to be kept. They also have the friendliest interface that is really painless.

Those are just two of the best sites that give free registry cleaner reviews. Through the help of these reviews, you won’t need to feel frustrated spending a lot of time and effort in trying to fix your registry. There is a wide range of quality registry repair utilities that will automatically clean your computer for you. The top rated registry cleaners suggested in the sites can work well whether you have Windows 98SE, ME, 2000, XP or Vista.

So if you need to do a clean up now, check out the best reviews online so you can properly decide. Be careful not to pick the wrong software. Besides, registry cleaners are supposed to help you out, not make things worse.