The foundation of all object-oriented software design, including agile methods such as extreme programming, is object thinking. But many developers have not mastered its underlying concepts and principles?relying on methodology and process instead of fully exploiting the power of object thinking in software design. In this essential, high-level reference, well-known object technologist David West provides a deep historical and contextual discussion of object thinking, including the behavioral approaches to object discovery and design. Readers will master the fundamental principles and learn how to apply object thinking to improve software development at every phase of the process.

Reviews ( 0 )
Once a month we give presents to the most active reader.
Post more reviews and get a reward!
Quotes (19)
19 quotes You must be to post a quote.
December 27, 2016

Слова написані у 2004 актуальні і у 2016. А ви все про методології розробки говорите.

Bloated, inefficient, bug-ridden, user-unfriendly, and marginally useful—these are still common adjectives used to describe software.
December 27, 2016
Fact 1: The most important factor in software work is not the tools and techniques used by the programmers but rather the quality of the programmers themselves.
Fact 2: The best programmers are up to 28 times better than the worst programmers, according to “individual differences” research. Given that their pay is never commensurate, they are the biggest bargains in the software field.
—Robert L. Glass[3]
January 1, 2017

Схожу інформацію я зустрічав і раніше, коли порівнювали середню довжину слів у військових командах китайців та росіян: у китайців вона складала 7 літер, а у росіян - лише 5. Правда у критичних ситуаціях росіяни могли зменшувати середню кількість літер у командах до трьох. Я вважав, що це байка.

Benjamin Lee Whorf and Edward Sapir advanced a theory (overstated here) to the effect that what you could and did think was determined by the language you spoke and that some languages allowed you to think “better” than others. Whorf was particularly interested in the Hopi language.
January 3, 2017
Lines of code, for example, in a well-thought-out object application will be at least an order of magnitude fewer (sometimes two orders of magnitude). This means that a 1 million–line program, written conventionally by developers thinking like a computer, can be duplicated with object thinking in 100,000 lines of code or fewer. Time to delivery is reduced by at least 50 percent and often by as much as 70 percent. Projects scheduled to take 2 years to complete can be done in 8 to 12 months.
January 6, 2017
Refactoring is a way for “lazy” objects to give all the hard work to other objects.
January 10, 2017
Humans and human abilities are still the key to software development success. This, in turn, suggests that we need to reconsider how we go about enhancing human abilities instead of attempting to replace them with machine capabilities.
January 10, 2017

Цікаво чи є відео, де він програмує.

Mathematicians use an “Erdos Number” as an indicator of their association with Paul Erdos, one of the most prolific and brilliant mathematicians of the past century. Erdos himself had the number 0, those who coauthored a paper with him had the number 1, coauthoring with a coauthor yielded 2, and so on. Extreme programmers are given a “Ward Number” based on pair programming with him (1), pair programming with someone who paired with him (2), and so forth.
January 11, 2017
Although the claim is made that C++ is a general-purpose programming language, that assertion should be modified. C++ is a general-purpose language for describing and efficiently implementing programs that model software implementation constructs (for example, control structures, data structures, and algorithms), virtual machines, or hardware elements.
January 11, 2017
Software development is neither a scientific nor an engineering task. It is an act of reality construction that is political and artistic.
January 11, 2017

Цікава концепція-порівняння типів мислення і роботи розробників (радше незалежних розробників) з мисленням і роботою давньогрецьких митців та як протилежність їм робітників Стародавнього Риму, як осіб, які не уявляють свого існування поза межами своєї спільноти та для яких інтереси спільноти є важливішими за власні.

In ancient Greece, an individual would act as his own agent in his own behalf, or combine with other people to act together as a team. In a Greek work environment, you bring your tools to work with you, you do your stuff, and then you pack up your tools and take them home. You are an individual—an independent contractor. You are not owned body and mind.
January 11, 2017

І за лояльність тебе буде винагороджено. Якщо ти є лояльним 24/7.

In Rome, one’s first duty was to the group, clan, class, or faction upon which one depended for status. Known as gravitas, this meant sacrificing oneself for the good of the organization, and giving up one’s individuality and identifying closely with the group. In a Roman environment you go to work, the company hands you your tools, and then it holds you and your mind hostage until you sever your relationship with the organization. You are not an individual: you are owned by the organization body and mind, twenty-four hours a day. There are substantial rewards for this, however. The organization provides you with security, money, and power.
January 11, 2017

Отак читаю книжку про екстремальне програмування і дивуюсь, чому в університетських курсах з філософії про такі речі ніхто не розказував.

The Taoist butcher used but a single knife, without the need to sharpen it, during his entire career of many years. When asked how he accomplished this feat, he paused, then answered, “I simply cut where the meat isn’t.”
January 11, 2017

З чого відомий Едсгер Вайб Дайкстра...

Some other common computer science concepts and vocabulary credited to Dijkstra include separation of concerns (which is important to object thinking), synchronization, deadly embrace, dining philosophers, weakest precondition, and the guarded command. He introduced the concept of semaphores as a means of coordinating multiprocessing. The Oxford English Dictionary credits him for introducing the words vector and stack into the computing context.
January 11, 2017

Робімо декомпозицію правильно!

Both data and function are poor choices for being a decomposition tool. Parnas provided several reasons for rejecting function. Among them are the following:
Resulting program code would be complicated, far more so than necessary or desirable.
Complex code is difficult to understand and test.
Resulting code would be brittle and hard to modify when requirements changed.
Resulting modules would lack composability—they would not be reusable outside the context in which they were conceived and designed.
February 5, 2017
Any child with a screwdriver and a hammer can take things apart. Unless another child can look at the pieces and determine how to put them together again (or even more important, see how to take a piece from one pile and use it to replace a piece missing from another pile), the first child’s decomposition was flawed.
February 5, 2017

Цікаво, чи приципи згідно з якими Епл вказує користувачам, як використовувати їх пристрої, узгоджуються з цим твердженням?

You don’t like to work for a boss who doesn’t trust you and allow you to do your job, so why should your software objects put up with similar abuse?
March 25, 2017

Фраза про поганого танцютиста заграла новими барвами

A better metaphor for assembling objects to collectively perform tasks is theater
April 15, 2017
what you code is dependent on how you have thought about the problem space and how you have decomposed that space into objects.
April 15, 2017
it’s improper for an object to fail to assume responsibilities that make the need for external control unnecessary.
Who wants to read this book 1
Dmitry Lagun