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.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|
|
|
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%.
|
|
|
|
|
|
|
|
|
|