were fairly simple diagrams that could be replaced with a quick google image
search... or intermediate-level mspaint skillz ;-)]
Robert Mathenia
SG150: Project 1
February 17, 2008
Companies have notably reaped significant benefits from the integration of object
orientation in software design. In its large project known as the Call Attempt
Data Collection System (CADCS), AT&T Bell Labs saw a 30% decrease in development
time and a 20% decrease in development staff effort after adopting object
orientation. However, this increase in productivity only occurred after the
incorporation of three- to six-month long pilot projects for training (Bray).
The class diagram is not the only diagram UML is capable of creating; in fact, in
the newest version of UML (UML 2.0) there are thirteen different types of diagrams
spread across three categories. The distribution of diagram types is as follows:
The first category, Structure Diagrams, consists of class, component, composite
structure, deployment, object, and package diagrams. The second category, Behavior
Diagrams, consists of activity, state machine, and use case diagrams. The final
category, Interaction Diagrams, consist of communication, interaction overview,
and UML timing diagrams. All these diagrams can be organized under a hierarchy, as
depicted in Figure 2: ("Unified Modeling Language")
..
Figure 2: Diagram hierarchy in UML ("Unified Modeling Language")
"1) In certain situations, a usable 80% solution can be produced in 20% of the
time that would have been required to produce a total solution.
2) In some cases the customer's requirements can be completely satisfied even if
the functional requirements are not completely satisfied.
3) In some cases a system can work with a sufficient level of functionality even
if functions are not all required ones" (Zagarrio).
All of these seemingly stringent formalities are really not such – in practice,
the principles of RAD are a little more general and malleable: release only
documentation that is absolutely necessary, use models as much as possible, and
work closely with the customer (Zagarrio). Skipping publishing of unnecessary
documentation saves time and money, and keeping close communication with the
customer / client helps ensure a better understanding of requirements. This in
turn leads to the application being designed correctly early on, serving to
diffuse or eliminate problems, or at the very least preventing problems from
compounding beyond control.
Rapid Development often uses CASE (Computer Aided Software Engineering) tools to
expedite the design process. There are some problems with this:
If programmers depend too much on CASE tools, the resulting application might not
be as testable as desired because the implementation of the CASE tools themselves
are involved, but invisible (and therefore unable to be included in testing). CASE
also has its own limits, so some things may be overly difficult or near-impossible
to implement using a given CASE toolset. If the development team is forced to rely
on a CASE toolset, and that toolset does not provide for the specified
requirements, the customer could end up dissatisfied.
RAD should not be used for mission- or life-critical situations where the best
performance is required (eXtreme programming is preferred in these situations).
RAD is ideally employed in the case of a standalone application, or to get an
early compromise between customer and developer (Zagarrio).
Even though RAD is based on and operates in the larger framework of object
orientation and UML, RAD itself can be generalized into an entire group of
methodologies, and when this is the case, is often referred to as Rapid
Application Methodologies (or RAM). RAM consists of (but is apparently not limited
to): Rapid application development (as discussed above), Agile Modeling, and
eXtreme Programming (Zagarrio).
Much as in RAD, in xp the customer is involved, but to an even greater degree. The
customer is considered part of the team so that necessary changes can be made
quickly and effectively (Zagarrio). This method has the advantage of instant
feedback, but the disadvantage of the responsibility of an in-house client. For
the benefits to be maximized with this setup, communication must be open, honest
and sincere.
The advantages of agile modeling are similar to those of RAD and xp, due mostly to
its heavy involvement with those disciplines. Due also to this relationship, the
main disadvantage of Agile speaks as well to xp and other RAMs: In the case of
inaccurate feedback, problems can be compounded quickly and lead to an unworkable
solution ("Agile software development"). This is why communication is so important
in these Rapid methodologies – it does not matter how close the customer / client
is kept to the development process: if the feedback from the customer to the
developer (or vice versa) is inaccurate but is mistaken as accurate and then acted
upon, the mistake could spiral into a large problem the likes of those that
sometimes occur with traditional methodologies (such as the waterfall method). And
in these problem scenarios where RAM is employed, there is not even documentation
with which to gain some footing.
Another area in which a developer may encounter problems with agile modeling is
that of working with and incorporating large data systems. Data system specialists
often require exacting, complete specifications. If these specs are not prepared
correctly, the development comes to a standstill until the data can be negotiated.
For this reason, agile modeling is not well-suited for systems that rely on large,
relational, legacy databases ("Agile software development").
Design patterns can be categorized into three groups: creational, structural, and
behavioral ("Design patterns in C and VB.NET"). Each particular pattern is
composed of several sections: structure, participants and collaboration. These
combined sections describe a "micro-architecture" which includes classes, methods,
and their relationships. Micro-architectures are used by developers in design
patterns, facilitating uniform structure and organization ("Design pattern
(computer science)").
The main advantage to design patterns is that they speed up the development
process. They also serve to provide a tested and proven framework for development,
since the pattern has been previously used. Early issues that can cause big
problems later are often revealed through reuse of design patterns. Design
patterns are numerous, and exist for a variety of specific domains in software
design, such as user-interface design ("Design pattern (computer science)").
Two examples of design patterns are the Singleton and the Façade. The Singleton
applies in situations where only one object of a class is needed. A second client
class is used to interact with the singleton. The class has absolute control over
the number of instances that can be created, via a method that returns a reference
to the instantiated object. The Singleton design pattern keeps the responsibility
of keeping track of objects off the programmer, and can be extended (it is
refactorable in xp lingo) to keep track of a different number of objects.
The very nature of software development involves problem solving, and an essential
component of problem solving is pattern recognition. Therefore, design patterns
(or some offshoot thereof) are destined to walk hand-in-hand with software
development. And like design patterns, we have seen that some software development
methodologies are inseparably bound to each other. A developer would not start a
large object-oriented project without first creating one or more UML diagrams,
most applications developed using a rapid methodology are immersed in object
orientation, and rapid-methodology designed applications probably would not have
been nearly as rapidly designed without an agile model. All this leads to the
conclusion that the methodologies explored herein overlap each other to the point
of all-inclusiveness and that in practice the best is borrowed from all
methodologies in all applicable areas.
WORKS CITED
"Agile software development." Wikipedia. 2008. Wikipedia.org. 16 Feb 2008 .
"Design patterns in C and VB.NET." data & object factory. 16 Feb 2008 .
"Practical UML." CODE GEAR From Borland. 01 DEC 2003. Borland Software Corp. 17
Feb 2008 .