Software Archaeology
   HOME
*





Software Archaeology
Software archaeology or source code archeology is the study of poorly documented or undocumented legacy software implementations, as part of software maintenance. Software archaeology, named by analogy with archaeology, includes the reverse engineering of software modules, and the application of a variety of tools and processes for extracting and understanding program structure and recovering design information. Software archaeology may reveal dysfunctional team processes which have produced poorly designed or even unused software modules, and in some cases deliberately obfuscatory code may be found. The term has been in use for decades. Software archaeology has continued to be a topic of discussion at more recent software engineering conferences. Techniques A workshop on Software Archaeology at the 2001 OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) conference identified the following software archaeology techniques, some of which are specific to object- ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Legacy System
In computing, a legacy system is an old method, technology, computer system, or application program, "of, relating to, or being a previous or outdated computer system", yet still in use. Often referencing a system as "legacy" means that it paved the way for the standards that would follow it. This can also imply that the system is out of date or in need of replacement. Legacy code is old computer source code that is no longer supported on the standard hardware and environments, and is a codebase that is in some respect obsolete or supporting something obsolete. Legacy code may be written in programming languages, use frameworks and external libraries, or use architecture and patterns that are no longer considered modern, increasing the mental burden and ramp-up time for software engineers who work on the codebase. Legacy code may have zero or insufficient automated tests, making refactoring dangerous and likely to introduce bugs. Long-lived code is susceptible to software r ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Andy Hunt (author)
Andy Hunt (sometimes credited as Andrew Hunt) is an author on software development. Hunt co-authored ''The Pragmatic Programmer'', ten other books and many articles, and was one of the 17 original authors of the Agile Manifesto. He and partner Dave Thomas (programmer), Dave Thomas founded the Pragmatic Bookshelf series of books for software developers. He also plays the trumpet, flugel horn, and keyboards and produces music aStrange & Special Air Productions Works * Weatherly Hall', Andy Hunt, 2021, Cyclotron Press, . * The Pragmatic Programmer, 20th Anniversary Edition', David Thomas and Andrew Hunt, 2019, Addison Wesley, . * ''Conglommora Found'', Andy Hunt, 2018, Cyclotron Press, . * ''Conglommora'', Andy Hunt, 2017, Cyclotron Press, . * ''The Pragmatic Programmer'', Andrew Hunt and David Thomas, 1999, Addison Wesley, . * ''Programming Ruby'': A Pragmatic Programmer's Guide, David Thomas and Andrew Hunt, 2000, Addison Wesley, * ''Pragmatic Version Control Using CVS'', Davi ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Profiling (computer Programming)
In software engineering, profiling ("program profiling", "software profiling") is a form of dynamic program analysis that measures, for example, the space (memory) or time complexity of a program, the usage of particular instructions, or the frequency and duration of function calls. Most commonly, profiling information serves to aid program optimization, and more specifically, performance engineering. Profiling is achieved by instrumenting either the program source code or its binary executable form using a tool called a ''profiler'' (or ''code profiler''). Profilers may use a number of different techniques, such as event-based, statistical, instrumented, and simulation methods. Gathering program events Profilers use a wide variety of techniques to collect data, including hardware interrupts, code instrumentation, instruction set simulation, operating system hooks, and performance counters. Use of profilers The output of a profiler may be: * A statistical ''s ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Unit Testing
In computer programming, unit testing is a software testing method by which individual units of source code—sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures—are tested to determine whether they are fit for use. History Before unit testing, capture and replay testing tools were the norm. In 1997, Kent Beck and Erich Gamma developed and released JUnit, a unit test framework that became popular with Java developers. Google embraced automated testing around 2005–2006. Description Unit tests are typically automated tests written and run by software developers to ensure that a section of an application (known as the "unit") meets its design and behaves as intended. In procedural programming, a unit could be an entire module, but it is more commonly an individual function or procedure. In object-oriented programming, a unit is often an entire interface, such as a class, or an individual ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Software Metric
In software engineering and development, a software metric is a standard of measure of a degree to which a software system or process possesses some property. Even if a metric is not a measurement (metrics are functions, while measurements are the numbers obtained by the application of metrics), often the two terms are used as synonyms. Since quantitative measurements are essential in all sciences, there is a continuous effort by computer science practitioners and theoreticians to bring similar approaches to software development. The goal is obtaining objective, reproducible and quantifiable measurements, which may have numerous valuable applications in schedule and budget planning, cost estimation, quality assurance, testing, software debugging, software performance optimization, and optimal personnel task assignments. Common software measurements Common software measurements include: * ABC Software Metric * Balanced scorecard * Bugs per line of code * Code coverage * ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




