Major cause of software maintenance problems


















Cost driver attributes affect the estimates. Experience, in the form of expert judgment, is often used to estimate maintenance effort.

Clearly, the best approach to maintenance estimation is to combine historical data and experience. The cost to conduct a modification in terms of number of people and amount of time is then derived. Maintenance estimation historical data should be provided as a result of a measurement program.

There are several software measures that can be derived from the attributes of the software, the maintenance process, and personnel, including size, complexity, quality, understandability, maintainability, and effort. Complexity measures of software can also be obtained using available commercial tools.

Discussion of software process and product measurement is also presented in the Software Engineering Process KA. The software quality model suggests measures that are specific for software maintenance. Providing software maintenance effort, by categories, for different applications provides business information to users and their organizations. It can also enable the comparison of software maintenance profiles internally within an organization. In addition to standard software engineering processes and activities described in IEEE , there are a number of activities that are unique to maintainers.

Software maintenance activities include. Recently, agile methodologies, which promote light processes, have been also adapted to maintenance. This requirement emerges from the everincreasing demand for fast turnaround of maintenance services.

Improvement to the software maintenance process is supported by specialized software maintenance capability maturity models see [6] and [7], which are briefly annotated in the Further Readings section. The maintenance process contains the activities and tasks necessary to modify an existing software product while preserving its integrity.

These activities and tasks are the responsibility of the maintainer. As already noted, many maintenance activities are similar to those of software development. Maintainers perform analysis, design, coding, testing, and documentation.

They must track requirements in their activities—just as is done in development—and update documentation as baselines change. However, for software maintenance, some activities involve processes unique to software maintenance.

There are a number of processes, activities, and practices that are unique to software maintenance:. Maintainers may also perform support activities, such as documentation, software configuration management, verification and validation, problem resolution, software quality assurance, reviews, and audits.

Another important support activity consists of training the maintainers and users. An important activity for software maintenance is planning, and maintainers must address the issues associated with a number of planning perspectives, including.

At the individual request level, planning is carried out during the impact analysis see section 2. Whereas software development projects can typically last from some months to a few years, the maintenance phase usually lasts for many years.

Making estimates of resources is a key element of maintenance planning. Software maintenance planning should begin with the decision to develop a new software product and should consider quality objectives. A concept document should be developed, followed by a maintenance plan. The next step is to develop a corresponding software maintenance plan. This plan should be prepared during software development and should specify how users will request software modifications or report problems.

Software maintenance planning is addressed in IEEE It provides guidelines for a maintenance plan. Finally, at the highest level, the maintenance organization will have to conduct business planning activities budgetary, financial, and human resources just like all the other divisions of the organization.

Management is discussed in the chapter Related Disciplines of Software Engineering. IEEE describes software configuration management as a critical element of the maintenance process.

Software configuration management procedures should provide for the verification, validation, and audit of each step required to identify, authorize, implement, and release the software product.

It is not sufficient to simply track modification requests or problem reports. The software product and any changes made to it must be controlled. This control is established by implementing and enforcing an approved software configuration management SCM process. The Software Configuration Management KA provides details of SCM and discusses the process by which software change requests are submitted, evaluated, and approved.

SCM for software maintenance is different from SCM for software development in the number of small changes that must be controlled on operational software. The SCM process is implemented by developing and following a software configuration management plan and operating procedures. It is not sufficient to simply hope that increased quality will result from the maintenance of software. Maintainers should have a software quality program.

It must be planned and processes must be implemented to support the maintenance process. It is also recommended that the maintainer adapt the software development processes, techniques and deliverables for instance, testing documentation , and test results.

More details can be found in the Software Quality KA. Programmers spend considerable time reading and understanding programs in order to implement changes. Code browsers are key tools for program comprehension and are used to organize and present source code. Clear and concise documentation can also aid in program comprehension. Reengineering is defined as the examination and alteration of software to reconstitute it in a new form, and includes the subsequent implementation of the new form.

It is often not undertaken to improve maintainability but to replace aging legacy software. Refactoring is a reengineering technique that aims at reorganizing a program without changing its behavior. It seeks to improve a program structure and its maintainability. Refactoring techniques can be used during minor changes. Reverse engineering is passive; it does not change the software or result in new software. Reverse engineering efforts produce call graphs and control flow graphs from source code.

