Software Modeling

76
Software Modeling Juan Carlos Olivares Rojas MSN: [email protected] [email protected] http://antares.itmorelia.edu.mx/~jcolivar/ @jcolivares Social Network: Facebook, LinkedIn. Hi5

description

Software Modeling. Juan Carlos Olivares Rojas. MSN: [email protected] [email protected] http://antares.itmorelia.edu.mx/~jcolivar/ @jcolivares Social Network: Facebook, LinkedIn. Hi5. UML. - PowerPoint PPT Presentation

Transcript of Software Modeling

Page 1: Software Modeling

Software Modeling

Juan Carlos Olivares Rojas

MSN: [email protected]@itmorelia.edu.mx

http://antares.itmorelia.edu.mx/~jcolivar/@jcolivares

Social Network: Facebook, LinkedIn. Hi5

Page 2: Software Modeling

• The Unified Modeling Language (UML) is the standard modeling language for software and systems development.

• Systems design on any reasonably large scale is difficult.

• We model for one important reason: to manage complexity

UML

Page 3: Software Modeling

• A model is an abstraction of the real thing.

• A model is a simplification of the real system.

• A particular diagram will show you some parts of your model but not necessarily everything.

UML

Page 4: Software Modeling

• Stereotypes signify a special use or intent and can be applied to almost any element of UML notation. Stereotypes modify the meaning of an element and describe the element's role within your model.

UML

Page 5: Software Modeling

• Modeling System Workflows: Activity Diagrams

• Use cases show what your system should do. Activity diagrams allow you to specify how your system will accomplish its goals. Activity diagrams show high-level actions chained together to represent a process occurring in your system.

Activity Diagramas Pr

Page 6: Software Modeling

• Activity diagrams are particularly good at modeling business processes . A business process is a set of coordinated tasks that achieve a business goal, such as shipping customers' orders. Some business process management (BPM) tools allow you to define business processes using activity diagrams, or a similar graphical notation, and then execute them.

Activity Diagrams Pr

Page 7: Software Modeling

Activity Diagrams Pr

Page 8: Software Modeling

Activity Diagrams Pr

Page 9: Software Modeling

Activity Diagrams

Time Signaling

Using pins for modeling I/O Transformations

Pr

Page 10: Software Modeling

Activity Diagrams

Signaling

Pr

Page 11: Software Modeling

Activity Diagrams

Partial Finally Event

Pr

Page 12: Software Modeling

Activity Diagrams

Swimingline

Pr

Page 13: Software Modeling

• A class has the next properties:

• Abstraction• Encapsulate

Class Diagrams L

Page 14: Software Modeling

Class Diagrams L

Page 15: Software Modeling

Class Diagrams L

Page 16: Software Modeling

Class Diagrams

Class and Objects can be restricted using OCL. OCL is representated with a Note

L

Page 17: Software Modeling

• The Object Constraint Language (OCL) is a declarative language for describing rules that apply to Unified Modeling Language (UML) models developed at IBM and now part of the UML standard.

• OCL is a precise text language that provides constraint and object query expressions on any MOF model or meta-model that cannot otherwise be expressed by diagrammatic notation.

OCL L

Page 18: Software Modeling

OCL L

Page 19: Software Modeling

• Datatypes:– Boolean true; false– Integer 1; 6,664; -200– Real 2.7181828; 10.5– String "Hello, World."

• Operators:– Arithmetic +, -, *, /– Additional Arithmetic abs(), max(), min( )

– Comparison <, <=, >, >=– Equality =, <>

OCL L

Page 20: Software Modeling

• Operators:– Boolean and, or, xor, not– String concat(), size(), substring( ),

toInteger(), toReal( )

• Context: is the class we are located. Operator self indicate de selfclasse.

• There are three types of constraints:

OCL L

Page 21: Software Modeling

• Invariants• An invariant is a constraint that must

always be trueotherwise the system is in an invalid state.

• Preconditions• A precondition is a constraint that is

defined on a method and is checked before the method executes. Preconditions are frequently used to validate input parameters to a method.

OCL L

Page 22: Software Modeling

• Postconditions• A postcondition is also defined on a

method and is checked after the method executes. Postconditions are frequently used to describe how values were changed by a method.

OCL L

Page 23: Software Modeling