Embarcadero Technologies
Embarcadero Technologies, Inc. is an American computer software company that develops, manufactures, licenses, and supports products and services related to software through several product divisions. It was founded in 1993, went public in 2000, and private in 2007, and became a division of Idera, Inc. in 2015. History Embarcadero was founded in October 1993 by Stephen Wong, Stuart Browning, and Nigel Myers and released a tool for Sybase database administrators in December of the same year called Rapid SQL. it later added tools for software development on Microsoft Windows and other operating systems, and for database design, development and management, for platforms including Oracle, Microsoft SQL Server, IBM DB2, and MySQL. In April 2000, Embarcadero Technologies had its initial public offering, and was listed on NASDAQ with symbol EMBT. In November the same year, the company acquired GDPro, a Unified Modeling Language software provider. In October 2005 Embarcadero acquired ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Tracing (software)
In software engineering, tracing involves a specialized use of logging to record information about a program's execution. This information is typically used by programmers for debugging purposes, and additionally, depending on the type and detail of information contained in a trace log, by experienced system administrators or technical-support personnel and by software monitoring tools to diagnose common problems with software. Tracing is a cross-cutting concern. There is not always a clear distinction between ''tracing'' and other forms of ''logging'', except that the term ''tracing'' is almost never applied to logging that is a functional requirement of a program (therefore excluding logging of data from an external source, such as data acquisition in a high-energy physics experiment, and write-ahead logging). Logs that record program usage (such as a server log) or operating-system events primarily of interest to a system administrator (see for example ''Event Viewer'') ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


AspectJ
AspectJ is an aspect-oriented programming (AOP) extension created at PARC for the Java programming language. It is available in Eclipse Foundation open-source projects, both stand-alone and integrated into Eclipse. AspectJ has become a widely used de facto standard for AOP by emphasizing simplicity and usability for end users. It uses Java-like syntax, and included IDE integrations for displaying crosscutting structure since its initial public release in 2001. Simple language description All valid Java programs are also valid AspectJ programs, but AspectJ lets programmers define special constructs called '' aspects''. Aspects can contain several entities unavailable to standard classes. These are: ; Extension methods: Allow a programmer to add methods, fields, or interfaces to existing classes from within the aspect. This example adds an acceptVisitor (see visitor pattern) method to the Point class: : aspect VisitAspect ; Pointcuts: Allow a programmer to specify join point ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Aspect-oriented Programming
In computing, aspect-oriented programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. It does so by adding behavior to existing code (an advice) ''without'' modifying the code itself, instead separately specifying which code is modified via a " pointcut" specification, such as "log all function calls when the function's name begins with 'set. This allows behaviors that are not central to the business logic (such as logging) to be added to a program without cluttering the code core to the functionality. AOP includes programming methods and tools that support the modularization of concerns at the level of the source code, while aspect-oriented software development refers to a whole engineering discipline. Aspect-oriented programming entails breaking down program logic into distinct parts (so-called ''concerns'', cohesive areas of functionality). Nearly all programming paradigms support some level of group ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




Block (programming)
In computer programming, a block or code block or block of code is a lexical structure of source code which is grouped together. Blocks consist of one or more Declaration (computer programming), declarations and Statement (computer science), statements. A programming language that permits the creation of blocks, including blocks Nesting (computing), nested within other blocks, is called a block-structured programming language. Blocks are fundamental to structured programming, where control structures are formed from blocks. Blocks have two functions: to group statements so that they can be treated as one statement, and to define scope (computer science), scopes for name binding, names to distinguish them from the same name used elsewhere. In a block-structured programming language, the objects named in outer blocks are visible inside inner blocks, unless they are Name masking, masked by an Object (computer science), object declared with the same name. History Ideas of block st ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


SWISH-E
SWISH-E stands for ''Simple Web Indexing System for Humans - Enhanced''. It is used to index collections of documents ranging up to one million documents in size and includes import filters for many document types. SWISH-E is based on SWISH, developed by Kevin Hughes. When Kevin Hughes stopped maintaining it, Roy Tennant (then at the University of California, Berkeley Library) requested in the mid-1990s to take responsibility for developing it further as a web indexing tool. Hughes assented, and for several years afterwards UC Berkeley Library staff developers and other volunteers maintained and enhanced it. It is no longer maintained, with an offline website and an archived repository at GitHub. See also * the Najdi project from North Macedonia North Macedonia, ; sq, Maqedonia e Veriut, (Macedonia before February 2019), officially the Republic of North Macedonia,, is a country in Southeast Europe. It gained independence in 1991 as one of the successor states of ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]