|
| |
|
EBooks » Software Development
Beginning with a basic primer on reverse
engineering-including computer internals, operating systems, and
assembly language-and then discussing the various applications of
reverse engineering, this book provides readers with practical,
in-depth techniques for software reverse engineering. The book is
broken into two parts, the first deals with security-related reverse
engineering and the second explores the more practical aspects of
reverse engineering. In addition, the author explains how to reverse
engineer a third-party software library to improve interfacing and how
to reverse engineer a competitor's software to build a better product. *
The first popular book to show how software reverse engineering can
help defend against security threats, speed up development, and unlock
the secrets of competitive products * Helps developers plug
security holes by demonstrating how hackers exploit reverse engineering
techniques to crack copy-protection schemes and identify software
targets for viruses and other malware * Offers a primer on
advanced reverse-engineering, delving into "disassembly"-code-level
reverse engineering-and explaining how to decipher assembly language  Preface When we were rst exposed to Eclipse back in late 1999, we were
struck by the magnitude of the problem IBM was trying to solve. IBM
wanted to unify all of its development environments on a single code
base. At the time, the company was using a mix of technology composed
of a hodgepodge of C/C++, Java, and Smalltalk. Many of IBM s most
important tools, including the award-winning Visual-Age for Java IDE,
were actually written in Smalltalk-a wonderful language for building
sophisticated tools, but one that was rapidly losing market share to
languages like Java. While IBM had one of the world s largest
collections of Smalltalk developers, there wasn t a great deal of
industry support for it out side of IBM, and there were very few
independent software vendors (ISVs) quali ed to create Smalltalk-based
add-ons. Meanwhile, Java was winning the hearts and minds of developers
worldwide with its promise of easy portability across a wide range of
platforms, while providing the rich application programming interface
(API) needed to build the latest generation of Web-based business
applications. More importantly, Java was an object-oriented (OO)
language, which meant that IBM could leverage the large body of highly
skilled object-oriented developers it had built up over the years of
creating Smalltalk-based tools. In fact, IBM took its premiere Object
Technology International (OTI) group, which had been responsible for
creating IBM s VisualAge Smalltalk and VisualAge Java environments
(VisualAge Smalltalk was the rst of the VisualAge brand family and
VisualAge Java was built using it), and tasked it with creating a
highly extensible integrated development environment (IDE) construction
set based in Java. Eclipse was the happy result. OTI was able to apply
its highly evolved OO skills to produce an IDE unmatched in power,
exibility, and extensibility. The group was able to replicate most of
the features that had made Smalltalk-based IDEs so popular the decade
before, while simultaneously pushing the state-of-the-art in IDE
development ahead by an order of magnitude. The Java world had never
seen anything as powerful or as compelling as Eclipse, and it now
stands, with Microsoft s .NET, as one of the world s premier
development environments. That alone makes Eclipse a perfect platform
for developers wishing to get their tools out to as wide an audience as
possible. The fact that Eclipse is completely free and open source is
icing on the cake. Why This Book? The goal of this book is to cover what you need to know to develop object-oriented (OO) software using Java and the Unified Modeling Language (UML). When you are through with this book, you should understand object-oriented software development well enough to answer the following questions. What is object orientation? What is the UML? What is object-oriented analysis and design (OOAD)? How do you do OOAD? What are object-oriented development methodologies? How do you use Java to write truly object-oriented programs? What is Swing, and how can you use it to write object-oriented graphical user interfaces? What are design patterns? What is refactoring? What tools do you use to write object-oriented programs? What are some guidelines for writing good code? What do you need to read next to learn even more about object orientation? Who Is This Book For? This book is intended for programmers who know the basics of programming with Java and now want to understand the fundamentals of object-oriented software development. If you're fairly new to programming and have had a class or two in Java, you're probably starting to feel comfortable with Java. Now you're ready to reap the benefits of true object-oriented programming in Java, and this book will help you. If you're an experienced programmer who wants to move from using an old-style procedural programming language to developing object-oriented systems in Java, this book is also for you. This book will take you well down the path to real object-oriented software development.

This innovative text presents computer programming as a unified
discipline in a way that is both practical and scientifically sound.
The book focuses on techniques of lasting value and explains them
precisely in terms of a simple abstract machine. The book presents all
major programming paradigms in a uniform framework that shows their
deep relationships and how and where to use them together.
After an introduction to programming concepts, the book presents both
well-known and lesser-known computation models ("programming
paradigms"). Each model has its own set of techniques and each is
included on the basis of its usefulness in practice. The general models
include declarative programming, declarative concurrency,
message-passing concurrency, explicit state, object-oriented
programming, shared-state concurrency, and relational programming.
Specialized models include graphical user interface programming,
distributed programming, and constraint programming. Each model is
based on its kernel language -- a simple core language that consists of
a small number of programmer- significant elements. The kernel
languages are introduced progressively, adding concepts one by one,
thus showing the deep relationships between different models. The
kernel languages are defined precisely in terms of a simple abstract
machine. Because a wide variety of languages and programming paradigms
can be modeled by a small set of closely related kernel languages, this
approach allows programmer and student to grasp the underlying unity of
programming. The book has many program fragments and exercises, all of
which can be run on the Mozart Programming System, an Open Source
software package that features an interactive incremental development
environment.
 Over the course of a distinguished career, Joe Marasco earned a reputation as the go-to software project manager: the one to call when you were facing a brutally tough, make-or-break project. Marasco reflected on his experiences in a remarkable series of "Franklin's Kite" essays for The Rational Edge, Rational and IBM's online software development magazine. Now, Marasco collects and updates those essays, bringing his unique insights (and humor) to everything from modeling to scheduling, team dynamics to compensation. The result: a new classic that deserves a place alongside Frederick Brooks' The Mythical Man-Month in the library of every developer and software manager. If you want to ship products you're proud of... ship on time and on budget... deliver real customer value... you simply must read The Software Development Edge. Highlights include- How software projects resemble other projects—and how they're different
- The iterative problem-solving clock: ending the day with real solutions
- The realities of scheduling: How late are you going to be?
- Trade-offs, estimating, project rhythm, and getting products out the door
- Understanding what you're seeing, hearing, and feeling as a software manager
- The human element: politics, negotiation, compensation, culture, and growth
- Avoiding crises before they happen... and mitigating them when they do
- Thinking laterally: original ideas in software project management
|
| |
|