Tuesday, October 27, 2009

Aggregation Classes

During the course of this class so far I've found aggregation classes to be a bit difficult to understand and so I set out to find out more about them and understand them better. The following is what I could find out with the limited research time I have:

Aggregation Associations
1. Aggregation is similar to normal associations but is considered a "specialization of assocation".
2. It is a specficiation of a "whole-part" relationship between two objects.
3. An aggregation association represents an "is part of" relationship (i.e. an engine is part of an airplance)
4. Composition is also a special kind of association and has a stronger form of ownership between the whole and it's part.  Specifically it has "coincident lifetime of part with the whole".  This means that the lifetime of an object is dependent on another object, or in other words if the whole is destroys so is the part(s).  For a better explanation of composition and what it means to have a coincident lifetime see source 3, 4 and 6. (You can also search "compositon coincident lifetimes" on google for a myriad of references.)
5. Aggregation is considered to be a weaker association than composition
6. It's notation is with a diamond on the end touching "whole" class and the other end touching the "part" class.
7. According to source 5 there is not much different in the implementation of aggregation classes and normal association classes.  (if anyone would like to argue that feel free, I don't know enough of the specifics of implementation to argue either way).
8. The aggregation class object that you create can have more than one set with different attributes as opposed to the normal association class that must have a 1 to 1 relationship.
9. Each object set of the aggregation class does not have to be unique so you can have multiple instances of an object, each with their own attributes.


Sources:
1. http://faq.javaranch.com/java/AssociationVsAggregationVsComposition
2. http://www.agilemodeling.com/style/classDiagram.htm#AggregationComposition
3. http://www.jguru.com/faq/view.jsp?EID=51520
4. http://www.coderanch.com/t/412398/Beginning-Java/java/Association-Composition-Aggregation
5. http://www.objectmentor.com/resources/articles/umlClassDiagrams.pdf
6. http://www.geekinterview.com/question_details/40852
7. Gmail conversation with group member (not available)

Tuesday, October 13, 2009

System Sequence and Activity Diagrams

During that last few weeks we've been talking a lot about system sequence diagrams and activity diagrams for our semester group project.  For me these always seemed pretty similar and I remained confused about them until I decided to make research them a little more for excellent blog posting material.  So here's what I could find out about Sequence System Diagrams and Activity diagrams.

Both diagrams deal with making a use case more visual to be easier to understand at a glance.  Both deal
with the events going on between the various actors and/or systems

The difference between activity diagrams and system sequence diagrams as far as I can tell is this:

System Sequence Diagrams
System sequence diagrams deal specifically with the system that you're working with recording the actions made by the actors on the system that may or may not cause a response from the system.  It deals with the  chronological order of interactions of the system and actors.  It must include the system with which you are dealing with as an object.  System sequence diagrams only deal with actions and reactions with the system.

I think the clearest most succinct explanation of Systems Sequence Diagrams came from a website I found (source 2). It said:"The UML system sequence diagram (SSD) illustrates events sequentially input from an external source to the system. The SSD will define the system events and operations. System sequence diagrams are a time line drawing of an expanded use case."

Some other ideas/facts about System Sequence Diagrams:
The objects are brought in when they start.
Not all the lifelines will be the same length

Activity Diagrams
An activity diagram as far as I could tell is different in that it does not require a system to interaction with. Also an activity diagram can be between 2 people or 1+ persons and a system.  Activity diagrams don't necessarily need to be in chronological order though most times it seems like they are as that tends to be a more natural way of thinking through order.  Activity diagrams can include the documents that are being used in use case and show their flow with the activities.

The clearest most succinct explanation of Activity Diagrams came from a different website (source 5).  It said the following: "Activity diagrams are typically used for business process modeling, for modeling the logic captured by a single  use case or usage scenario, or for modeling the detailed logic of a business rule......In many ways UML activity diagrams are the object-oriented equivalent of  flow charts and  data flow diagrams (DFDs) from structured development. "

Now for a more comprehensive understanding of the different symbols used in both and how to create them I will leave to further study by you.  I would recommend starting with some of these sources.  They could get you started on the right track.

Sources:
1. http://www.comptechdoc.org/independent/uml/begin/umlsyssequence.html
2. http://answers.yahoo.com/question/index?qid=1006022103106
3. http://vinci.org/uml/diags.html
4. http://en.wikipedia.org/wiki/Sequence_diagram
5. http://www.agilemodeling.com/artifacts/activityDiagram.htm

Monday, October 12, 2009

In the Beginning...

     As it says in the description of this blog it is wholly, solely and totally dedicated to my research, learning and subsequent sharing of information I attain through my effort to master the material presented in my Systems Analysis and Design class.  7% percent of our grade is devoted to what our instructor calls "self-driven work".  I'm not going to lie, when I read about that and he explained it further I thought it was too ambiguous to really know what to even do for it.  We're supposed to go beyond what he assigns us in class to learn anything and everything we can about the content dealt with in this course.  Through our academic lives 99% of the time all the work we are given is extremely defined and almost, only one way to do it (if you disagree I'd like to hear your argument).  They tell us to be creative, be a thinker but only give us things that have 1-2 pages of specifications that must be met to get the grade.  Granted many subjects require such structure to be assimilated easier and learn faster.  I've been struggling to figure out ways to fulfill this requirement and time is only progressing forward leaving me less of it to figure it out.  So rather that stew over it and get frustrated and say it's a stupid requirement I decided to make it a challenge as I can only assume it's meant to be.  One of the things our instructor recommended was to make a blog about class material.  I've never blogged before so I figured it'd be a good time to start.  Pardon my amateur abilities.  As you can see this first entry is not about the course material but basically a getting started entry to create the blog and set the stage for the purpose and function of this blog.  I hope that through my research I can help other both in the class and out, to understand the principles that are involved in System Analysis and Design.  I'm no expert, but as we don't have a text book I figured to give 1-1.5 hours of time outside of class per class period to researching and then writing about the material will not only reinforce my learning but also (i hope) help others.  Another thing I think this will help me with is paying attention in class not to mention becoming engaged in class material outside of class.  Also if you read this blog and find anything that is not right and/or not clear please make corrections and tell me so that I can get it right.  This is to be a collaborative work.  You may not be able to edit the text but you can add your comments.  Thank you and enjoy