Beginning Java Objects: Chapter 2 Abstraction and Modeling
What Does It Take to Be a Successful Object Modeler?
Coming up with an appropriate abstraction as the basis for a software system model requires:
Insight into the problem domain: ideally, you'll be able to draw upon your own real-world
experience, such as your former or current experience as a student, which will come in handy
when determining the requirements for the SRS.
Creativity: to enable us to think 'outside the box', in case the future users that we are
interviewing have been immersed in the problem area for so long, that they fail to see
innovations that might be made.
Good listening skills: as future users of the system describe how they do their jobs currently, or how
they envision doing their jobs in the future, with the aid of the system that we're about to develop.
Good observational skills: actions often speak louder than words; just by observing users
going about their daily business, we may pick up an essential detail that they have neglected
to mention because they do it so routinely that it has become a habit.
But all this is not enough, we also need:
An organized process for determining what the abstraction should be. If we follow a proven
checklist of steps for producing a model, then we greatly reduce the probability that we'll omit
some important feature or neglect a critical requirement.
A way to communicate the resultant model concisely and unambiguously to our fellow
software developers, and to the intended users of our application. While it is certainly possible
to describe an abstraction in narrative text, a picture is worth 1000 words, and so the language
with which we communicate a model is often a graphical notation. Throughout this book,
we'll focus on the Unified Modeling Language (UML — see following figure) notation as our
model communication language (you'll learn the basics of UML in Chapters 10 and 11). Think
of a graphical model as a 'blueprint' of the software application to be built.
Summary
In this chapter, we've learned that:
Abstraction is a fundamental technique that people use to perceive the world, and is a
necessary first step of all software development.
We naturally organize information into classification hierarchies based upon rules that we
carefully structure, so that they are neither too general nor too restrictive.
We often reuse abstractions when attempting to model a new concept.
Producing an abstraction of a system to be built, known as a model, is in some senses second
nature to us, and yet paradoxically is one of the hardest things that software developers have to
do in the lifecycle of an information systems project. Yet, it is also one of the most important.
JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for
Windows 95, 98, ME, NT, 2000 and XP. It's designed to
automatically optimize your Windows settings, boosting your
Internet connection up to 200%.