3.3 (8)
Reverse Engineering
process of studying and analyzing an application, a software application or a product
to see how it functions
and to use that information to develop a similar system.
process can be carried out in different ways:
• Decompiling object or executable code into source code and using it to analyze the program
• BLACK-BOX TESTING the application to be reverse-engineered to unveil its functionality
major advantages
FASTER DEVELOPMENT
IMPROVEMENTS in new developed application
IS auditor should be aware of the following risk items:
Software license agreements often contain clauses prohibiting the licensee from reverse engineering the software
so that no trade secrets or programming techniques are compromised.
Decompilers are relatively new tools with functions that depend on specific computers, OSs and programming languages.
Any change in one of these components may require developing or purchasing a new decompiler
Web-Based Application Development
designed to achieve easier and more effective integration of code modules within and between enterprises.
Software Reengineering
PROCESS OF UPDATING AN EXISTING SYSTEM BY
process is used to support major changes in the way an organization operates
Methodologies
• BPR is the thorough analysis and significant redesign of BUSINESS PROCESS AND MANAGEMENT SYSTEMS
to establish a better performing structure that is MORE RESPONSIVE TO CUSTOMER BASE AND MARKET CONDITIONS,
while yielding MATERIAL COST SAVINGS
The service-oriented software re engineering methodology is based upon the service-oriented computer architecture, and the re engineering processes.
apply many concepts of RAD development leveraging responsible, accountable, consulted and informed (RACI) charts and UML modeling
Object-oriented System Development
is a PROGRAMMING TECHNIQUE, not a software development methodology.
process of solution specification and modeling in which data and procedures can be grouped into an entity known as an object.
object’s data are referred to as its attributes and its functionality is referred to as its methods.
Objects usually are created from a general template called a “class.”
Classes are either
superclasses (i.e., root or parent classes) with a set of basic attributes
methods or subclasses, which inherit the characteristics of the parent class and may add (or remove) functionality as required.
Advantages
• The ability to manage an unrestricted variety of data types
• Provision of a means to model complex relationships
• The capacity to meet the demands of a changing environment
Applications that use object-oriented technology are:
• Web applications
• Ebusiness applications
• Computer-aided software engineering (CASE) for software development
• Office automation for email and work orders
• Artificial intelligence (AI)
• Computer-assisted manufacturing (CAM) for production and process control
“polymorphism.”
The ability of two or more objects to interpret a message differently at execution, depending on the superclass of the calling object,
Component-based Development
regarded as an OUT GROWTH OF OBJECT ORIENTED DEVELOPMENT
means assembling applications from cooperating packages of executable software that make their services available through defined interfaces
enabling pieces of programs called “objects,” to communicate with one another regardless of the programming language in which they were written or what OS they are running
Advantages
Allows a satisfactory compromise between build and buy options
possible to purchase only needed components and
Reduces development cost
Less effort needs to be expended on design and build.
Reduces development time
application system can be assembled
from prewritten components code for unique parts of the system needs to be developed,prove faster than writing the entire system from scratch
Improves quality
prewritten components means a SIGNIFICANT PERCENTAGE OF THE SYSTEM CODE HAS BEEN TESTED ALREADY
Allows developers to focus more strongly on business functionality
further increase abstraction already achieved with highlevel languages, databases and user interfaces.
Promotes modularity
impassable INTERFACES BETWEEN DISCRETE UNITS OF FUNCTIONALITY , it encourages modularity
Supports multiple development environments
Components written in one language can interact with components written in other languages or running on other machines
Simplifies reuse
voids the need to be conversant with procedural or class libraries, and
allowing cross-language combination
allowing reusable code to be distributed in an executable forma
incorporate these into a customized system.**
EXTRACTING AND REUSING DESIGN AND PROGRAM COMPONENTS
number of tools are available to support this process.