• Context AccountFee• inv: self.baseCost >= 0.0

• context BlogEntry::incrementRating(amount: int) : void

• pre: amount <= 100• post: rating = rating@pre + amount

OCL L

Page 24: Software Modeling

Class Diagrams L

Page 25: Software Modeling

Class Diagrams

Stereotype for modeling Generic Collections. Character E represent the generic type

L

Page 26: Software Modeling

Object Diagrams

Objects are at the heart of any object-oriented system at runtime. When the system you designed is actually in use, objects make up its parts and bring all of your carefully designed classes to life.Compared to class diagrams, object diagram notation is very simple.

L

Page 27: Software Modeling

• Sequence Diagramas Modeling Ordered Interactions.

• Use cases allow your model to describe what your system must be able to do; classes allow your model to describe the different types of parts that make up your system's structure. This is where interaction diagrams , and specifically sequence diagrams, come into play.

Sequence Diagrams L

Page 28: Software Modeling

Secuence Diagrams L

Page 29: Software Modeling

Secuence Diagrams L

Page 30: Software Modeling

Secuence Diagrams L

Page 31: Software Modeling

Secuence Diagrams L

Page 32: Software Modeling

• The main purpose of sequence diagrams is to show the order of events between the parts of your system that are involved in a particular interaction.

• Communication diagrams add another perspective to an interaction by focusing on the links between the participants .

Communications Diagrams L

Page 33: Software Modeling

• Sequence and communication diagrams are so similar that most UML tools can automatically convert from one diagram type to the other. The difference between the two approaches is largely personal preference.

Communications Diagrams L

Page 34: Software Modeling

Communication Diagrams L

Page 35: Software Modeling

• Interaction timing is most commonly associated with real-time or embedded systems, but it certainly is not limited to these domains.

• In a timing diagram, each event has timing information associated with it that accurately describes when the event is invoked, how long it takes for another participant to receive the event, and how long the receiving participant is expected to be in a particular state.

Timing Diagrams L

Page 36: Software Modeling

• Although sequence diagrams and communication diagrams are very similar, timing diagrams add completely new information that is not easily expressed on any other form of UML interaction diagram. Not having a timing diagram for an interaction is like saying, "I know what events need to occur, but I'm not really worried about exactly when they happen or how quickly they will be worked on.”

Timing Diagrams L

Page 37: Software Modeling

Timing Diagrams L

Page 38: Software Modeling

Timing Diagrams L

Page 39: Software Modeling

Timing Diagrams L

Page 40: Software Modeling

Timing Diagrams L

Page 41: Software Modeling

• They exist to give you that big picture perspective on your system's interactions.

• Interaction overview diagrams provide a high-level view of how several interactions work together to implement a system concern, such as a use case. An interaction overview looks very much like an activity diagram except that each of the actions are interactions within their own right.

Interaction Overview DiagramsL

Page 42: Software Modeling

• Think of each part of an interaction overview as a complete interaction in itself. If one interaction within the overview is most concerned with timing, then a timing diagram could be employed, while another interaction of the overview may need to focus on message ordering, and so a sequence diagram could be used.

Interaction Overview DiagramsL

Page 43: Software Modeling

Interaction Overview DiagramsL

Page 44: Software Modeling

Interaction Overview DiagramsL

Page 45: Software Modeling

Compiste Structure Diagrams• Composite structures show how objects

create a big picture. They model how objects work together inside a class, or how objects achieve a goal. Composite structures show:

• Internal structures• Ports• Collaborations

L

Page 46: Software Modeling

Compiste Structure DiagramsL

Page 47: Software Modeling

Component Diagrams• When designing a software system, it's

rare to jump directly from requirements to defining the classes in your system. With all but the most trivial systems, it's helpful to plan out the high-level pieces of your system to establish the architecture and manage complexity and dependencies among the parts.

• Components are used to organize a system into manageable, reusable, and swappable pieces of software.

D

Page 48: Software Modeling

Component Diagrams• UML component diagrams model the

components in your system and as such form part of the development view

• The development view describes how your system's parts are organized into modules and components and is great at helping you manage layers within your system's architecture.

D

Page 49: Software Modeling

Component Diagrams• A component is an encapsulated,

reusable, and replaceable part of your software. You can think of components as building blocks: you combine them to fit together (possibly building successively larger components) to form your software.

