This document discusses the General Responsibility Assignment Software Patterns (GRASP) principles for object-oriented design. It begins with an introduction to GRASP and its goals of being a mental toolset for designing software. It then explains nine key GRASP design patterns - Informational Expert, Creator, Controller, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection, and Protected Variations. For each pattern, it provides a definition and example of how and when to apply the pattern when assigning responsibilities to classes. It concludes with references for further reading on GRASP patterns.
In this slide contain details of CRC Card (class responsibility collaboration) , and 6 examples of CRC card ,advantages and disadvantages, and how to make CRC card.
In this slide contain details of CRC Card (class responsibility collaboration) , and 6 examples of CRC card ,advantages and disadvantages, and how to make CRC card.
Chapter 3 Classes and Objects 3
2.1 The Nature of Objects 4
2.2 Relationships among Object 7
2.3 The Nature of Classes 10
2.4 Relationships among Classes 11
2.5 Interplay of Classes and Objects 14
2.6 Identifying Classes and Objects 15
2.7 Importance of Proper Classification 18
2.8 Key abstractions and Mechanism 19
This Presentation contains all the topics in design concept of software engineering. This is much more helpful in designing new product. You have to consider some of the design concepts that are given in the ppt
Object Oriented Methodology (OOM) is a system development approach encouraging and facilitating re-use of software components. We enforce our concern on components re-usability of existing component using Java Language .
This ppt covers the object modeling techniques. It has four topics: object model, dynamic model, functional model and the relationship between these models.
Chapter 3 Classes and Objects 3
2.1 The Nature of Objects 4
2.2 Relationships among Object 7
2.3 The Nature of Classes 10
2.4 Relationships among Classes 11
2.5 Interplay of Classes and Objects 14
2.6 Identifying Classes and Objects 15
2.7 Importance of Proper Classification 18
2.8 Key abstractions and Mechanism 19
This Presentation contains all the topics in design concept of software engineering. This is much more helpful in designing new product. You have to consider some of the design concepts that are given in the ppt
Object Oriented Methodology (OOM) is a system development approach encouraging and facilitating re-use of software components. We enforce our concern on components re-usability of existing component using Java Language .
This ppt covers the object modeling techniques. It has four topics: object model, dynamic model, functional model and the relationship between these models.
"Refactoring to SOLID Code" session presentation from
Emerging .NET Devs - October 2011 User Group Meeting.
Please note that this presentation has been simplified for publishing.
The objective is to explain how a software design may be represented as a set of interacting objects that manage their own state and operations and to introduce various models that describe an object-oriented design.
Package diagram is used to simplify complex class diagrams, you can group classes into packages. A package is a collection of logically related UML elements.
Presented at NDC 2011 in Oslo (9th June 2011)
Video available via http://www.softdevtube.com/2011/11/01/framing-the-problem/
The focus of software development and technology tends to be very solution–centric, often at the expense or in the absence of a proper understanding of what problem is to be solved. Without necessarily intending to, developers, architects and other technical roles often try to force the problem domain into code–based thinking. Business analyst says number, developer hears int, double or decimal. Customer says stock data, architect hears database. The problem domain and motivation are often abstracted away altogether or too early in the technical solution process.
This session takes a look at ways of characterising system types and organising problems, so that problem domains are understood on their own terms. In addition to classic analysis techniques, problem frames are examined as a tool for structuring the phenomena that technical solutions need to express.
Nina Grantcharova - Approach to Separation of Concerns via Design Patternsiasaglobal
Separation of Concerns aims at managing complexity by establishing a well-organized system where each part adheres to a single and unique purpose while maximizing the system's ability to adapt to change and increasing developers' productivity. The goal of this presentation is to promote the understanding of the principle of Separation of Concerns and to provide a selected set of foundational patterns to aid software architects in the designing of maintainable and extensible systems.
PROPERTIES OF RELATIONSHIPS AMONG OBJECTS IN OBJECT-ORIENTED SOFTWARE DESIGNijpla
One of the modern paradigms to develop a system is object oriented analysis and design. In this paradigm,
there are several objects and each object plays some specific roles. After identifying objects, the various
relationships among objects must be identified. This paper makes a literature review over relationships
among objects. Mainly, the relationships are three basic types, including generalization/specialization,
aggregation and association.This paper presents five taxonomies for properties of the relationships. The first
taxonomy is based on temporal view. The second taxonomy is based on structure and the third one relies on
behavioral. The fourth taxonomy is specified on mathematical view and fifth one related to the interface.
Additionally, the properties of the relationships are evaluated in a case study and several recommendations
are proposed.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
AI Genie Review: World’s First Open AI WordPress Website CreatorGoogle
AI Genie Review: World’s First Open AI WordPress Website Creator
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-genie-review
AI Genie Review: Key Features
✅Creates Limitless Real-Time Unique Content, auto-publishing Posts, Pages & Images directly from Chat GPT & Open AI on WordPress in any Niche
✅First & Only Google Bard Approved Software That Publishes 100% Original, SEO Friendly Content using Open AI
✅Publish Automated Posts and Pages using AI Genie directly on Your website
✅50 DFY Websites Included Without Adding Any Images, Content Or Doing Anything Yourself
✅Integrated Chat GPT Bot gives Instant Answers on Your Website to Visitors
✅Just Enter the title, and your Content for Pages and Posts will be ready on your website
✅Automatically insert visually appealing images into posts based on keywords and titles.
✅Choose the temperature of the content and control its randomness.
✅Control the length of the content to be generated.
✅Never Worry About Paying Huge Money Monthly To Top Content Creation Platforms
✅100% Easy-to-Use, Newbie-Friendly Technology
✅30-Days Money-Back Guarantee
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIGenieApp #AIGenieBonus #AIGenieBonuses #AIGenieDemo #AIGenieDownload #AIGenieLegit #AIGenieLiveDemo #AIGenieOTO #AIGeniePreview #AIGenieReview #AIGenieReviewandBonus #AIGenieScamorLegit #AIGenieSoftware #AIGenieUpgrades #AIGenieUpsells #HowDoesAlGenie #HowtoBuyAIGenie #HowtoMakeMoneywithAIGenie #MakeMoneyOnline #MakeMoneywithAIGenie
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Grasp
1. Submitted To:
Submitted by:
Fizza Durrani
11073
7th Semester UET(A)
October 15, 2014
Lahore Garrison University 1
2. “The critical design tool for software
development is a mind well educated in
design principles. It is not the UML or any
other technology.“
Craig Larman
Thus, GRASP is really a mental toolset, a learning
aid to help in the design of object-oriented
software.
Lahore Garrison University 2
3. It stands for:
General
Responsibilities
Assignment
Software
Patterns (Principles)
Lahore Garrison University 3
4. Responsibility
A contract / obligation that a class / module /
component must accomplish
Knowledge
Private state
Computed state
Behavior
Send messages itself and modify its private
state
Instantiate another objects
Send messages to another objects
Lahore Garrison University 4
5. “doing” responsibilities
Doing something itself, such as creation an
object or doing a calculation.
Initiating action in other objects
Controlling and coordinating activities in other
objects.
“knowing” responsibilities
Knowing about encapsulated data.
Knowing about related objects.
Knowing about things it can derive or
calculate.
Lahore Garrison University 5
9. Problem: Which class possesses information
about object A?
More common question: What is a general
principle of assigning responsibilities to
objects?
Assign the responsibility to the class that
knows the necessary information for
performing required action and fulfill the
responsibility.
Lahore Garrison University 9
10. A B C D
DO
GetDataX()
GetDataY()
GetDataZ()
return Z
return Y
return X
Lahore Garrison University 10
11. A B C D
DO
DoAction()
DoAction(X)
DoAction(Y)
Lahore Garrison University 11
13. Problem: Who should be responsible for creating
object
A?
Class B must have that responsibility if:
B is composed by A (composition)
B knows the necessary information in order to
instantiate A objects
B depends heavily on A
Lahore Garrison University 13
14. • The goal is to define creator-object, which will be
related to all created objects.
64
Board Square
Square
Board
create
create
Lahore Garrison University 14
16. Problem: How to minimize dependencies between
classes ?
Coupling is the degree, defines how tightly one
component linked to other components, or how
much
information it knows about other components.
Examples
Inheritance
Composition / aggregation / association
A send messages to B
Lahore Garrison University 16
17. Assign a responsibility so that coupling remains
low.
Low Coupling is an evaluative pattern, which
dictates how to assign responsibilities to support:
lower dependency between the classes,
change in one class having lower impact on
other classes,
higher reuse potential.
Lahore Garrison University 17
19. Problem: How to keep objects focused,
understandable, manageable, and support low
coupling?
Cohesion is a measure of how strongly related
or focused the responsibilities of a single module
are.
High Cohesion is an evaluative pattern that
attempts to keep objects appropriately focused,
manageable and understandable.
Lahore Garrison University 19
20. Alternatively, low cohesion is a situation in
which a given element has too many unrelated
responsibilities (“God Object”)
Low Cohesion implies:
Hard to reuse
Hard to maintain
Constantly changing
Lahore Garrison University 20
21. A A ?? ??
DoA()
DoB()
DoC()
DoA()
DoB()
DoC()
Lahore Garrison University 21
23. Problem: Who should be responsible for
handling events and messages from external
actors (UI, …)?
Assign the responsibility to a class, such as:
A class that represents the overall system,
device, or subsystem.
Façade Controller Pattern
A class that represent a use case, whereby
performs handling particular system operation.
Use Case Controller Pattern
Generally does not perform operation by itself, but delegate
responsibility to component objects.
Lahore Garrison University 23
25. Problem: How to act different depending in
object’s
class, or how to design pluggable components?
In case of class behavior might changes,
responsibilities segregates to different behavior
specific classes, using polymorphic operations
for this class.
Advise: Do not use type checking, but
conditional logic for implementation different
variations based on object type.
Lahore Garrison University 25
26. Player
There are (roughly) 3 types a polymorphism:
Ad hoc Polymorphism
Parametric Polymorphism
Subtype Polymorphism
Square
landedOn
RegularSquare
landedOn
GoSquare
landedOn
OtherSquare
landedOn
Lahore Garrison University 26
28. Problem: How to assign responsibilities if applying the
Informational Expert principle decreases cohesion and
increases coupling?
Assign the responsibility to an artificial class that does
not belongs to the domain model.
Pure Fabrication is a class that does not reflect any
business domain object, but required only for increase
cohesion and decrease coupling.
Lahore Garrison University 28
30. Problem: How to assign responsibilities in order to avoid
direct coupling between two components, and keep
ability for reuse.
Assign responsibility to intermediate class for providing
linking between objects not linking directly.
Related design patterns: Adapter, Bridge, Mediator.
Lahore Garrison University 30
32. Problem: How to design system and subsystems,
that changes in these components does not affects
on other components.
Identify points of possible variations and instability;
create stable interfaces upon instable components.
Open-Closed Principle almost equivalent to CV
pattern.
Lahore Garrison University 32
33. There are 2 types of points:
Variation point – branching point on existing system or
in requirements. For example we need to support
several types of interfaces for tax payment system
Evolution point – supposed branching point, which
might occur in future, but does not declared by existing
requirements.
Protected variation pattern applying for both variation
and evolution points.
Lahore Garrison University 33
34. Informational Expert Assign a responsibility to the class that has the
information needed to fulfill it.
Creator Assign class B the responsibility to create an instance
of class A if one of these is true (the more the better):
• B "contains" or compositely aggregates A.
• B records A.
• B closely uses A.
• B has the initializing data for A that will be passed
to A when it is crated. Thus B is an Expert with
respect to creating A.
Controller Assign the responsibility to a class representing one
of the following choices:
• Major subsystem classes
• A use case scenario classes within which the
system event occurs
Low Coupling Assign a responsibility so that coupling remains low.
High Cohesion Lahore GarArissons Uingivners iaty responsibility so that coh3e4 sion remains high.
35. Polymorphism The same name operations (methods) in the
difference classes is defined. And assign a
responsibility to the class the class that the behavior
is changed.
Pure Fabrication Define a class for convenience' sake that doesn't
express the concept of the problem area at all.
Indirection Assign the responsibility to an intermediate object to
mediate between other components or services, so
that they are not directly coupled.
Protected Variations Assign responsibility to create a stable interface
around an unstable or predictably variable subsystem
or component.
Lahore Garrison University 35