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.