• Because of this, components can range in size from relatively small, about the size of a class, up to a large.

D

Page 50: Software Modeling

Component Diagrams• Good candidates for components are items

that perform a key functionality and will be used frequently throughout your system. Software, such as loggers, XML parsers, or online shopping carts, are components you may already be using.

• In UML, a component can do the same things a class can do: generalize and associate with other classes and components, implement interfaces, have operations, and so on.

D

Page 51: Software Modeling

Component Diagrams D

Page 52: Software Modeling

Component Diagrams D

Page 53: Software Modeling

Component Diagrams D

Page 54: Software Modeling

• As a software program grows in complexity, it can easily contain hundreds of classes. One way to impose structure is by organizing your classes into logically related groups.

• In UML, groups of classes are modeled with packages . Most object-oriented languages have an analog of UML packages to organize and avoid name collision among classes. For example, Java has packages, C# has namespaces.

Package Diagrams D

Page 55: Software Modeling

Package Diagrams D

Page 56: Software Modeling

Package Diagrams D

Page 57: Software Modeling

Package Diagrams D

Page 58: Software Modeling

• State machine diagrams are heavily used in special niches of software and hardware systems, including the following: Real-time/mission-critical systems, such as heart monitoring software, Dedicated devices whose behavior is defined in terms of state, such as ATMs, First-person shooter games, such as Doom or Half-LifeTo reflect these common uses.

• State machine diagrams are often referred to informally as state diagrams.

State Machine Diagrams L

Page 59: Software Modeling

State Machine Diagrams L

Page 60: Software Modeling

State Machine Diagrams L

Page 61: Software Modeling

State Machine Diagrams L

Page 62: Software Modeling

State Machine Diagrams L

Page 63: Software Modeling

Protocol State Machine Diag.L

Page 64: Software Modeling

• The physical view is concerned with the physical elements of your system, such as executable software files and the hardware they run on.

• UML deployment diagrams show the physical view of your system, bringing your software into the real world by showing how software gets assigned to hardware and how the pieces communicate.

Deployment Diagrams Ph

Page 65: Software Modeling

Deployment Diagrams Ph

Page 66: Software Modeling

Deployment Diagrams Ph

Page 67: Software Modeling

• When you create your UML model, it is helpful if you label your model elements with the terminology specific to the environment or platform you've chosen.

• The group behind UML, the Object

Management Group (OMG), realized this and built a mechanism by which UML can be adapted and tailored to meet your own specific needs. That mechanism was the profile.

UML Profiles

Page 68: Software Modeling

• Profiles are a lightweight way to adapt UML to a particular platform: J2EE, .NET, etc. or domain: medical, financial, aerospace, etc.

• Profiles are made up of stereotypes, tagged values, and a set of constraints. They capture a vocabulary commonly used across a domain or platform and allow that vocabulary to be applied to your model's elements to make them more meaningful.

UML Profiles

Page 69: Software Modeling

• Even better, code generation tools can use profiles to generate artifacts specific to a platform or environment.

• A component labeled with an EJB stereotype could be converted to the classes and interfaces it takes to implement an EJB.

• In earlier versions of UML, you could make up stereotypes on the fly.

UML Profiles

Page 70: Software Modeling

• Stereotypes may have one or more associated tagged values. Tagged values provide extra information that is associated with the stereotype.

UML Profiles

Page 71: Software Modeling

• The term meta-model define rules about how the UML elements work, e.g., a class can have a subclass or a class can be associated with any number of other classes.

• When you are modeling a profile you are working with the meta-model, customizing the regular UML's rules for a particular context.

UML Profiles

Page 72: Software Modeling

UML Profiles

Page 73: Software Modeling

UML Profiles

Page 74: Software Modeling

• The real power of a profile comes when it is used by many people interested in that platform or domain. For example, a tool could convert a model that uses our Web Service profile into a deployable web service.

• • The OMG maintains some common profiles,

such as profiles for CORBA and testing. The testing profile, for example, describes mappings to JUnita widely-used Java unit testing framework.

UML Profiles

Page 75: Software Modeling

• Hamilton, K. And Miles, R. (2006), Learning UML 2.0, O'Reilly , ISBN-13: 978-0-59-600982-3, pp. 286

References

Page 76: Software Modeling

¿Preguntas?