One type of reverse engineering is redocumentation. Another type is design recovery. Finally, data reverse engineering, where logical schemas are recovered from physical databases, has grown in importance over the last few years. Tools are key for reverse engineering and related tasks such as redocumentation and design recovery.

In order to migrate it to a new environment, the maintainer needs to determine the actions needed to accomplish the migration, and then develop and document the steps required to effect the migration in a migration plan that covers migration requirements, migration tools, conversion of product and data, execution, verification, and support.

Migrating software can also entail a number of additional activities such as. Once software has reached the end of its useful life, it must be retired. An analysis should be performed to assist in making the retirement decision. This analysis should be included in the retirement plan, which covers retirement requirements, impact, replacement, schedule, and effort.

We apologise for the inconvenience this caused our passengers. Our teams continue to closely monitor our systems and will be on hand across our terminals to provide assistance to passengers," the spokesperson added by way of a statement.

British Airways was struck by yet another IT glitch in August , when system failures caused more than flights to be cancelled and more than others to be delayed. The incident affected one system for online check-ins and another for flight departures, forcing the airline to revert to manual check-in procedures, leading to long queues at Heathrow, Gatwick and London City airports. The airline said in a statement in the afternoon that the issue had been resolved but some knock-on disruption may continue as a result.

This follows as many as six IT outages at BA since In May an IT failure affected over 1, flights, British Airways call centres, the website and mobile app. According to the GMB Union, the failure could have been avoided if the airline had not made hundreds of its IT staff redundant in Since Mark Zuckerberg brought WhatsApp and Instagram into his social media empire, users have increasingly had to deal with not one but three of their favourite platforms suffering from outages whenever Facebook experiences a technical issue.

In the first week of July , users across the globe found themselves unable to load photos in the Facebook News Feed, view stories on Instagram, or send messages in WhatsApp. On December 6th , more than 30 million O2 users in the UK lost access to data services after a software issue left them unable to use 3G and 4G services.

Customers of O2 and the other companies using its network including Tesco Mobile, Sky Mobile, Lycamobile, O2 subsidiary Giffgaff were affected after a software glitch in equipment supplied by Ericsson brought the network to its knees. The nationwide outage also affected Transport for London's live electronic timetables at bus stops.

Millions of TSB customers were locked out of their accounts after an IT upgrade led to an online banking outage. A planned system upgrade was expected to shut internet and mobile banking services down for one weekend in April , but ended up causing months of disruption. Immediately after the new system was switched on, many customers experienced problems logging in, while others were shown details from other people's accounts or inaccurate credits and debits on their own.

Customers remained locked out of their accounts two weeks after the initial outage. In July, TSB was still working its way through the backlog of complaints, when another outage struck, locking customers out of their online accounts once again. TSB claimed that the problem was resolved later that day, but the debacle will further rupture the bank's relationship with parent company Sabadell. In , doctors and hospital staff of the Wales NHS experienced a widespread computer failure that led to them being unable to access patient files.

According to the National Cyber Security Centre, the failure was due to technical issues as opposed to a cyber attack yet it still caused wide disruption as GPs were unable to access blood and X-Ray results. It also caused a backlog as patients could not be contacted to cancel appointments, and notes could not be typed up and saved on NHS systems. At the start of , Google researchers revealed CPU hardware vulnerabilities called Meltdown and Spectre had affected almost all computers on the market.

Daniel Gruss, one of the researchers that discovered the flaw at Graz University of Technology described Meltdown as "one of the worst CPU bugs ever found". Although these are both primarily hardware vulnerabilities, they communicate with the operating system to access locations in its memory space.

Read next: Meltdown and Spectre chip flaw timeline. Meltdown, Google explains , "breaks the most fundamental isolation between user applications and the operating system. This allows a program to access the memory, and also the secrets, of other programs and the operating system. Spectre meanwhile "breaks the isolation between different applications" — "it allows an attacker to trick error-free programs, which follow best practices, into leaking their secrets.

The attack was due to vulnerabilities found in Microsoft operating systems installed in millions of computers around the world. See also: WannaCry ransomware timeline. According to Microsoft, the Windows versions that were vulnerable to the attack were versions which were no longer supported by Microsoft such as Windows 8 and Windows XP, which the NHS trusts and affected companies seemed to be running. In February , Cloudflare faced a major software bug that led to sensitive customer data like passwords, cookies and authentication tokens to get leaked from customer websites.

