Softwaremaintenance and evolution of systems was first proposed by Lehman in 1969 . Lehman notes that systems continue to evolve over time. As a result, they become more complex unless some action such as code refactoring is adopted to reduce the complexity that may arise as a result of maintenance. Software main- tenance is a very broad activity that includes error correction, enhancements of capabilities, removal of obsolete functions, and optimization. Because changes are inevitable, certain mechanisms must be developed to evaluate, control, and modify the software. Thus changes to software are done in order to preserve the value of the soft- ware over time. The software value can be enhanced by expanding the customer base, meeting additional re- quirements, thus making the software more easier to use, more efficient, more reliable, and employing new technology to cater for the new features that may be introduced to these technologies. Softwareevolution plays an important role in softwaremaintenance process. Most development effort and expenditure is allocated to the evolution and update of existing versions of software. Software is ceaselessly changed—maintained, evolved and updated—more often than it is written, and changing software is extremely costly.
This paper overviews softwaremaintenance, its relevance, the problems, and the available solutions; the underlying objective is to present softwaremaintenance not as a problem, but in terms of solutions. Of course, this view of maintenance does not apply to software, as software does not deteriorate with the use and the passing of time. Nevertheless, the need for modifying a piece of software after delivery has been with us since the very beginning of electronic computing. The Lehman’s laws of evolution [17, 18] state that successful software systems are condemned to change over time. A predominant proportion of changes is to meet ever changing user needs. This is captured by the first law of Lehman [17, 18]: “A program that is used in a real world environment necessarily must change or become progressively less useful in that environment”. Significant changes also derive from the need to adapt software to interact with external entities, including people, organizations, and artificial systems. In fact, software is infinitely malleable and, therefore, it is often perceived as the easiest part to change in a system .
proprietary code is developed in private. Unlike traditional software, OSS is developed by geographically distributed teams through the use of the internet. Team members typically work in a distributed environment. Team members are volunteers rather than employee. After development of software, maintenance is required to meet the desired effects. Maintenance is essential for software to keep it up to date and bug free. Bugs are prevalent and widespread in software system. Softwaremaintenance is a very broad activity that includes error correction, enhancements of capabilities, and deletion of obsolete capabilities. Like development, maintenance of OSS is also coordinated through the internet. Open source software projects uses open bug repository during development and maintenance, so that both developers and user can report bugs that they have found, request useful features, modifications and give suggestions. The use of the bug tracking system to organize maintenance activity is widespread. Allowing users to report bugs, help in fixing of bugs and requesting feature is assumed to improve quality of software overall . Bug tracking system contain large amount of bug information that can give deep understanding into the evolution of software project. To improve the reliability of software system reporters, report bugs by writing bug report in bug tracking system like Bugzilla, Jira, Mantis etc. But OSS development has created new challenges to softwaremaintenance. This process of reporting a bug in open source software project is totally distributed and uncoordinated. In this scenario many reporters could submit same report for same problem . The same report which is submitted by several reports referred to as duplicate report. Identification and handling of duplicate bug report is important issue in OSS, because it can result in overhead for development team. If multiple bug report for same bug is not recognized as duplicate it can result in extra effort for development team .
Abstract— Computer softwaremaintenance has become the ultimate burdensome, expensive and labor-intensive activity in the application establishment life cycle. Therefore for efficiently assisting product repairing, it’s vital to present a dependable high- quality advancement of software systems. The nature of softwaremaintenance is to deal with the changes that occur during the softwareevolution. To effectively manage and control these changes, software repositories such as documentation script editing, fault warehouses, connection catalogues, distribution records, and implementation logbook are used to record information about these changes. The review has shown that the finding the best alternative may increase the effort of software engineer to find which version of give software can be re-engineered easily. Selecting the best computer software pertaining to re-engineer is constituted for being incredibly essential activity. Mining the software repositories features being a exploration path within the last several years, attaining considerable achievement throughout survey as well as application to guide different software servicing responsibilities. The overall objective of this paper is to evaluating the shortcomings in earlier techniques.
The paper  deals with the identification of duplicated parts in models. Like Triangle (gain) multiply with a constant. Circle (add), sum up their inputs. Squares have different meaning depending on their icon. It represents the techniques which are used to improve scalability by an adapted subsystem detection, to improve relevance of detected by clones by providing use case specific ranking and finally tool support to ease inspection of the instances of the detected clones. Represents inconsistent clones constitute a major source of faults, which means that cloning can be a substantial problem during development and maintenance unless special care is taken to find and track existing clones and their evolution. Rahman et al.  analysed relationship between cloning and defect proneness. We find that, first the great majority of bugs are not significantly associated with clones. Second we find that clones may be less defect prone than non- cloned code. Finally, we find little evidence that clones with more copies are actually more error prone. Buggy code refers to a source code lines which were modified to fix a bug.
Historically, there has always been a split between the process of software devel- opment and the process of softwareevolution (softwaremaintenance). People think of software development as a creative activity in which a software system is devel- oped from an initial concept through to a working system. However, they sometimes think of softwaremaintenance as dull and uninteresting. Although the costs of main- tenance are often several times the initial development costs, maintenance processes are sometimes considered to be less challenging than original software development. This distinction between development and maintenance is increasingly irrelevant. Hardly any software systems are completely new systems and it makes much more sense to see development and maintenance as a continuum. Rather than two separate processes, it is more realistic to think of software engineering as an evolutionary process (Figure 2.8) where software is continually changed over its lifetime in response to changing requirements and customer needs.
Business models of firms are changing: there is an evolution toward distributed models better suited for integration into a global economy. This scenario is well described by Paul R. Krugman in  and implies a strategic capacity to manage new emerging values, strategies and products/markets. The enterprises organizational models have to consider a network of internal and external agents (partners) with fuzzy boundaries and continuous exceptions in processes. Such status is the source of new ideas and opportunities . This environment is particularly challenging for softwaremaintenance and new “smart” approaches have to be defined.
In this paper we extend this mission concept by including active orbit control over the long-term evolution of the swarm. An electro-chromic coating of the SpaceChip device can be employed to alter the reflectivity coefficient of the spacecraft between two set values ( c R on 1.8 and c R off 1 ) . In this way the effect of SRP can be modulated to stabilise the spacecraft on a non-equilibrium orbit. The control relies on a simple algorithm: the spacecraft follow the natural flow lines in the orbital element phase space for the major part of their evolution, and, when the stabilisation region is reached, the reflectivity change is performed once per orbit. The effect of natural perturbations can be exploited to design operational orbits for SpaceChip devices: in the first phase of the mission, solar radiation pressure is exploited to raise the orbit pericentre, whereas in the second phase the dominant effect of drag is used for orbit decay and passive removal of the swarm. The initial conditions for deployment are selected such that a number of distributed measurements can be performed in a defined region of the phase space. The controlled evolution of the swarm is demonstrated against passive orbit evolution and a future mission application is identified which exploits such formation-flying on a large-scale system.
Softwaremaintenance includes correcting the discovered faults, adapting the system to changes in the environment, and improving the system’s reliability and performance. Maintenance is the last stage of the software life cycle. After the product has been released, the maintenance phase keeps the software up to date with environment changes and changing user requirements. Swanson  defines softwaremaintenance as a “process of correcting, perfecting, or adapting existing programs so their performance more closely meets the needs of the organization using the software”. Ammar  have focused on the technical side of the softwaremaintenance (e.g., development of models and tools) and completely ignore the managerial side. In this paper they review the softwaremaintenance management literature and identify management issues related specifically to adaptive and perfective maintenance. Two type of maintenance activities are selected based on the empirical evidence drawn from Martin , Nosek, and Palvia , and Van Vliet  that indicates 75% of maintenance costs are spent on providing enhancement (adaptive and perfective). Softwaremaintenance is categorized in the following types provided by the IEEE Standard  as shown in table 1.
Even though the visibility of the benefits is different from team to team within companies, the overall perception is that agile methods have brought several advantages to software development in these companies. In first place, customers became more satisfied with the frequent deliveries of value, as interviewee B stated: “We are delivering what the customer needs and reducing the feedback loop”. This benefit is in line with the sense of time-to-market and productivity pointed out in the survey results. Another benefit is the customer collab- oration along the software process as a shared responsibility. Regarding this aspect, company C outlined the bad experi- ence of customer collaboration on government, “In the end, the collaboration was of no use and all apparently flexible scope with which we were dealing with. What was valid for government was only what was determined in the contract”. As companies become more experienced in agile meth- ods, the benefits of software quality, project visibility, and team morale were confirmed by the interviewees as being increasingly perceived since its implementation. The quest for continuous improvement has increased technical excel- lence of team members. As a consequence, software quality has enhanced in their perception, as interviewee A outlined, “The issue of quality: now we have a defined cycle and the feeling of more collective ownership and more internal code quality”. Also, job satisfaction and visibility are other aspects raised by the interviewees when getting mature in agile meth- ods. For instance, interviewee B stated, “People are happier, people understand what they are doing, the corporate climate is coolest”. In Company G, the perception of benefit is sim- ilar. The project is owned by the team. Some people became more motivated with agile methods. People are more creative and deliver what makes the difference for the client. These qualitative evidences reflect on the strong correlation found between the most perceived benefits and company experience raised in the statistical analysis (Table 9).
Description:-In this paper, The number of reported bugs in large open source projects is high and triaging these bugs is an important issue in softwaremaintenance. As a step in the bug triaging process, assigning a new bug to the most appropriate developer to ﬁx it, is not only a time-consuming and tedious task. The triager, the person who considers a bug and assigns it to a developer, also needs to be aware of developer activities at diﬀerent parts of the project. It is clear that only a few developers have this ability to carry out this step of bug triaging. The main goal of this paper is to suggest a new approach to the process of performing automatic bug assignment. The information needed to select the best developers to ﬁx a new bug report is extracted from the version control repository of the project. Unlike all the previous suggested approaches which used Machine Learning and Information Retrieval methods, this research employs the Information Extraction (IE) methods to extract the information from the software repositories. The proposed approach does not use the information of the bug repository to make decisions about bugs in order to obtain better results on projects which do not have many ﬁxed bugs. The aim of this research is to recommend the actual ﬁxers of the bugs. Using this approach, we achieved 62%, 43% and 41% accuracies on Eclipse, Mozilla and Gnome projects, respectively.
Several case studies are presented to illustrate the performability paradigms, particu- larly the performance, reliability and availability, maintainability, and budgeting. The paper presents a framework, which shows that the art of software engineering for non- functional requirements can be engineered in a rather systematic manner. The author has used the presented framework to work out several cases, to achieve significant im- provements in performance, reliability, availability and maintainability. The perform- ance of intermodulation interference system (Intermode60) achieved an order of magnitude speed improvement. The availability of the data mining system achieved more than four NINES availability through the utilization of diverse languages and en- vironment, and adaptive algorithms for dynamic maintenance of the massive database system. Finally, the paper shows that achieving the required performability parameters is human centric and depends on the integration of diverse skills of engineers, and the sense of art embodied by those engineers.
Softwaremaintenance (SMT )consumes a large part of the overall lifecycle costs .The incapacity to change software quickly and reliably causes organizations to lose business opportunities. Thus, in recent years we have seen an increase in research directed towards addressing these issues. On the other hand, softwaremaintenance is a knowledge intensive activity. This knowledge comes not only from the expertise of the professionals involved in the process, but it is also intrinsic to the product being maintained, and to the reasons that motivate the maintenance (new requirements, user complaints, etc.) processes, methodologies and tools used in the organization. Moreover, the diverse types of knowledge are produced in different stage of the Maintenance process. During the softwaremaintenance activities different people intervene. Each person has partial information that is necessary to other members of the group. If the knowledge only exists in the software engineers and there is no system in charge of transferring the tacit knowledge (contained in the employees) to explicit knowledge (stored on paper, files, etc) when an employee leaves the organization a significant part of the intellectual knowledge goes with him/her. Another well-known issue that complicates the Maintenance process is the scarce documentation that exists related to a specific software system, or even if detailed documentation was produced when the original system was developed, it is seldom updated as the system evolves. For example, legacy software written by other units often has little or no documentation describing the features of the software.
Software engineering is the branch of computer science that creates practical, cost-effective solutions to computing and information processing problems, preferentially by applying scientific knowledge, developing software systems in the service of mankind. This course covers the fundamentals of software engineering, including understanding system requirements, finding appropriate engineering compromises, effective methods of analysis, design, coding, and testing, team software development, and the application of engineering tools. The course will combine a strong technical focus with a project providing the opportunity to practice engineering knowledge, skills, and practices in a realistic development setting with a real client.
In this paper we distinguish between two kinds of software architectural description: Base and variants. Base represents the original software architecture for which changes are requested. Variants represent a family of related and independent versions resulting from changes done on Base by independent developers. Also we point out that merge conflicts may occur. They take place if one change invalidates another change, or if two changes do not commute. Then, it is not decidable where to integrate changes . For example if software architect of Variant A decides to update boolean expression [=n] to [n=10] in component Ordering_Entry (between in port next_item and out port done), while software architect of Variant B states that the same n will be n= 20, we are in the front of a conflict between architects, and merging process fails. In this case conflict is resolved manually. In this paper, we consider merging architectures without conflicts.
No maintenance activities can ensure no failure will happen. When a circuit breaker failure does happen, some immediate action and follow-up investigation are required. As an example, to file an IEEE Std-1325 compliant power circuit breaker failure report, the user needs to collect the circuit breaker information (manufacturer, type, voltage, etc.), the operating environment data, the description of the trouble, the effect of the failure, the single line substation diagram, the operation and timing sequence, line condition, oscillogram, etc. To gather all the information and compile a report may be time consuming and error prone, since the information may be distributed among different data sources and in versatile formats. Therefore an automated method is preferred. A mobile agent makes an itinerary according to its knowledge about the location of information sources and will travel to each source and collect the information. The agent may also choose to delegate tasks to a bunch of second level agents and edit the last returned result from other agents. The second method may be faster when there are many sources for the software agent to visit. The software agent that helps the user to create the report will create and send out additional mobile agents to the distributed information sources for collecting the data. The collaboration mechanism provided by the mobile agent software has been utilized to exchange information among agents. The agent may also utilize some heuristic rules to help determine the possible causes of the failure.
serialization are not very appropriate for collaborative editing system. There are some new techniques for concurrency control more appropriate as operational transformation or multiple object creation. These techniques have been applied mainly to text and graphics environment. One of the main motivations has been the analysis of how these new concurrency control techniques could be applied to applications with richer semantic information, as is software modelling tools. Just to see how the semantics are richer: in a UML model there are two types of information: graphical information and UML information. For the UML information the Abstract syntax and the Well-Formedness rules restrict the behaviour of the possible operations that can be applied to the model.
SCENARIO software, which is a rule based iterative model, was developed following the use of the original Paminet software and HDM software by the then Main Roads Transport Technology Division in the mid 1990’s. Following better testing by QDMR- Northern district, a full-scale pilot was conducted with one district from each of the five regions in early 1999. In June 1999, the Road Asset Maintenance approved the full implementation of SCENARIO across Main Roads, with the aim of using the product to assist in the development of the 2000/2001 Road Implementation Program (RIP). The SCENARIO Suite Millennium, the latest version was then released in January 2002. (Asset Maintenance Guidelines (AMG), 2002)
The incomplete knowledge of the organization of Hox clusters in cyclostomes has implications for the understanding of the phylogenetic timing of the genome expansion event, the so-called two-round (2R) whole genome duplications (Ohno, 1970; Lundin, 1993; Sidow 1996, Dehal and Boore, 2005; McLysaght et al., 2002). In these two rounds of whole genome duplications, a single gene or gene array of a pre-vertebrate ancestral genomes, would have been duplicated into multiple (up to four) copies in derived vertebrates. If the quadruplication of Hox clusters was caused by this event (Fig. 3), it is expected that the size of other gene families as well should provide clues on how many Hox clusters cyclos- tomes should possess. The same line of reasoning was used in the initial investigations of the teleost-specific genome duplication (TSGD or 3R), which will be discussed later (Vandepoele et al., 2004; Hoegg et al., 2004; Meyer and Schartl, 1999; Taylor et al., 2001b, Wittbrodt et al., 1998). However, attempts to analyze the phylogenetic position of cyclostome genes have so far failed to provide a reliable timing of genome duplications in early verte- brate evolution (e.g, Escriva et al., 2002; also see Kuratani et al., 2002 for review), probably due to the lack of strong phylogenetic signal that would be required for resolving multiple events (two rounds of genome duplications and the cyclostome/gnathostome divergence) that occurred within a short period of time (Horton et al., 2003). In order to infer the timing of this genome expansion event reliably, larger numbers of gene families would need to be characterized in the future (see Kuraku et al., 2009 for a recent study on this issue). The ongoing genome sequencing project for Petromyzon marinus (URL: http://genome.wustl.edu/ genome.cgi?GENOME=Petromyzon%20marinus) is expected to provide additional information about the timing of the 2R genome duplications and the evolution of the genomic organization of Hox clusters in different lineages of deuterostomes.