Cloudflare is known to provide performance and security services to millions of customer websites and although the bug was patched within hours, it is expected that the data leakage could have started as early as September Bitcoin Unlimited suffered a serious memory leak which caused several nodes to fall from to about This is almost 70 percent of the nodes run by Bitcoin Unlimited at the time. Although the memory leak was patched fairly quickly, this appeared to be the third memory leakage to crash the preferred method for Bitcoin Unlimited.

For the sixth time in a year, British Airways faced a massive global IT failure which led to the airline cancelling all flights from Heathrow and Gatwick in May The IT failure affected over 1, flights, British Airways call centres, the website and mobile app. Nest said the fault had been caused by a December 4.

It has since rolled out a 4. Millions of the bank's customers were unable to access online accounts. Services only returned to normal after a two-day outage. In December a glitch caused more than 3, US prisoners to be released early. According to reports, the problem has been ongoing for 13 years until a new IT boss was appointed and informed the governor's office.

It is estimated that on average prisoners were released 49 days early. HSBC again! In August a reported , individual payments failed to be processed by HSBC, which left many potentially without pay before the Bank Holiday weekend. The cause of this major failure was a problem with its electronic payment system for its business banking users which affected salary payments. Bacs is the payment system that is used for payment processes across the UK is reported to have picked up on the issue but noted that it was an 'isolated issue'.

For example, the addition of numerous workarounds over a period of time in legacy systems can have the overall effect of convoluting the original system design. Obsolete software - Software that no longer works due to new hardware or support software changes - This refers to software that is based on functions found in older versions of databases and operating systems.

An example of this can be found in old COBOL code that will not compile on new compilers due to the use of verbs that are no longer supported in the compiler. Many vendors try to make new releases of support software upwardly compatible, but there are usually cases where one minor area of non-support from the base system can cause a major revision of the system.

The only other option is not to upgrade the support software. This decision can be justified for the short-term, but a point is usually reached where the software must either be replaced or modified.

Inconsistent processing - Software that only works correctly in one environment — This refers to software that has been designed for only one environment and cannot be easily transported and used in another environment. Of course, some software is designed to work in only one environment. However, if an organization adopts new technology that requires software be portable to new environments, then the software will need to be modified or replaced if it can't meet the new technical requirements.

Difficult to maintain and understand - This refers to the ability of a programmer or developer to maintain the software. To maintain software, the person performing the maintenance must first analyze and understand the software.

Much of the software in existence today was initially written in an unstructured manner and then patched on an as-needed basic over a long period of time. This type of software structure results in what is known as "spaghetti code," which is complex and unstructured.

To add to the problem, when changes are made to this kind of software, there is a higher risk of creating new defects unintentionally. Unreliable results or performance - This means that the software does not deliver consistently correct results or cannot be depended to work correctly each time it is used.

Inadequate support of business needs or objectives - This refers to software that is inflexible to meeting business needs. For example, a system may be difficult to modify to meet and organization's needs or may lack features to allow the users to customize business rules.

No longer supported by the vendor - This occurs when a vendor ceases to support a particular software product. This can occur due to the vendor's decision to no longer support a product, due to the vendor going out of business, or the vendor selling the product to another vendor. Incorrect or inadequate interfaces with other systems - This means that the software does not correctly accept input data, control, parameters, etc.

An example of this is when a system has an electronic data interfaces EDI with external systems, but does not correctly receive or format the information. Incorrect matching and merging of data - This refers to situations where data is obtained from one source and matched or merged with data from another source. Examples include sorting multiple files into a single file or table or matching data from a master file to an ID number entered as a lookup entry.

Data searches that yield incorrect results - This means that a search retrieves incorrect data as the result of a search. In the worst case situation, the data retrieved appears to be correct in format, but only by tracing back to source documents and other original data can it be determined that the data is incorrect for the search criteria. An example of this would be searching for the time worked by a particular employee in a payroll system.

The employee's name at the top of the information may be displayed correctly, but the detailed time data may belong to another employee. The only ways to verify the information would be to compare the time worked back to time sheets or to tables that indicate the employee ID. Incorrect processing of data relationships - This means that data relationships are not created or maintained correctly between one or more data elements. These data elements can reside on interactive interfaces, reports, or files.



0コメント

  • 1000 / 1000