<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sbkottan</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sbkottan"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Sbkottan"/>
	<updated>2026-06-02T03:19:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2b_1w68_ss&amp;diff=71128</id>
		<title>CSC/ECE 517 Fall 2012/ch2b 1w68 ss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2b_1w68_ss&amp;diff=71128"/>
		<updated>2012-11-20T03:50:14Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: Editing SaaS - 3.16. Finishing crud - Ruby&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Editing SaaS - 3.16. Finishing crud - Ruby&lt;br /&gt;
==CRUD==&lt;br /&gt;
CRUD operations are basic database operations of a persistent storage system that includes Create,Read,Update and Destroy.&lt;br /&gt;
In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
 &lt;br /&gt;
====Update====&lt;br /&gt;
Update is used to update an existing instance record of an application. Edit/Update pair is analogous to New/Create pair. As seen in the in New/Create functionality, the first action will retrieve the form and the second action will apply the changes and results of what the user passed into the form. The submit action redirects to the show action and shows the new modified item that was updated.&lt;br /&gt;
For the update functionality,the Form should be available with the existing fields populated. Also,the form action uses PUT method instead of the POST method.&lt;br /&gt;
&lt;br /&gt;
The code for Edit in the controller is as follows:&lt;br /&gt;
 def edit&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 end&lt;br /&gt;
Here, the instance variable movie which is to be edited is replaced with the name of the movie it will be edited into.&lt;br /&gt;
&lt;br /&gt;
Update looks similar to create action. The instance variable movie is first retrieved and then updated using update.attributes! where the parameters are passed in. The update.attributes! indicates that it is a destructive action. &lt;br /&gt;
The code for Update in the controller is as follows:&lt;br /&gt;
 def update&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 @movie.update_attributes!(params[:movie])&lt;br /&gt;
 flash[:notice] = &amp;quot;&amp;quot;&lt;br /&gt;
 redirect_to movie_path(@movie)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the view, a form tag is used for the movie instance. By default, the method used will be POST but we are explicitly setting the method to PUT. Sample code is as follows:&lt;br /&gt;
 form_tag movie_path(@movie), :method =&amp;gt; :put do&lt;br /&gt;
 label :movie, :title, 'Title'&lt;br /&gt;
 text_field :movie, 'title'&lt;br /&gt;
 submit_tag 'Update Movie Info'&lt;br /&gt;
&lt;br /&gt;
====Destroy====&lt;br /&gt;
Destroy is an instance method on a particular item. The instance variable must be loaded up first, and then it can be destroyed.&lt;br /&gt;
 def destroy&lt;br /&gt;
 @movie=Movie.find(params[:id])&lt;br /&gt;
 @movie.destroy&lt;br /&gt;
 flash[:notice]=&amp;quot;movie '#{@movie.title}'deleted.&amp;quot;&lt;br /&gt;
 redirect_to movies_path&lt;br /&gt;
 end&lt;br /&gt;
As seen in the code example, the instance variable of the movie is first retrieved and then destroyed using &amp;quot;destroy&amp;quot;.&lt;br /&gt;
Also, it can be seen that when we do the Edit action we load up the instance variable and then do so again for the Update action. This is because the instance variable only persists for a certain request.&lt;br /&gt;
&lt;br /&gt;
==Fallacies, pitfalls and perspectives on SaaS-on-Rails==&lt;br /&gt;
The MVC architectural pattern describes a way to structure our application and the responsibilities. The design also defines the way in which the three different components interact with each other.&lt;br /&gt;
&lt;br /&gt;
:1. A controller can send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document). It can send commands to the model to update the model's state (e.g., editing a document).&lt;br /&gt;
&lt;br /&gt;
:2. A model notifies its associated views and controllers when there has been a change in its state. This notification allows the views to produce updated output, and the controllers to change the available set of commands. A passive implementation of MVC omits these notifications, because the application does not require them or the software platform does not support them.&lt;br /&gt;
&lt;br /&gt;
:3. A view requests from the model the information that it needs to generate an output representation.&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
Under this architectural pattern, the common pitfalls to be avoided are:&lt;br /&gt;
&lt;br /&gt;
:1. Fat Controllers:&lt;br /&gt;
:Controller is the first place where we write code so we have to make sure that they should be as lean as possible. Fat Controllers are not recommended because business logic is enclosed in the controller and changes made are not reusable in other controllers. Also, its more difficult to port changes to other controllers, etc. when changes have to be made. &lt;br /&gt;
&lt;br /&gt;
:2. Fat views:&lt;br /&gt;
:Its always recommended to not have the application or model logic in the view. Views, just like the controllers have to be as lean as possible. Some common mistakes in this regard can be:&lt;br /&gt;
&lt;br /&gt;
::1. Including &amp;quot;for loops&amp;quot; in the view&lt;br /&gt;
::2. Placing the logic for sorting the list  and so on.. &lt;br /&gt;
			&lt;br /&gt;
:Essentially views are meant to serve as a structure for the display of your model data. Therefore, the view is serving its purpose if the structure it creates for the display of a specific model can be adjusted based on the data contained in the model. Conditionally displaying elements in your view based on certain properties of the model it is meant to render is an acceptable practice.&lt;br /&gt;
&lt;br /&gt;
:If your view contained logic to modify the model data in any way, this would violate the separation of concerns that MVC is meant to establish.&lt;br /&gt;
&lt;br /&gt;
Therefore, it is only recommended to have fat models in the application because the business logic changes will be easier to make and moreover the models become reusable in more than one controller and thus it is easier to unit test.&lt;br /&gt;
&lt;br /&gt;
==Designing for Service Oriented Architecture.==&lt;br /&gt;
&lt;br /&gt;
In software engineering, a service-oriented architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes. SOA design principles are used during the phases of systems development and integration.&lt;br /&gt;
	&lt;br /&gt;
	SOA generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services. For example, several disparate departments within a company may develop and deploy SOA services in different implementation languages; their respective clients will benefit from a well-defined interface to access them. XML is often used for interfacing with SOA services, though this is not required. JSON is also becoming increasingly common.&lt;br /&gt;
	&lt;br /&gt;
	If the conventions mentioned in the previous section are followed, it will easily allow our application to integrate with Service Oriented Architecture. A well defined controller can be easily modified to make it amenable to Service Oriented Architecture (i.e. respond to SOA (JSON / XML) )&lt;br /&gt;
	&lt;br /&gt;
A simple example of the same can be seen below. Based on the client requirement, an appropriate response is generated. &lt;br /&gt;
 def create&lt;br /&gt;
 ..&lt;br /&gt;
 respond_to do |client_wants|&lt;br /&gt;
 client_wants.html{ redirect_to movie_path(@movie) }&lt;br /&gt;
 client_wants.xml{ render :xml =&amp;gt; @movie.to_xml}&lt;br /&gt;
 end&lt;br /&gt;
 ..&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
1. In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
&lt;br /&gt;
2. MVC Pattern encourages to include more code into the models, so that they can be reused across multiple controllers and views. This implies easier SOA Integration.&lt;br /&gt;
&lt;br /&gt;
3. Rails encourages convention over configuration and follows many standard conventions. Following these avoids writing more code which indirectly leads to lesser number of bugs.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
http://www.youtube.com/watch?v=P0g6JtcWm2o}&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Service-oriented_architecture&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Create,_read,_update_and_delete&lt;br /&gt;
&lt;br /&gt;
http://www.rorexperts.com/crud-operations-in-rails-t2239.html&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71126</id>
		<title>SaaS - 3.16. Finishing crud - Ruby</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71126"/>
		<updated>2012-11-20T03:44:24Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==CRUD==&lt;br /&gt;
CRUD operations are basic database operations of a persistent storage system that includes Create,Read,Update and Destroy.&lt;br /&gt;
In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
 &lt;br /&gt;
====Update====&lt;br /&gt;
Update is used to update an existing instance record of an application. Edit/Update pair is analogous to New/Create pair. As seen in the in New/Create functionality, the first action will retrieve the form and the second action will apply the changes and results of what the user passed into the form. The submit action redirects to the show action and shows the new modified item that was updated.&lt;br /&gt;
For the update functionality,the Form should be available with the existing fields populated. Also,the form action uses PUT method instead of the POST method.&lt;br /&gt;
&lt;br /&gt;
The code for Edit in the controller is as follows:&lt;br /&gt;
 def edit&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 end&lt;br /&gt;
Here, the instance variable movie which is to be edited is replaced with the name of the movie it will be edited into.&lt;br /&gt;
&lt;br /&gt;
Update looks similar to create action. The instance variable movie is first retrieved and then updated using update.attributes! where the parameters are passed in. The update.attributes! indicates that it is a destructive action. &lt;br /&gt;
The code for Update in the controller is as follows:&lt;br /&gt;
 def update&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 @movie.update_attributes!(params[:movie])&lt;br /&gt;
 flash[:notice] = &amp;quot;&amp;quot;&lt;br /&gt;
 redirect_to movie_path(@movie)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the view, a form tag is used for the movie instance. By default, the method used will be POST but we are explicitly setting the method to PUT. Sample code is as follows:&lt;br /&gt;
 form_tag movie_path(@movie), :method =&amp;gt; :put do&lt;br /&gt;
 label :movie, :title, 'Title'&lt;br /&gt;
 text_field :movie, 'title'&lt;br /&gt;
 submit_tag 'Update Movie Info'&lt;br /&gt;
&lt;br /&gt;
====Destroy====&lt;br /&gt;
Destroy is an instance method on a particular item. The instance variable must be loaded up first, and then it can be destroyed.&lt;br /&gt;
 def destroy&lt;br /&gt;
 @movie=Movie.find(params[:id])&lt;br /&gt;
 @movie.destroy&lt;br /&gt;
 flash[:notice]=&amp;quot;movie '#{@movie.title}'deleted.&amp;quot;&lt;br /&gt;
 redirect_to movies_path&lt;br /&gt;
 end&lt;br /&gt;
As seen in the code example, the instance variable of the movie is first retrieved and then destroyed using &amp;quot;destroy&amp;quot;.&lt;br /&gt;
Also, it can be seen that when we do the Edit action we load up the instance variable and then do so again for the Update action. This is because the instance variable only persists for a certain request.&lt;br /&gt;
&lt;br /&gt;
==Fallacies, pitfalls and perspectives on SaaS-on-Rails==&lt;br /&gt;
The MVC architectural pattern describes a way to structure our application and the responsibilities. The design also defines the way in which the three different components interact with each other.&lt;br /&gt;
&lt;br /&gt;
:1. A controller can send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document). It can send commands to the model to update the model's state (e.g., editing a document).&lt;br /&gt;
&lt;br /&gt;
:2. A model notifies its associated views and controllers when there has been a change in its state. This notification allows the views to produce updated output, and the controllers to change the available set of commands. A passive implementation of MVC omits these notifications, because the application does not require them or the software platform does not support them.&lt;br /&gt;
&lt;br /&gt;
:3. A view requests from the model the information that it needs to generate an output representation.&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
Under this architectural pattern, the common pitfalls to be avoided are:&lt;br /&gt;
&lt;br /&gt;
:1. Fat Controllers:&lt;br /&gt;
:Controller is the first place where we write code so we have to make sure that they should be as lean as possible. Fat Controllers are not recommended because business logic is enclosed in the controller and changes made are not reusable in other controllers. Also, its more difficult to port changes to other controllers, etc. when changes have to be made. &lt;br /&gt;
&lt;br /&gt;
:2. Fat views:&lt;br /&gt;
:Its always recommended to not have the application or model logic in the view. Views, just like the controllers have to be as lean as possible. Some common mistakes in this regard can be:&lt;br /&gt;
&lt;br /&gt;
::1. Including &amp;quot;for loops&amp;quot; in the view&lt;br /&gt;
::2. Placing the logic for sorting the list  and so on.. &lt;br /&gt;
			&lt;br /&gt;
:Essentially views are meant to serve as a structure for the display of your model data. Therefore, the view is serving its purpose if the structure it creates for the display of a specific model can be adjusted based on the data contained in the model. Conditionally displaying elements in your view based on certain properties of the model it is meant to render is an acceptable practice.&lt;br /&gt;
&lt;br /&gt;
:If your view contained logic to modify the model data in any way, this would violate the separation of concerns that MVC is meant to establish.&lt;br /&gt;
&lt;br /&gt;
Therefore, it is only recommended to have fat models in the application because the business logic changes will be easier to make and moreover the models become reusable in more than one controller and thus it is easier to unit test.&lt;br /&gt;
&lt;br /&gt;
==Designing for Service Oriented Architecture.==&lt;br /&gt;
&lt;br /&gt;
In software engineering, a service-oriented architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes. SOA design principles are used during the phases of systems development and integration.&lt;br /&gt;
	&lt;br /&gt;
	SOA generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services. For example, several disparate departments within a company may develop and deploy SOA services in different implementation languages; their respective clients will benefit from a well-defined interface to access them. XML is often used for interfacing with SOA services, though this is not required. JSON is also becoming increasingly common.&lt;br /&gt;
	&lt;br /&gt;
	If the conventions mentioned in the previous section are followed, it will easily allow our application to integrate with Service Oriented Architecture. A well defined controller can be easily modified to make it amenable to Service Oriented Architecture (i.e. respond to SOA (JSON / XML) )&lt;br /&gt;
	&lt;br /&gt;
A simple example of the same can be seen below. Based on the client requirement, an appropriate response is generated. &lt;br /&gt;
 def create&lt;br /&gt;
 ..&lt;br /&gt;
 respond_to do |client_wants|&lt;br /&gt;
 client_wants.html{ redirect_to movie_path(@movie) }&lt;br /&gt;
 client_wants.xml{ render :xml =&amp;gt; @movie.to_xml}&lt;br /&gt;
 end&lt;br /&gt;
 ..&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
1. In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
&lt;br /&gt;
2. MVC Pattern encourages to include more code into the models, so that they can be reused across multiple controllers and views. This implies easier SOA Integration.&lt;br /&gt;
&lt;br /&gt;
3. Rails encourages convention over configuration and follows many standard conventions. Following these avoids writing more code which indirectly leads to lesser number of bugs.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
http://www.youtube.com/watch?v=P0g6JtcWm2o}&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Service-oriented_architecture&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Create,_read,_update_and_delete&lt;br /&gt;
&lt;br /&gt;
http://www.rorexperts.com/crud-operations-in-rails-t2239.html&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71124</id>
		<title>SaaS - 3.16. Finishing crud - Ruby</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71124"/>
		<updated>2012-11-20T03:43:44Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==CRUD==&lt;br /&gt;
CRUD operations are basic database operations of a persistent storage system that includes Create,Read,Update and Destroy.&lt;br /&gt;
In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
 &lt;br /&gt;
====Update====&lt;br /&gt;
Update is used to update an existing instance record of an application. Edit/Update pair is analogous to New/Create pair. As seen in the in New/Create functionality, the first action will retrieve the form and the second action will apply the changes and results of what the user passed into the form. The submit action redirects to the show action and shows the new modified item that was updated.&lt;br /&gt;
For the update functionality,the Form should be available with the existing fields populated. Also,the form action uses PUT method instead of the POST method.&lt;br /&gt;
&lt;br /&gt;
The code for Edit in the controller is as follows:&lt;br /&gt;
 def edit&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 end&lt;br /&gt;
Here, the instance variable movie which is to be edited is replaced with the name of the movie it will be edited into.&lt;br /&gt;
&lt;br /&gt;
Update looks similar to create action. The instance variable movie is first retrieved and then updated using update.attributes! where the parameters are passed in. The update.attributes! indicates that it is a destructive action. &lt;br /&gt;
The code for Update in the controller is as follows:&lt;br /&gt;
 def update&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 @movie.update_attributes!(params[:movie])&lt;br /&gt;
 flash[:notice] = &amp;quot;&amp;quot;&lt;br /&gt;
 redirect_to movie_path(@movie)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the view, a form tag is used for the movie instance. By default, the method used will be POST but we are explicitly setting the method to PUT. Sample code is as follows:&lt;br /&gt;
 form_tag movie_path(@movie), :method =&amp;gt; :put do&lt;br /&gt;
 label :movie, :title, 'Title'&lt;br /&gt;
 text_field :movie, 'title'&lt;br /&gt;
 submit_tag 'Update Movie Info'&lt;br /&gt;
&lt;br /&gt;
====Destroy====&lt;br /&gt;
Destroy is an instance method on a particular item. The instance variable must be loaded up first, and then it can be destroyed.&lt;br /&gt;
 def destroy&lt;br /&gt;
 @movie=Movie.find(params[:id])&lt;br /&gt;
 @movie.destroy&lt;br /&gt;
 flash[:notice]=&amp;quot;movie '#{@movie.title}'deleted.&amp;quot;&lt;br /&gt;
 redirect_to movies_path&lt;br /&gt;
 end&lt;br /&gt;
As seen in the code example, the instance variable of the movie is first retrieved and then destroyed using &amp;quot;destroy&amp;quot;.&lt;br /&gt;
Also, it can be seen that when we do the Edit action we load up the instance variable and then do so again for the Update action. This is because the instance variable only persists for a certain request.&lt;br /&gt;
&lt;br /&gt;
==Fallacies, pitfalls and perspectives on SaaS-on-Rails==&lt;br /&gt;
The MVC architectural pattern describes a way to structure our application and the responsibilities. The design also defines the way in which the three different components interact with each other.&lt;br /&gt;
&lt;br /&gt;
:1. A controller can send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document). It can send commands to the model to update the model's state (e.g., editing a document).&lt;br /&gt;
&lt;br /&gt;
:2. A model notifies its associated views and controllers when there has been a change in its state. This notification allows the views to produce updated output, and the controllers to change the available set of commands. A passive implementation of MVC omits these notifications, because the application does not require them or the software platform does not support them.&lt;br /&gt;
&lt;br /&gt;
:3. A view requests from the model the information that it needs to generate an output representation.&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
Under this architectural pattern, the common pitfalls to be avoided are:&lt;br /&gt;
&lt;br /&gt;
:1. Fat Controllers:&lt;br /&gt;
:Controller is the first place where we write code so we have to make sure that they should be as lean as possible. Fat Controllers are not recommended because business logic is enclosed in the controller and changes made are not reusable in other controllers. Also, its more difficult to port changes to other controllers, etc. when changes have to be made. &lt;br /&gt;
&lt;br /&gt;
:2. Fat views:&lt;br /&gt;
:Its always recommended to not have the application or model logic in the view. Views, just like the controllers have to be as lean as possible. Some common mistakes in this regard can be:&lt;br /&gt;
&lt;br /&gt;
::1. Including &amp;quot;for loops&amp;quot; in the view&lt;br /&gt;
::2. Placing the logic for sorting the list  and so on.. &lt;br /&gt;
			&lt;br /&gt;
:Essentially views are meant to serve as a structure for the display of your model data. Therefore, the view is serving its purpose if the structure it creates for the display of a specific model can be adjusted based on the data contained in the model. Conditionally displaying elements in your view based on certain properties of the model it is meant to render is an acceptable practice.&lt;br /&gt;
&lt;br /&gt;
:If your view contained logic to modify the model data in any way, this would violate the separation of concerns that MVC is meant to establish.&lt;br /&gt;
&lt;br /&gt;
Therefore, it is only recommended to have fat models in the application because the business logic changes will be easier to make and moreover the models become reusable in more than one controller and thus it is easier to unit test.&lt;br /&gt;
&lt;br /&gt;
==Designing for Service Oriented Architecture.==&lt;br /&gt;
&lt;br /&gt;
In software engineering, a service-oriented architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes. SOA design principles are used during the phases of systems development and integration.&lt;br /&gt;
	&lt;br /&gt;
	SOA generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services. For example, several disparate departments within a company may develop and deploy SOA services in different implementation languages; their respective clients will benefit from a well-defined interface to access them. XML is often used for interfacing with SOA services, though this is not required. JSON is also becoming increasingly common.&lt;br /&gt;
	&lt;br /&gt;
	If the conventions mentioned in the previous section are followed, it will easily allow our application to integrate with Service Oriented Architecture. A well defined controller can be easily modified to make it amenable to Service Oriented Architecture (i.e. respond to SOA (JSON / XML) )&lt;br /&gt;
	&lt;br /&gt;
A simple example of the same can be seen below. Based on the client requirement, an appropriate response is generated. &lt;br /&gt;
 def create&lt;br /&gt;
 ..&lt;br /&gt;
 respond_to do |client_wants|&lt;br /&gt;
 client_wants.html{ redirect_to movie_path(@movie) }&lt;br /&gt;
 client_wants.xml{ render :xml =&amp;gt; @movie.to_xml}&lt;br /&gt;
 end&lt;br /&gt;
 ..&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
1. In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
&lt;br /&gt;
2. MVC Pattern encourages to include more code into the models, so that they can be reused across multiple controllers and views. This implies easier SOA Integration.&lt;br /&gt;
&lt;br /&gt;
3. Rails encourages convention over configuration and follows many standard conventions. Following these avoids writing more code which indirectly leads to lesser number of bugs.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
http://www.youtube.com/watch?v=P0g6JtcWm2o}&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Service-oriented_architecture&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Create,_read,_update_and_delete&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71121</id>
		<title>SaaS - 3.16. Finishing crud - Ruby</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71121"/>
		<updated>2012-11-20T03:42:58Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==CRUD==&lt;br /&gt;
CRUD operations are basic database operations of a persistent storage system that includes Create,Read,Update and Destroy.&lt;br /&gt;
In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
 &lt;br /&gt;
====Update====&lt;br /&gt;
Update is used to update an existing instance record of an application. Edit/Update pair is analogous to New/Create pair. As seen in the in New/Create functionality, the first action will retrieve the form and the second action will apply the changes and results of what the user passed into the form. The submit action redirects to the show action and shows the new modified item that was updated.&lt;br /&gt;
For the update functionality,the Form should be available with the existing fields populated. Also,the form action uses PUT method instead of the POST method.&lt;br /&gt;
&lt;br /&gt;
The code for Edit in the controller is as follows:&lt;br /&gt;
 def edit&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 end&lt;br /&gt;
Here, the instance variable movie which is to be edited is replaced with the name of the movie it will be edited into.&lt;br /&gt;
&lt;br /&gt;
Update looks similar to create action. The instance variable movie is first retrieved and then updated using update.attributes! where the parameters are passed in. The update.attributes! indicates that it is a destructive action. &lt;br /&gt;
The code for Update in the controller is as follows:&lt;br /&gt;
 def update&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 @movie.update_attributes!(params[:movie])&lt;br /&gt;
 flash[:notice] = &amp;quot;&amp;quot;&lt;br /&gt;
 redirect_to movie_path(@movie)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the view, a form tag is used for the movie instance. By default, the method used will be POST but we are explicitly setting the method to PUT. Sample code is as follows:&lt;br /&gt;
 form_tag movie_path(@movie), :method =&amp;gt; :put do&lt;br /&gt;
 label :movie, :title, 'Title'&lt;br /&gt;
 text_field :movie, 'title'&lt;br /&gt;
 submit_tag 'Update Movie Info'&lt;br /&gt;
&lt;br /&gt;
====Destroy====&lt;br /&gt;
Destroy is an instance method on a particular item. The instance variable must be loaded up first, and then it can be destroyed.&lt;br /&gt;
 def destroy&lt;br /&gt;
 @movie=Movie.find(params[:id])&lt;br /&gt;
 @movie.destroy&lt;br /&gt;
 flash[:notice]=&amp;quot;movie '#{@movie.title}'deleted.&amp;quot;&lt;br /&gt;
 redirect_to movies_path&lt;br /&gt;
 end&lt;br /&gt;
As seen in the code example, the instance variable of the movie is first retrieved and then destroyed using &amp;quot;destroy&amp;quot;.&lt;br /&gt;
Also, it can be seen that when we do the Edit action we load up the instance variable and then do so again for the Update action. This is because the instance variable only persists for a certain request.&lt;br /&gt;
&lt;br /&gt;
==Fallacies, pitfalls and perspectives on SaaS-on-Rails==&lt;br /&gt;
The MVC architectural pattern describes a way to structure our application and the responsibilities. The design also defines the way in which the three different components interact with each other.&lt;br /&gt;
&lt;br /&gt;
:1. A controller can send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document). It can send commands to the model to update the model's state (e.g., editing a document).&lt;br /&gt;
&lt;br /&gt;
:2. A model notifies its associated views and controllers when there has been a change in its state. This notification allows the views to produce updated output, and the controllers to change the available set of commands. A passive implementation of MVC omits these notifications, because the application does not require them or the software platform does not support them.&lt;br /&gt;
&lt;br /&gt;
:3. A view requests from the model the information that it needs to generate an output representation.&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
Under this architectural pattern, the common pitfalls to be avoided are:&lt;br /&gt;
&lt;br /&gt;
:1. Fat Controllers:&lt;br /&gt;
:Controller is the first place where we write code so we have to make sure that they should be as lean as possible. Fat Controllers are not recommended because business logic is enclosed in the controller and changes made are not reusable in other controllers. Also, its more difficult to port changes to other controllers, etc. when changes have to be made. &lt;br /&gt;
&lt;br /&gt;
:2. Fat views:&lt;br /&gt;
:Its always recommended to not have the application or model logic in the view. Views, just like the controllers have to be as lean as possible. Some common mistakes in this regard can be:&lt;br /&gt;
&lt;br /&gt;
::1. Including &amp;quot;for loops&amp;quot; in the view&lt;br /&gt;
::2. Placing the logic for sorting the list  and so on.. &lt;br /&gt;
			&lt;br /&gt;
:Essentially views are meant to serve as a structure for the display of your model data. Therefore, the view is serving its purpose if the structure it creates for the display of a specific model can be adjusted based on the data contained in the model. Conditionally displaying elements in your view based on certain properties of the model it is meant to render is an acceptable practice.&lt;br /&gt;
&lt;br /&gt;
:If your view contained logic to modify the model data in any way, this would violate the separation of concerns that MVC is meant to establish.&lt;br /&gt;
&lt;br /&gt;
Therefore, it is only recommended to have fat models in the application because the business logic changes will be easier to make and moreover the models become reusable in more than one controller and thus it is easier to unit test.&lt;br /&gt;
&lt;br /&gt;
==Designing for Service Oriented Architecture.==&lt;br /&gt;
&lt;br /&gt;
In software engineering, a service-oriented architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes. SOA design principles are used during the phases of systems development and integration.&lt;br /&gt;
	&lt;br /&gt;
	SOA generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services. For example, several disparate departments within a company may develop and deploy SOA services in different implementation languages; their respective clients will benefit from a well-defined interface to access them. XML is often used for interfacing with SOA services, though this is not required. JSON is also becoming increasingly common.&lt;br /&gt;
	&lt;br /&gt;
	If the conventions mentioned in the previous section are followed, it will easily allow our application to integrate with Service Oriented Architecture. A well defined controller can be easily modified to make it amenable to Service Oriented Architecture (i.e. respond to SOA (JSON / XML) )&lt;br /&gt;
	&lt;br /&gt;
A simple example of the same can be seen below. Based on the client requirement, an appropriate response is generated. &lt;br /&gt;
 def create&lt;br /&gt;
 ..&lt;br /&gt;
 respond_to do |client_wants|&lt;br /&gt;
 client_wants.html{ redirect_to movie_path(@movie) }&lt;br /&gt;
 client_wants.xml{ render :xml =&amp;gt; @movie.to_xml}&lt;br /&gt;
 end&lt;br /&gt;
 ..&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
1. In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
&lt;br /&gt;
2. MVC Pattern encourages to include more code into the models, so that they can be reused across multiple controllers and views. This implies easier SOA Integration.&lt;br /&gt;
&lt;br /&gt;
3. Rails encourages convention over configuration and follows many standard conventions. Following these avoids writing more code which indirectly leads to lesser number of bugs.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
http://www.youtube.com/watch?v=P0g6JtcWm2o}&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Service-oriented_architecture&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71120</id>
		<title>SaaS - 3.16. Finishing crud - Ruby</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71120"/>
		<updated>2012-11-20T03:41:59Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==CRUD==&lt;br /&gt;
CRUD operations are basic database operations of a persistent storage system that includes Create,Read,Update and Destroy.&lt;br /&gt;
In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
 &lt;br /&gt;
====Update====&lt;br /&gt;
Update is used to update an existing instance record of an application. Edit/Update pair is analogous to New/Create pair. As seen in the in New/Create functionality, the first action will retrieve the form and the second action will apply the changes and results of what the user passed into the form. The submit action redirects to the show action and shows the new modified item that was updated.&lt;br /&gt;
For the update functionality,the Form should be available with the existing fields populated. Also,the form action uses PUT method instead of the POST method.&lt;br /&gt;
&lt;br /&gt;
The code for Edit in the controller is as follows:&lt;br /&gt;
 def edit&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 end&lt;br /&gt;
Here, the instance variable movie which is to be edited is replaced with the name of the movie it will be edited into.&lt;br /&gt;
&lt;br /&gt;
Update looks similar to create action. The instance variable movie is first retrieved and then updated using update.attributes! where the parameters are passed in. The update.attributes! indicates that it is a destructive action. &lt;br /&gt;
The code for Update in the controller is as follows:&lt;br /&gt;
 def update&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 @movie.update_attributes!(params[:movie])&lt;br /&gt;
 flash[:notice] = &amp;quot;&amp;quot;&lt;br /&gt;
 redirect_to movie_path(@movie)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the view, a form tag is used for the movie instance. By default, the method used will be POST but we are explicitly setting the method to PUT. Sample code is as follows:&lt;br /&gt;
 form_tag movie_path(@movie), :method =&amp;gt; :put do&lt;br /&gt;
 label :movie, :title, 'Title'&lt;br /&gt;
 text_field :movie, 'title'&lt;br /&gt;
 submit_tag 'Update Movie Info'&lt;br /&gt;
&lt;br /&gt;
====Destroy====&lt;br /&gt;
Destroy is an instance method on a particular item. The instance variable must be loaded up first, and then it can be destroyed.&lt;br /&gt;
 def destroy&lt;br /&gt;
 @movie=Movie.find(params[:id])&lt;br /&gt;
 @movie.destroy&lt;br /&gt;
 flash[:notice]=&amp;quot;movie '#{@movie.title}'deleted.&amp;quot;&lt;br /&gt;
 redirect_to movies_path&lt;br /&gt;
 end&lt;br /&gt;
As seen in the code example, the instance variable of the movie is first retrieved and then destroyed using &amp;quot;destroy&amp;quot;.&lt;br /&gt;
Also, it can be seen that when we do the Edit action we load up the instance variable and then do so again for the Update action. This is because the instance variable only persists for a certain request.&lt;br /&gt;
&lt;br /&gt;
==Fallacies, pitfalls and perspectives on SaaS-on-Rails==&lt;br /&gt;
The MVC architectural pattern describes a way to structure our application and the responsibilities. The design also defines the way in which the three different components interact with each other.&lt;br /&gt;
&lt;br /&gt;
:1. A controller can send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document). It can send commands to the model to update the model's state (e.g., editing a document).&lt;br /&gt;
&lt;br /&gt;
:2. A model notifies its associated views and controllers when there has been a change in its state. This notification allows the views to produce updated output, and the controllers to change the available set of commands. A passive implementation of MVC omits these notifications, because the application does not require them or the software platform does not support them.&lt;br /&gt;
&lt;br /&gt;
:3. A view requests from the model the information that it needs to generate an output representation.&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
Under this architectural pattern, the common pitfalls to be avoided are:&lt;br /&gt;
&lt;br /&gt;
:1. Fat Controllers:&lt;br /&gt;
:Controller is the first place where we write code so we have to make sure that they should be as lean as possible. Fat Controllers are not recommended because business logic is enclosed in the controller and changes made are not reusable in other controllers. Also, its more difficult to port changes to other controllers, etc. when changes have to be made. &lt;br /&gt;
&lt;br /&gt;
:2. Fat views:&lt;br /&gt;
:Its always recommended to not have the application or model logic in the view. Views, just like the controllers have to be as lean as possible. Some common mistakes in this regard can be:&lt;br /&gt;
&lt;br /&gt;
::1. Including &amp;quot;for loops&amp;quot; in the view&lt;br /&gt;
::2. Placing the logic for sorting the list  and so on.. &lt;br /&gt;
			&lt;br /&gt;
:Essentially views are meant to serve as a structure for the display of your model data. Therefore, the view is serving its purpose if the structure it creates for the display of a specific model can be adjusted based on the data contained in the model. Conditionally displaying elements in your view based on certain properties of the model it is meant to render is an acceptable practice.&lt;br /&gt;
&lt;br /&gt;
:If your view contained logic to modify the model data in any way, this would violate the separation of concerns that MVC is meant to establish.&lt;br /&gt;
&lt;br /&gt;
Therefore, it is only recommended to have fat models in the application because the business logic changes will be easier to make and moreover the models become reusable in more than one controller and thus it is easier to unit test.&lt;br /&gt;
&lt;br /&gt;
==Designing for Service Oriented Architecture.==&lt;br /&gt;
&lt;br /&gt;
In software engineering, a service-oriented architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes. SOA design principles are used during the phases of systems development and integration.&lt;br /&gt;
	&lt;br /&gt;
	SOA generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services. For example, several disparate departments within a company may develop and deploy SOA services in different implementation languages; their respective clients will benefit from a well-defined interface to access them. XML is often used for interfacing with SOA services, though this is not required. JSON is also becoming increasingly common.&lt;br /&gt;
	&lt;br /&gt;
	If the conventions mentioned in the previous section are followed, it will easily allow our application to integrate with Service Oriented Architecture. A well defined controller can be easily modified to make it amenable to Service Oriented Architecture (i.e. respond to SOA (JSON / XML) )&lt;br /&gt;
	&lt;br /&gt;
A simple example of the same can be seen below. Based on the client requirement, an appropriate response is generated. &lt;br /&gt;
 def create&lt;br /&gt;
 ..&lt;br /&gt;
 respond_to do |client_wants|&lt;br /&gt;
 client_wants.html{ redirect_to movie_path(@movie) }&lt;br /&gt;
 client_wants.xml{ render :xml =&amp;gt; @movie.to_xml}&lt;br /&gt;
 end&lt;br /&gt;
 ..&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
1. In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
&lt;br /&gt;
2. MVC Pattern encourages to include more code into the models, so that they can be reused across multiple controllers and views. This implies easier SOA Integration.&lt;br /&gt;
&lt;br /&gt;
3. Rails encourages convention over configuration and follows many standard conventions. Following these avoids writing more code which indirectly leads to lesser number of bugs.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{http://www.youtube.com/watch?v=P0g6JtcWm2o}&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71117</id>
		<title>SaaS - 3.16. Finishing crud - Ruby</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71117"/>
		<updated>2012-11-20T03:38:05Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==CRUD==&lt;br /&gt;
CRUD operations are basic database operations of a persistent storage system that includes Create,Read,Update and Destroy.&lt;br /&gt;
In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
 &lt;br /&gt;
====Update====&lt;br /&gt;
Update is used to update an existing instance record of an application. Edit/Update pair is analogous to New/Create pair. As seen in the in New/Create functionality, the first action will retrieve the form and the second action will apply the changes and results of what the user passed into the form. The submit action redirects to the show action and shows the new modified item that was updated.&lt;br /&gt;
For the update functionality,the Form should be available with the existing fields populated. Also,the form action uses PUT method instead of the POST method.&lt;br /&gt;
&lt;br /&gt;
The code for Edit in the controller is as follows:&lt;br /&gt;
 def edit&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 end&lt;br /&gt;
Here, the instance variable movie which is to be edited is replaced with the name of the movie it will be edited into.&lt;br /&gt;
&lt;br /&gt;
Update looks similar to create action. The instance variable movie is first retrieved and then updated using update.attributes! where the parameters are passed in. The update.attributes! indicates that it is a destructive action. &lt;br /&gt;
The code for Update in the controller is as follows:&lt;br /&gt;
 def update&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 @movie.update_attributes!(params[:movie])&lt;br /&gt;
 flash[:notice] = &amp;quot;&amp;quot;&lt;br /&gt;
 redirect_to movie_path(@movie)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the view, a form tag is used for the movie instance. By default, the method used will be POST but we are explicitly setting the method to PUT. Sample code is as follows:&lt;br /&gt;
 form_tag movie_path(@movie), :method =&amp;gt; :put do&lt;br /&gt;
 label :movie, :title, 'Title'&lt;br /&gt;
 text_field :movie, 'title'&lt;br /&gt;
 submit_tag 'Update Movie Info'&lt;br /&gt;
&lt;br /&gt;
====Destroy====&lt;br /&gt;
Destroy is an instance method on a particular item. The instance variable must be loaded up first, and then it can be destroyed.&lt;br /&gt;
 def destroy&lt;br /&gt;
 @movie=Movie.find(params[:id])&lt;br /&gt;
 @movie.destroy&lt;br /&gt;
 flash[:notice]=&amp;quot;movie '#{@movie.title}'deleted.&amp;quot;&lt;br /&gt;
 redirect_to movies_path&lt;br /&gt;
 end&lt;br /&gt;
As seen in the code example, the instance variable of the movie is first retrieved and then destroyed using &amp;quot;destroy&amp;quot;.&lt;br /&gt;
Also, it can be seen that when we do the Edit action we load up the instance variable and then do so again for the Update action. This is because the instance variable only persists for a certain request.&lt;br /&gt;
&lt;br /&gt;
==Fallacies, pitfalls and perspectives on SaaS-on-Rails==&lt;br /&gt;
The MVC architectural pattern describes a way to structure our application and the responsibilities. The design also defines the way in which the three different components interact with each other.&lt;br /&gt;
&lt;br /&gt;
:1. A controller can send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document). It can send commands to the model to update the model's state (e.g., editing a document).&lt;br /&gt;
&lt;br /&gt;
:2. A model notifies its associated views and controllers when there has been a change in its state. This notification allows the views to produce updated output, and the controllers to change the available set of commands. A passive implementation of MVC omits these notifications, because the application does not require them or the software platform does not support them.&lt;br /&gt;
&lt;br /&gt;
:3. A view requests from the model the information that it needs to generate an output representation.&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
Under this architectural pattern, the common pitfalls to be avoided are:&lt;br /&gt;
&lt;br /&gt;
:1. Fat Controllers:&lt;br /&gt;
:Controller is the first place where we write code so we have to make sure that they should be as lean as possible. Fat Controllers are not recommended because business logic is enclosed in the controller and changes made are not reusable in other controllers. Also, its more difficult to port changes to other controllers, etc. when changes have to be made. &lt;br /&gt;
&lt;br /&gt;
:2. Fat views:&lt;br /&gt;
:Its always recommended to not have the application or model logic in the view. Views, just like the controllers have to be as lean as possible. Some common mistakes in this regard can be:&lt;br /&gt;
&lt;br /&gt;
::1. Including &amp;quot;for loops&amp;quot; in the view&lt;br /&gt;
::2. Placing the logic for sorting the list  and so on.. &lt;br /&gt;
			&lt;br /&gt;
:Essentially views are meant to serve as a structure for the display of your model data. Therefore, the view is serving its purpose if the structure it creates for the display of a specific model can be adjusted based on the data contained in the model. Conditionally displaying elements in your view based on certain properties of the model it is meant to render is an acceptable practice.&lt;br /&gt;
&lt;br /&gt;
:If your view contained logic to modify the model data in any way, this would violate the separation of concerns that MVC is meant to establish.&lt;br /&gt;
&lt;br /&gt;
Therefore, it is only recommended to have fat models in the application because the business logic changes will be easier to make and moreover the models become reusable in more than one controller and thus it is easier to unit test.&lt;br /&gt;
&lt;br /&gt;
==Designing for Service Oriented Architecture.==&lt;br /&gt;
&lt;br /&gt;
In software engineering, a service-oriented architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes. SOA design principles are used during the phases of systems development and integration.&lt;br /&gt;
	&lt;br /&gt;
	SOA generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services. For example, several disparate departments within a company may develop and deploy SOA services in different implementation languages; their respective clients will benefit from a well-defined interface to access them. XML is often used for interfacing with SOA services, though this is not required. JSON is also becoming increasingly common.&lt;br /&gt;
	&lt;br /&gt;
	If the conventions mentioned in the previous section are followed, it will easily allow our application to integrate with Service Oriented Architecture. A well defined controller can be easily modified to make it amenable to Service Oriented Architecture (i.e. respond to SOA (JSON / XML) )&lt;br /&gt;
	&lt;br /&gt;
A simple example of the same can be seen below. Based on the client requirement, an appropriate response is generated. &lt;br /&gt;
 def create&lt;br /&gt;
 ..&lt;br /&gt;
 respond_to do |client_wants|&lt;br /&gt;
 client_wants.html{ redirect_to movie_path(@movie) }&lt;br /&gt;
 client_wants.xml{ render :xml =&amp;gt; @movie.to_xml}&lt;br /&gt;
 end&lt;br /&gt;
 ..&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
1. In rails Create, Read, Update and Destroy are supported by many methods provided by ActiveRecord, making it independent of any database. Since Rails follows MVC(Model-View-Controller) architecture, these three parts are responsible for making all these operations possible.&lt;br /&gt;
&lt;br /&gt;
2. MVC Pattern encourages to include more code into the models, so that they can be reused across multiple controllers and views. This implies easier SOA Integration.&lt;br /&gt;
&lt;br /&gt;
3. Rails encourages convention over configuration and follows many standard conventions. Following these avoids writing more code which indirectly leads to lesser number of bugs.&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71093</id>
		<title>SaaS - 3.16. Finishing crud - Ruby</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71093"/>
		<updated>2012-11-20T03:16:13Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==CRUD==&lt;br /&gt;
CRUD operations are basic database operations of a persistent storage system that includes Create,Read,Update and Destroy.&lt;br /&gt;
&lt;br /&gt;
==Update==&lt;br /&gt;
Update is used to update an existing instance record of an application. Edit/Update pair is analogous to New/Create pair. As seen in the in New/Create functionality, the first action will retrieve the form and the second action will apply the changes and results of what the user passed into the form. The submit action redirects to the show action and shows the new modified item that was updated.&lt;br /&gt;
For the update functionality,the Form should be available with the existing fields populated. Also,the form action uses PUT method instead of the POST method.&lt;br /&gt;
&lt;br /&gt;
The code for Edit in the controller is as follows:&lt;br /&gt;
 def edit&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 end&lt;br /&gt;
Here, the instance variable movie which is to be edited is replaced with the name of the movie it will be edited into.&lt;br /&gt;
&lt;br /&gt;
Update looks similar to create action. The instance variable movie is first retrieved and then updated using update.attributes! where the parameters are passed in. The update.attributes! indicates that it is a destructive action. &lt;br /&gt;
The code for Update in the controller is as follows:&lt;br /&gt;
 def update&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 @movie.update_attributes!(params[:movie])&lt;br /&gt;
 flash[:notice] = &amp;quot;&amp;quot;&lt;br /&gt;
 redirect_to movie_path(@movie)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the view, a form tag is used for the movie instance. By default, the method used will be POST but we are explicitly setting the method to PUT. Sample code is as follows:&lt;br /&gt;
 form_tag movie_path(@movie), :method =&amp;gt; :put do&lt;br /&gt;
 label :movie, :title, 'Title'&lt;br /&gt;
 text_field :movie, 'title'&lt;br /&gt;
 submit_tag 'Update Movie Info'&lt;br /&gt;
&lt;br /&gt;
==Destroy==&lt;br /&gt;
Destroy is an instance method on a particular item. The instance variable must be loaded up first, and then it can be destroyed.&lt;br /&gt;
 def destroy&lt;br /&gt;
 @movie=Movie.find(params[:id])&lt;br /&gt;
 @movie.destroy&lt;br /&gt;
 flash[:notice]=&amp;quot;movie '#{@movie.title}'deleted.&amp;quot;&lt;br /&gt;
 redirect_to movies_path&lt;br /&gt;
 end&lt;br /&gt;
As seen in the code example, the instance variable of the movie is first retrieved and then destroyed using &amp;quot;destroy&amp;quot;.&lt;br /&gt;
Also, it can be seen that when we do the Edit action we load up the instance variable and then do so again for the Update action. This is because the instance variable only persists for a certain request.&lt;br /&gt;
&lt;br /&gt;
==Fallacies, pitfalls and perspectives on SaaS-on-Rails==&lt;br /&gt;
The MVC architectural pattern describes a way to structure our application and the responsibilities. The design also defines the way in which the three different components interact with each other.&lt;br /&gt;
&lt;br /&gt;
:1. A controller can send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document). It can send commands to the model to update the model's state (e.g., editing a document).&lt;br /&gt;
&lt;br /&gt;
:2. A model notifies its associated views and controllers when there has been a change in its state. This notification allows the views to produce updated output, and the controllers to change the available set of commands. A passive implementation of MVC omits these notifications, because the application does not require them or the software platform does not support them.&lt;br /&gt;
&lt;br /&gt;
:3. A view requests from the model the information that it needs to generate an output representation.&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
Under this architectural pattern, the common pitfalls to be avoided are:&lt;br /&gt;
&lt;br /&gt;
:1. Fat Controllers:&lt;br /&gt;
Controller is the first place where we write code so we have to make sure that they should be as lean as possible. Fat Controllers are not recommended because business logic is enclosed in the controller and changes made are not reusable in other controllers. Also, its more difficult to port changes to other controllers, etc. when changes have to be made. &lt;br /&gt;
&lt;br /&gt;
:2. Fat views:&lt;br /&gt;
:Its always recommended to not have the application or model logic in the view. Views, just like the controllers have to be as lean as possible. Some common mistakes in this regard can be:&lt;br /&gt;
&lt;br /&gt;
::1. Including &amp;quot;for loops&amp;quot; in the view&lt;br /&gt;
::2. Placing the logic for sorting the list  and so on.. &lt;br /&gt;
			&lt;br /&gt;
:Essentially views are meant to serve as a structure for the display of your model data. Therefore, the view is serving its purpose if the structure it creates for the display of a specific model can be adjusted based on the data contained in the model. Conditionally displaying elements in your view based on certain properties of the model it is meant to render is an acceptable practice.&lt;br /&gt;
&lt;br /&gt;
:If your view contained logic to modify the model data in any way, this would violate the separation of concerns that MVC is meant to establish.&lt;br /&gt;
&lt;br /&gt;
Therefore, it is only recommended to have fat models in the application because the business logic changes will be easier to make and moreover the models become reusable in more than one controller and thus it is easier to unit test.&lt;br /&gt;
&lt;br /&gt;
==Designing for Service Oriented Architecture.==&lt;br /&gt;
&lt;br /&gt;
In software engineering, a service-oriented architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes. SOA design principles are used during the phases of systems development and integration.&lt;br /&gt;
	&lt;br /&gt;
	SOA generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services. For example, several disparate departments within a company may develop and deploy SOA services in different implementation languages; their respective clients will benefit from a well-defined interface to access them. XML is often used for interfacing with SOA services, though this is not required. JSON is also becoming increasingly common.&lt;br /&gt;
	&lt;br /&gt;
	If the conventions mentioned in the previous section are followed, it will easily allow our application to integrate with Service Oriented Architecture. A well defined controller can be easily modified to make it amenable to Service Oriented Architecture (i.e. respond to SOA (JSON / XML) )&lt;br /&gt;
	&lt;br /&gt;
A simple example of the same can be seen below. Based on the client requirement, an appropriate response is generated. &lt;br /&gt;
 def create&lt;br /&gt;
 ..&lt;br /&gt;
 respond_to do |client_wants|&lt;br /&gt;
 client_wants.html{ redirect_to movie_path(@movie) }&lt;br /&gt;
 client_wants.xml{ render :xml =&amp;gt; @movie.to_xml}&lt;br /&gt;
 end&lt;br /&gt;
 ..&lt;br /&gt;
 end&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71092</id>
		<title>SaaS - 3.16. Finishing crud - Ruby</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71092"/>
		<updated>2012-11-20T03:15:23Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==CRUD==&lt;br /&gt;
CRUD operations are basic database operations of a persistent storage system that includes Create,Read,Update and Destroy.&lt;br /&gt;
&lt;br /&gt;
==Update==&lt;br /&gt;
Update is used to update an existing instance record of an application. Edit/Update pair is analogous to New/Create pair. As seen in the in New/Create functionality, the first action will retrieve the form and the second action will apply the changes and results of what the user passed into the form. The submit action redirects to the show action and shows the new modified item that was updated.&lt;br /&gt;
For the update functionality,the Form should be available with the existing fields populated. Also,the form action uses PUT method instead of the POST method.&lt;br /&gt;
&lt;br /&gt;
The code for Edit in the controller is as follows:&lt;br /&gt;
 def edit&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 end&lt;br /&gt;
Here, the instance variable movie which is to be edited is replaced with the name of the movie it will be edited into.&lt;br /&gt;
&lt;br /&gt;
Update looks similar to create action. The instance variable movie is first retrieved and then updated using update.attributes! where the parameters are passed in. The update.attributes! indicates that it is a destructive action. &lt;br /&gt;
The code for Update in the controller is as follows:&lt;br /&gt;
 def update&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 @movie.update_attributes!(params[:movie])&lt;br /&gt;
 flash[:notice] = &amp;quot;&amp;quot;&lt;br /&gt;
 redirect_to movie_path(@movie)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the view, a form tag is used for the movie instance. By default, the method used will be POST but we are explicitly setting the method to PUT. Sample code is as follows:&lt;br /&gt;
 form_tag movie_path(@movie), :method =&amp;gt; :put do&lt;br /&gt;
 label :movie, :title, 'Title'&lt;br /&gt;
 text_field :movie, 'title'&lt;br /&gt;
 submit_tag 'Update Movie Info'&lt;br /&gt;
&lt;br /&gt;
==Destroy==&lt;br /&gt;
Destroy is an instance method on a particular item. The instance variable must be loaded up first, and then it can be destroyed.&lt;br /&gt;
 def destroy&lt;br /&gt;
 @movie=Movie.find(params[:id])&lt;br /&gt;
 @movie.destroy&lt;br /&gt;
 flash[:notice]=&amp;quot;movie '#{@movie.title}'deleted.&amp;quot;&lt;br /&gt;
 redirect_to movies_path&lt;br /&gt;
 end&lt;br /&gt;
As seen in the code example, the instance variable of the movie is first retrieved and then destroyed using &amp;quot;destroy&amp;quot;.&lt;br /&gt;
Also, it can be seen that when we do the Edit action we load up the instance variable and then do so again for the Update action. This is because the instance variable only persists for a certain request.&lt;br /&gt;
&lt;br /&gt;
==Fallacies, pitfalls and perspectives on SaaS-on-Rails==&lt;br /&gt;
The MVC architectural pattern describes a way to structure our application and the responsibilities. The design also defines the way in which the three different components interact with each other.&lt;br /&gt;
&lt;br /&gt;
:1. A controller can send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document). It can send commands to the model to update the model's state (e.g., editing a document).&lt;br /&gt;
&lt;br /&gt;
:2. A model notifies its associated views and controllers when there has been a change in its state. This notification allows the views to produce updated output, and the controllers to change the available set of commands. A passive implementation of MVC omits these notifications, because the application does not require them or the software platform does not support them.&lt;br /&gt;
&lt;br /&gt;
:3. A view requests from the model the information that it needs to generate an output representation.&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
Under this architectural pattern, the common pitfalls to be avoided are:&lt;br /&gt;
&lt;br /&gt;
:1. Fat Controllers:&lt;br /&gt;
Controller is the first place where we write code so we have to make sure that they should be as lean as possible. Fat Controllers are not recommended because business logic is enclosed in the controller and changes made are not reusable in other controllers. Also, its more difficult to port changes to other controllers, etc. when changes have to be made. &lt;br /&gt;
&lt;br /&gt;
:2. Fat views:&lt;br /&gt;
:Its always recommended to not have the application or model logic in the view. Views, just like the controllers have to be as lean as possible. Some common mistakes in this regard can be:&lt;br /&gt;
&lt;br /&gt;
::1. Including &amp;quot;for loops&amp;quot; in the view&lt;br /&gt;
::2. Placing the logic for sorting the list  and so on.. &lt;br /&gt;
			&lt;br /&gt;
:Essentially views are meant to serve as a structure for the display of your model data. Therefore, the view is serving its purpose if the structure it creates for the display of a specific model can be adjusted based on the data contained in the model. Conditionally displaying elements in your view based on certain properties of the model it is meant to render is an acceptable practice.&lt;br /&gt;
&lt;br /&gt;
:If your view contained logic to modify the model data in any way, this would violate the separation of concerns that MVC is meant to establish.&lt;br /&gt;
&lt;br /&gt;
Therefore, it is only recommended to have fat models in the application because the business logic changes will be easier to make and moreover the models become reusable in more than one controller and thus it is easier to unit test.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==Designing for Service Oriented Architecture.==&lt;br /&gt;
&lt;br /&gt;
In software engineering, a service-oriented architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes. SOA design principles are used during the phases of systems development and integration.&lt;br /&gt;
	&lt;br /&gt;
	SOA generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services. For example, several disparate departments within a company may develop and deploy SOA services in different implementation languages; their respective clients will benefit from a well-defined interface to access them. XML is often used for interfacing with SOA services, though this is not required. JSON is also becoming increasingly common.&lt;br /&gt;
	&lt;br /&gt;
	If the conventions mentioned in the previous section are followed, it will easily allow our application to integrate with Service Oriented Architecture. A well defined controller can be easily modified to make it amenable to Service Oriented Architecture (i.e. respond to SOA (JSON / XML) )&lt;br /&gt;
	&lt;br /&gt;
A simple example of the same can be seen below. Based on the client requirement, an appropriate response is generated. &lt;br /&gt;
 def create&lt;br /&gt;
 ..&lt;br /&gt;
 respond_to do |client_wants|&lt;br /&gt;
 client_wants.html{ redirect_to movie_path(@movie) }&lt;br /&gt;
 client_wants.xml{ render :xml =&amp;gt; @movie.to_xml}&lt;br /&gt;
 end&lt;br /&gt;
 ..&lt;br /&gt;
 end&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71076</id>
		<title>SaaS - 3.16. Finishing crud - Ruby</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71076"/>
		<updated>2012-11-20T02:55:39Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==CRUD==&lt;br /&gt;
CRUD operations are basic database operations of a persistent storage system that includes Create,Read,Update and Destroy.&lt;br /&gt;
&lt;br /&gt;
==Update==&lt;br /&gt;
Update is used to update an existing instance record of an application. Edit/Update pair is analogous to New/Create pair. As seen in the in New/Create functionality, the first action will retrieve the form and the second action will apply the changes and results of what the user passed into the form. The submit action redirects to the show action and shows the new modified item that was updated.&lt;br /&gt;
For the update functionality,the Form should be available with the existing fields populated. Also,the form action uses PUT method instead of the POST method.&lt;br /&gt;
&lt;br /&gt;
The code for Edit in the controller is as follows:&lt;br /&gt;
 def edit&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 end&lt;br /&gt;
Here, the instance variable movie which is to be edited is replaced with the name of the movie it will be edited into.&lt;br /&gt;
&lt;br /&gt;
Update looks similar to create action. The instance variable movie is first retrieved and then updated using update.attributes! where the parameters are passed in. The update.attributes! indicates that it is a destructive action. &lt;br /&gt;
The code for Update in the controller is as follows:&lt;br /&gt;
 def update&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 @movie.update_attributes!(params[:movie])&lt;br /&gt;
 flash[:notice] = &amp;quot;&amp;quot;&lt;br /&gt;
 redirect_to movie_path(@movie)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the view, a form tag is used for the movie instance. By default, the method used will be POST but we are explicitly setting the method to PUT.  &lt;br /&gt;
form_tag movie_path(@movie), :method =&amp;gt; :put do&lt;br /&gt;
label :movie, :title, 'Title'&lt;br /&gt;
text_field :movie, 'title'&lt;br /&gt;
submit_tag 'Update Movie Info'&lt;br /&gt;
&lt;br /&gt;
==Destroy==&lt;br /&gt;
Destroy is an instance method on a particular item. The instance variable must be loaded up first, and then it can be destroyed.&lt;br /&gt;
def destroy&lt;br /&gt;
 @movie=Movie.find(params[:id])&lt;br /&gt;
 @movie.destroy&lt;br /&gt;
 flash[:notice]=&amp;quot;movie '#{@movie.title}'deleted.&amp;quot;&lt;br /&gt;
 redirect_to movies_path&lt;br /&gt;
 end&lt;br /&gt;
As seen in the code example, the instance variable of the movie is first retrieved and then destroyed using &amp;quot;destroy&amp;quot;.&lt;br /&gt;
Also, it can be seen that when we do the Edit action we load up the instance variable and then do so again for the Update action. This is because the instance variable only persists for a certain request.&lt;br /&gt;
&lt;br /&gt;
==Fallacies, pitfalls and perspectives on SaaS-on-Rails==&lt;br /&gt;
The MVC architectural pattern describes a way to structure our application and the responsibilities. The design also defines the way in which the three different components interact with each other.&lt;br /&gt;
&lt;br /&gt;
1. A controller can send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document). It can send commands to the model to update the model's state (e.g., editing a document).&lt;br /&gt;
&lt;br /&gt;
2. A model notifies its associated views and controllers when there has been a change in its state. This notification allows the views to produce updated output, and the controllers to change the available set of commands. A passive implementation of MVC omits these notifications, because the application does not require them or the software platform does not support them.&lt;br /&gt;
&lt;br /&gt;
3. A view requests from the model the information that it needs to generate an output representation.&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
Under this architectural pattern, the common pitfalls to be avoided are:&lt;br /&gt;
&lt;br /&gt;
1. Fat Controllers:&lt;br /&gt;
Controller is the first place where we write code so we have to make sure that they should be as lean as possible. Fat Controllers are not recommended because business logic is enclosed in the controller and changes made are not reusable in other controllers. Also, its more difficult to port changes to other controllers, etc. when changes have to be made. &lt;br /&gt;
&lt;br /&gt;
2. Fat views:&lt;br /&gt;
Its always recommended to not have the application or model logic in the view. Views, just like the controllers have to be as lean as possible. Some common mistakes in this regard can be:&lt;br /&gt;
&lt;br /&gt;
	1. Including &amp;quot;for loops&amp;quot; in the view&lt;br /&gt;
	2. Placing the logic for sorting the list  and so on.. &lt;br /&gt;
			&lt;br /&gt;
Essentially views are meant to serve as a structure for the display of your model data. Therefore, the view is serving its purpose if the structure it creates for the display of a specific model can be adjusted based on the data contained in the model. Conditionally displaying elements in your view based on certain properties of the model it is meant to render is an acceptable practice.&lt;br /&gt;
&lt;br /&gt;
If your view contained logic to modify the model data in any way, this would violate the separation of concerns that MVC is meant to establish.&lt;br /&gt;
&lt;br /&gt;
Therefore, it is only recommended to have fat models in the application because the business logic changes will be easier to make and moreover the models become reusable in more than one controller and thus it is easier to unit test. Moreover, following the above conventions allow our application to easily integrate with Service Oriented Architecture.&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71073</id>
		<title>SaaS - 3.16. Finishing crud - Ruby</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=SaaS_-_3.16._Finishing_crud_-_Ruby&amp;diff=71073"/>
		<updated>2012-11-20T02:53:33Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: Created page with &amp;quot;==CRUD== CRUD operations are basic database operations of a persistent storage system that includes Create,Read,Update and Destroy.  ==Update== Update is used to update an existi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==CRUD==&lt;br /&gt;
CRUD operations are basic database operations of a persistent storage system that includes Create,Read,Update and Destroy.&lt;br /&gt;
&lt;br /&gt;
==Update==&lt;br /&gt;
Update is used to update an existing instance record of an application. Edit/Update pair is analogous to New/Create pair. As seen in the in New/Create functionality, the first action will retrieve the form and the second action will apply the changes and results of what the user passed into the form. The submit action redirects to the show action and shows the new modified item that was updated.&lt;br /&gt;
For the update functionality,the Form should be available with the existing fields populated. Also,the form action uses PUT method instead of the POST method.&lt;br /&gt;
&lt;br /&gt;
The code for Edit in the controller is as follows:&lt;br /&gt;
 def edit&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 end&lt;br /&gt;
Here, the instance variable movie which is to be edited is replaced with the name of the movie it will be edited into.&lt;br /&gt;
&lt;br /&gt;
Update looks similar to create action. The instance variable movie is first retrieved and then updated using update.attributes! where the parameters are passed in. The update.attributes! indicates that it is a destructive action. &lt;br /&gt;
The code for Update in the controller is as follows:&lt;br /&gt;
 def update&lt;br /&gt;
 @movie = movie.find params[:id]&lt;br /&gt;
 @movie.update_attributes!(params[:movie])&lt;br /&gt;
 flash[:notice] = &amp;quot;&amp;quot;&lt;br /&gt;
 redirect_to movie_path(@movie)&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the view, a form tag is used for the movie instance. By default, the method used will be POST but we are explicitly setting the method to PUT.  &lt;br /&gt;
form_tag movie_path(@movie), :method =&amp;gt; :put do&lt;br /&gt;
label :movie, :title, 'Title'&lt;br /&gt;
text_field :movie, 'title'&lt;br /&gt;
submit_tag 'Update Movie Info'&lt;br /&gt;
&lt;br /&gt;
==Destroy==&lt;br /&gt;
Destroy is an instance method on a particular item. The instance variable must be loaded up first, and then it can be destroyed.&lt;br /&gt;
def destroy&lt;br /&gt;
 @movie=Movie.find(params[:id])&lt;br /&gt;
 @movie.destroy&lt;br /&gt;
 flash[:notice]=&amp;quot;movie '#{@movie.title}'deleted.&amp;quot;&lt;br /&gt;
 redirect_to movies_path&lt;br /&gt;
 end&lt;br /&gt;
As seen in the code example, the instance variable of the movie is first retrieved and then destroyed using &amp;quot;destroy&amp;quot;.&lt;br /&gt;
Also, it can be seen that when we do the Edit action we load up the instance variable and then do so again for the Update action. This is because the instance variable only persists for a certain request.&lt;br /&gt;
&lt;br /&gt;
==Fallacies, pitfalls and perspectives on SaaS-on-Rails==&lt;br /&gt;
The MVC architectural pattern describes a way to structure our application and the responsibilities. The design also defines the way in which the three different components interact with each other.&lt;br /&gt;
&lt;br /&gt;
1. A controller can send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document). It can send commands to the model to update the model's state (e.g., editing a document).&lt;br /&gt;
&lt;br /&gt;
2. A model notifies its associated views and controllers when there has been a change in its state. This notification allows the views to produce updated output, and the controllers to change the available set of commands. A passive implementation of MVC omits these notifications, because the application does not require them or the software platform does not support them.&lt;br /&gt;
&lt;br /&gt;
3. A view requests from the model the information that it needs to generate an output representation&lt;br /&gt;
		&lt;br /&gt;
Under this architectural pattern, the common pitfalls to be avoided are:&lt;br /&gt;
&lt;br /&gt;
1. Fat Controllers:&lt;br /&gt;
Controller is the first place where we write code so we have to make sure that they should be as lean as possible. Fat Controllers are not recommended because business logic is enclosed in the controller and changes made are not reusable in other controllers. Also, its more difficult to port changes to other controllers, etc. when changes have to be made. &lt;br /&gt;
2. Fat views:&lt;br /&gt;
Its always recommended to not have the application or model logic in the view. Views, just like the controllers have to be as lean as possible. Some common mistakes in this regard can be:&lt;br /&gt;
	1. Including &amp;quot;for loops&amp;quot; in the view&lt;br /&gt;
	2. Placing the logic for sorting the list  and so on.. &lt;br /&gt;
			&lt;br /&gt;
Essentially views are meant to serve as a structure for the display of your model data. Therefore, the view is serving its purpose if the structure it creates for the display of a specific model can be adjusted based on the data contained in the model. Conditionally displaying elements in your view based on certain properties of the model it is meant to render is an acceptable practice.&lt;br /&gt;
&lt;br /&gt;
If your view contained logic to modify the model data in any way, this would violate the separation of concerns that MVC is meant to establish.&lt;br /&gt;
Therefore, it is only recommended to have fat models in the application because the business logic changes will be easier to make and moreover the models become reusable in more than one controller and thus it is easier to unit test. Moreover, following the above conventions allow our application to easily integrate with Service Oriented Architecture.&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67291</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w50 1s</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67291"/>
		<updated>2012-10-06T18:59:22Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Importance of Design Patterns ==&lt;br /&gt;
Over the last few years, patterns have gained attention in the software community. The use of patterns has helped solve issues faced while designing and reusing applications and libraries. These patterns capture knowledge from various parts of software developing. But as the number of patterns increases, the need to organize the patterns becomes more important. There should be a strong classification scheme to organize patterns in a library and help users in finding and storing patterns.  Developing such a classification scheme involves finding useful criteria that should reflect natural properties of patterns&lt;br /&gt;
&lt;br /&gt;
== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
*Basic inheritance and interaction patterns &lt;br /&gt;
*Patterns for structuring object-oriented software systems &lt;br /&gt;
*Patterns based on recursive structures  &lt;br /&gt;
*Patterns relying on abstract coupling &lt;br /&gt;
*Patterns related to the MVC-framework&lt;br /&gt;
&lt;br /&gt;
== Zimmer ==&lt;br /&gt;
Zimmer classification provides a new classification of the GoF design pattern proposed by Gamma et all. Three kinds of relationships are defined and a pattern is categorized based on what relationship it supports.&lt;br /&gt;
*X uses Y in its solution &lt;br /&gt;
X uses a design pattern Y as part of its solution.&lt;br /&gt;
&lt;br /&gt;
*Variant of X uses Y in its solution &lt;br /&gt;
X may or may not utilize Design pattern Y as part of its solution. &lt;br /&gt;
&lt;br /&gt;
*X is similar to Y &lt;br /&gt;
X and Y address a similar kind of problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Similarities and Differences in the Classification approach ==&lt;br /&gt;
&lt;br /&gt;
In contrast to the classification by Gamma et. al, a pattern can belong to more than one category per criterion in Buschman et. al classification.&lt;br /&gt;
Zimmer uses the relationships that Gamma et. al describe in each pattern's &amp;quot;Related Patterns&amp;quot; section. These relationships address a wide range of issues from “the pattern uses another pattern in its solution&amp;quot; to “the pattern is similar to another pattern in constructing object structures&amp;quot;. Therefore there are extensive similarities in the classification scheme.&lt;br /&gt;
Coad neither stress the importance of a classification nor does he describe his organization of patterns in a thorough manner.&lt;br /&gt;
&lt;br /&gt;
== References==&lt;br /&gt;
http://www8.cs.umu.se/~jubo/ExJobbs/MK/patterns.htm &lt;br /&gt;
&lt;br /&gt;
http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch7_7f_bn&lt;br /&gt;
&lt;br /&gt;
Relationships between Design Patterns-Walter Zimmer&lt;br /&gt;
&lt;br /&gt;
http://www.vincehuston.org/dp/&lt;br /&gt;
&lt;br /&gt;
http://www.cse.msu.edu/~cse870/Materials/Patterns/Docs/orig-patterns-paper.pdf&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67290</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w50 1s</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67290"/>
		<updated>2012-10-06T18:49:17Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: /* Importance of Design Patterns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Importance of Design Patterns ==&lt;br /&gt;
Over the last few years, patterns have gained attention in the software community. The use of patterns has helped solve issues faced while designing and reusing applications and libraries. These patterns capture knowledge from various parts of software developing. But as the number of patterns increases, the need to organize the patterns becomes more important. There should be a strong classification scheme to organize patterns in a library and help users in finding and storing patterns.  Developing such a classification scheme involves finding useful criteria that should reflect natural properties of patterns&lt;br /&gt;
&lt;br /&gt;
== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
*Basic inheritance and interaction patterns &lt;br /&gt;
*Patterns for structuring object-oriented software systems &lt;br /&gt;
*Patterns based on recursive structures  &lt;br /&gt;
*Patterns relying on abstract coupling &lt;br /&gt;
*Patterns related to the MVC-framework&lt;br /&gt;
&lt;br /&gt;
== Zimmer ==&lt;br /&gt;
Zimmer classification provides a new classification of the GoF design pattern proposed by Gamma et all. Three kinds of relationships are defined and a pattern is categorized based on what relationship it supports.&lt;br /&gt;
*X uses Y in its solution &lt;br /&gt;
X uses a design pattern Y as part of its solution.&lt;br /&gt;
&lt;br /&gt;
*Variant of X uses Y in its solution &lt;br /&gt;
X may or may not utilize Design pattern Y as part of its solution. &lt;br /&gt;
&lt;br /&gt;
*X is similar to Y &lt;br /&gt;
X and Y address a similar kind of problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Similarities and Differences in the Classification approach ==&lt;br /&gt;
&lt;br /&gt;
In contrast to the classification by Gamma et. al, a pattern can belong to more than one category per criterion in Buschman et. al classification.&lt;br /&gt;
Zimmer uses the relationships that Gamma et. al describe in each pattern's &amp;quot;Related Patterns&amp;quot; section. These relationships address a wide range of issues from “the pattern uses another pattern in its solution&amp;quot; to “the pattern is similar to another pattern in constructing object structures&amp;quot;. Therefore there are extensive similarities in the classification scheme.&lt;br /&gt;
Coad neither stress the importance of a classification nor does he describe his organization of patterns in a thorough manner.&lt;br /&gt;
&lt;br /&gt;
== References==&lt;br /&gt;
http://www8.cs.umu.se/~jubo/ExJobbs/MK/patterns.htm &lt;br /&gt;
&lt;br /&gt;
http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch7_7f_bn&lt;br /&gt;
&lt;br /&gt;
Relationships between Design Patterns-Walter Zimmer&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67281</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w50 1s</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67281"/>
		<updated>2012-10-04T07:41:30Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: Pattern Classification and Importance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Importance of Design Patterns ==&lt;br /&gt;
Over the last few years, patterns have been gained attention in the software community. The use of patterns has helped solve issues faced while designing and reusing applications and libraries. These patterns capture knowledge from various parts of software developing. But as the number of patterns increases, the need to organize the patterns becomes more important. There should be a strong classification scheme to organize patterns in a library and help users in finding and storing patterns.  Developing such a classification scheme involves finding useful criteria that should reflect natural properties of patterns&lt;br /&gt;
&lt;br /&gt;
== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
*Basic inheritance and interaction patterns &lt;br /&gt;
*Patterns for structuring object-oriented software systems &lt;br /&gt;
*Patterns based on recursive structures  &lt;br /&gt;
*Patterns relying on abstract coupling &lt;br /&gt;
*Patterns related to the MVC-framework&lt;br /&gt;
&lt;br /&gt;
== Zimmer ==&lt;br /&gt;
Zimmer classification provides a new classification of the GoF design pattern proposed by Gamma et all. Three kinds of relationships are defined and a pattern is categorized based on what relationship it supports.&lt;br /&gt;
*X uses Y in its solution &lt;br /&gt;
X uses a design pattern Y as part of its solution.&lt;br /&gt;
&lt;br /&gt;
*Variant of X uses Y in its solution &lt;br /&gt;
X may or may not utilize Design pattern Y as part of its solution. &lt;br /&gt;
&lt;br /&gt;
*X is similar to Y &lt;br /&gt;
X and Y address a similar kind of problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Similarities and Differences in the Classification approach ==&lt;br /&gt;
&lt;br /&gt;
In contrast to the classification by Gamma et. al, a pattern can belong to more than one category per criterion in Buschman et. al classification.&lt;br /&gt;
Zimmer uses the relationships that Gamma et. al describe in each pattern's &amp;quot;Related Patterns&amp;quot; section. These relationships address a wide range of issues from “the pattern uses another pattern in its solution&amp;quot; to “the pattern is similar to another pattern in constructing object structures&amp;quot;. Therefore there are extensive similarities in the classification scheme.&lt;br /&gt;
Coad neither stress the importance of a classification nor does he describe his organization of patterns in a thorough manner.&lt;br /&gt;
&lt;br /&gt;
== References==&lt;br /&gt;
http://www8.cs.umu.se/~jubo/ExJobbs/MK/patterns.htm &lt;br /&gt;
&lt;br /&gt;
http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch7_7f_bn&lt;br /&gt;
&lt;br /&gt;
Relationships between Design Patterns-Walter Zimmer&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67280</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w50 1s</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67280"/>
		<updated>2012-10-04T07:40:37Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: Pattern Classification and importance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Importance of Design Patterns ==&lt;br /&gt;
Over the last few years, patterns have been gained attention in the software community. The use of patterns has helped solve issues faced while designing and reusing applications and libraries. These patterns capture knowledge from various parts of software developing. But as the number of patterns increases, the need to organize the patterns becomes more important. There should be a strong classification scheme to organize patterns in a library and help users in finding and storing patterns.  Developing such a classification scheme involves finding useful criteria that should reflect natural properties of patterns&lt;br /&gt;
&lt;br /&gt;
== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
*Basic inheritance and interaction patterns &lt;br /&gt;
*Patterns for structuring object-oriented software systems &lt;br /&gt;
*Patterns based on recursive structures  &lt;br /&gt;
*Patterns relying on abstract coupling &lt;br /&gt;
*Patterns related to the MVC-framework&lt;br /&gt;
&lt;br /&gt;
== Zimmer ==&lt;br /&gt;
Zimmer classification provides a new classification of the GoF design pattern proposed by Gamma et all. Three kinds of relationships are defined and a pattern is categorized based on what relationship it supports.&lt;br /&gt;
*X uses Y in its solution &lt;br /&gt;
X uses a design pattern Y as part of its solution.&lt;br /&gt;
&lt;br /&gt;
*Variant of X uses Y in its solution &lt;br /&gt;
X may or may not utilize Design pattern Y as part of its solution. &lt;br /&gt;
&lt;br /&gt;
*X is similar to Y &lt;br /&gt;
X and Y address a similar kind of problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Similarities and Differences in the Classification approach ==&lt;br /&gt;
&lt;br /&gt;
In contrast to the classification by Gamma et. al, a pattern can belong to more than one category per criterion in Buschman et. al classification.&lt;br /&gt;
Zimmer uses the relationships that Gamma et. al describe in each pattern's &amp;quot;Related Patterns&amp;quot; section. These relationships address a wide range of issues from “the pattern uses another pattern in its solution&amp;quot; to “the pattern is similar to another pattern in constructing object structures&amp;quot;. Therefore there are extensive similarities in the classification scheme.&lt;br /&gt;
Coad neither stress the importance of a classification nor does he describe his organization of patterns in a thorough manner.&lt;br /&gt;
&lt;br /&gt;
== References==&lt;br /&gt;
http://www8.cs.umu.se/~jubo/ExJobbs/MK/patterns.htm&lt;br /&gt;
http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch7_7f_bn&lt;br /&gt;
Relationships between Design Patterns-Walter Zimmer&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67275</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w50 1s</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67275"/>
		<updated>2012-10-04T03:51:41Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Importance of Design Patterns ==&lt;br /&gt;
Over the last few years, patterns have been gained attention in the software community. The use of patterns has helped solve issues faced while designing and reusing applications and libraries. These patterns capture knowledge from various parts of software developing. But as the number of patterns increases, the need to organize the patterns becomes more important. There should be a strong classification scheme to organize patterns in a library and help users in finding and storing patterns.  Developing such a classification scheme involves finding useful criteria that should reflect natural properties of patterns&lt;br /&gt;
&lt;br /&gt;
== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
*Basic inheritance and interaction patterns &lt;br /&gt;
*Patterns for structuring object-oriented software systems &lt;br /&gt;
*Patterns based on recursive structures  &lt;br /&gt;
*Patterns relying on abstract coupling &lt;br /&gt;
*Patterns related to the MVC-framework&lt;br /&gt;
&lt;br /&gt;
== Zimmer ==&lt;br /&gt;
Zimmer classification provides a new classification of the GoF design pattern proposed by Gamma et all. Three kinds of relationships are defined and a pattern is categorized based on what relationship it supports.&lt;br /&gt;
*X uses Y in its solution &lt;br /&gt;
X uses a design pattern Y as part of its solution.&lt;br /&gt;
&lt;br /&gt;
*Variant of X uses Y in its solution &lt;br /&gt;
X may or may not utilize Design pattern Y as part of its solution. &lt;br /&gt;
&lt;br /&gt;
*X is similar to Y &lt;br /&gt;
X and Y address a similar kind of problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Similarities and Differences in the Classification approach ==&lt;br /&gt;
&lt;br /&gt;
In contrast to the classification by Gamma et. al, a pattern can belong to more than one category per criterion in Buschman et. al classification.&lt;br /&gt;
Zimmer uses the relationships that Gamma et. al describe in each pattern's &amp;quot;Related Patterns&amp;quot; section. These relationships address a wide range of issues from “the pattern uses another pattern in its solution&amp;quot; to “the pattern is similar to another pattern in constructing object structures&amp;quot;. Therefore there are extensive similarities in the classification scheme.&lt;br /&gt;
Coad neither stress the importance of a classification nor does he describe his organization of patterns in a thorough manner.&lt;br /&gt;
&lt;br /&gt;
== References==&lt;br /&gt;
http://www8.cs.umu.se/~jubo/ExJobbs/MK/patterns.htm&lt;br /&gt;
&lt;br /&gt;
Relationships between Design Patterns-Walter Zimmer&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67274</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w50 1s</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67274"/>
		<updated>2012-10-04T03:51:18Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Importance of Design Patterns ==&lt;br /&gt;
Over the last few years, patterns have been gained attention in the software community. The use of patterns has helped solve issues faced while designing and reusing applications and libraries. These patterns capture knowledge from various parts of software developing. But as the number of patterns increases, the need to organize the patterns becomes more important. There should be a strong classification scheme to organize patterns in a library and help users in finding and storing patterns.  Developing such a classification scheme involves finding useful criteria that should reflect natural properties of patterns&lt;br /&gt;
&lt;br /&gt;
== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
*Basic inheritance and interaction patterns &lt;br /&gt;
*Patterns for structuring object-oriented software systems &lt;br /&gt;
*Patterns based on recursive structures  &lt;br /&gt;
*Patterns relying on abstract coupling &lt;br /&gt;
*Patterns related to the MVC-framework&lt;br /&gt;
&lt;br /&gt;
== Zimmer ==&lt;br /&gt;
Zimmer classification provides a new classification of the GoF design pattern proposed by Gamma et all. Three kinds of relationships are defined and a pattern is categorized based on what relationship it supports.&lt;br /&gt;
*X uses Y in its solution &lt;br /&gt;
X uses a design pattern Y as part of its solution.&lt;br /&gt;
&lt;br /&gt;
*Variant of X uses Y in its solution &lt;br /&gt;
X may or may not utilize Design pattern Y as part of its solution. &lt;br /&gt;
&lt;br /&gt;
*X is similar to Y &lt;br /&gt;
X and Y address a similar kind of problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Similarities and Differences in the Classification approach ==&lt;br /&gt;
&lt;br /&gt;
In contrast to the classification by Gamma et. al, a pattern can belong to more than one category per criterion in Buschman et. al classification.&lt;br /&gt;
Zimmer uses the relationships that Gamma et. al describe in each pattern's &amp;quot;Related Patterns&amp;quot; section. These relationships address a wide range of issues from “the pattern uses another pattern in its solution&amp;quot; to “the pattern is similar to another pattern in constructing object structures&amp;quot;. Therefore there are extensive similarities in the classification scheme.&lt;br /&gt;
Coad neither stress the importance of a classification nor does he describe his organization of patterns in a thorough manner.&lt;br /&gt;
&lt;br /&gt;
== References==&lt;br /&gt;
http://www8.cs.umu.se/~jubo/ExJobbs/MK/patterns.htm&lt;br /&gt;
&lt;br /&gt;
{{Relationships between Design Patterns-Walter Zimmer}}&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67273</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w50 1s</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w50_1s&amp;diff=67273"/>
		<updated>2012-10-04T03:50:44Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: Created page with &amp;quot;== Importance of Design Patterns == Over the last few years, patterns have been gained attention in the software community. The use of patterns has helped solve issues faced whil...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Importance of Design Patterns ==&lt;br /&gt;
Over the last few years, patterns have been gained attention in the software community. The use of patterns has helped solve issues faced while designing and reusing applications and libraries. These patterns capture knowledge from various parts of software developing. But as the number of patterns increases, the need to organize the patterns becomes more important. There should be a strong classification scheme to organize patterns in a library and help users in finding and storing patterns.  Developing such a classification scheme involves finding useful criteria that should reflect natural properties of patterns&lt;br /&gt;
&lt;br /&gt;
== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
*Basic inheritance and interaction patterns &lt;br /&gt;
*Patterns for structuring object-oriented software systems &lt;br /&gt;
*Patterns based on recursive structures  &lt;br /&gt;
*Patterns relying on abstract coupling &lt;br /&gt;
*Patterns related to the MVC-framework&lt;br /&gt;
&lt;br /&gt;
== Zimmer ==&lt;br /&gt;
Zimmer classification provides a new classification of the GoF design pattern proposed by Gamma et all. Three kinds of relationships are defined and a pattern is categorized based on what relationship it supports.&lt;br /&gt;
*X uses Y in its solution &lt;br /&gt;
X uses a design pattern Y as part of its solution.&lt;br /&gt;
&lt;br /&gt;
*Variant of X uses Y in its solution &lt;br /&gt;
X may or may not utilize Design pattern Y as part of its solution. &lt;br /&gt;
&lt;br /&gt;
*X is similar to Y &lt;br /&gt;
X and Y address a similar kind of problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Similarities and Differences in the Classification approach ==&lt;br /&gt;
&lt;br /&gt;
In contrast to the classification by Gamma et. al, a pattern can belong to more than one category per criterion in Buschman et. al classification.&lt;br /&gt;
Zimmer uses the relationships that Gamma et. al describe in each pattern's &amp;quot;Related Patterns&amp;quot; section. These relationships address a wide range of issues from “the pattern uses another pattern in its solution&amp;quot; to “the pattern is similar to another pattern in constructing object structures&amp;quot;. Therefore there are extensive similarities in the classification scheme.&lt;br /&gt;
Coad neither stress the importance of a classification nor does he describe his organization of patterns in a thorough manner.&lt;br /&gt;
&lt;br /&gt;
== References==&lt;br /&gt;
{http://www8.cs.umu.se/~jubo/ExJobbs/MK/patterns.htm}&lt;br /&gt;
&lt;br /&gt;
{{Relationships between Design Patterns-Walter Zimmer}}&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67271</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67271"/>
		<updated>2012-10-04T03:43:08Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Importance of Design Patterns ==&lt;br /&gt;
Over the last few years, patterns have been gained attention in the software community. The use of patterns has helped solve issues faced while designing and reusing applications and libraries. These patterns capture knowledge from various parts of software developing. But as the number of patterns increases, the need to organize the patterns becomes more important. There should be a strong classification scheme to organize patterns in a library and help users in finding and storing patterns.  Developing such a classification scheme involves finding useful criteria that should reflect natural properties of patterns&lt;br /&gt;
&lt;br /&gt;
== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
*Basic inheritance and interaction patterns &lt;br /&gt;
*Patterns for structuring object-oriented software systems &lt;br /&gt;
*Patterns based on recursive structures  &lt;br /&gt;
*Patterns relying on abstract coupling &lt;br /&gt;
*Patterns related to the MVC-framework&lt;br /&gt;
&lt;br /&gt;
== Zimmer ==&lt;br /&gt;
Zimmer classification provides a new classification of the GoF design pattern proposed by Gamma et all. Three kinds of relationships are defined and a pattern is categorized based on what relationship it supports.&lt;br /&gt;
*X uses Y in its solution &lt;br /&gt;
X uses a design pattern Y as part of its solution.&lt;br /&gt;
&lt;br /&gt;
*Variant of X uses Y in its solution &lt;br /&gt;
X may or may not utilize Design pattern Y as part of its solution. &lt;br /&gt;
&lt;br /&gt;
*X is similar to Y &lt;br /&gt;
X and Y address a similar kind of problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Similarities and Differences in the Classification approach ==&lt;br /&gt;
&lt;br /&gt;
In contrast to the classification by Gamma et. al, a pattern can belong to more than one category per criterion in Buschman et. al classification.&lt;br /&gt;
Zimmer uses the relationships that Gamma et. al describe in each pattern's &amp;quot;Related Patterns&amp;quot; section. These relationships address a wide range of issues from “the pattern uses another pattern in its solution&amp;quot; to “the pattern is similar to another pattern in constructing object structures&amp;quot;. Therefore there are extensive similarities in the classification scheme.&lt;br /&gt;
Coad neither stress the importance of a classification nor does he describe his organization of patterns in a thorough manner.&lt;br /&gt;
&lt;br /&gt;
== References==&lt;br /&gt;
{{http://www8.cs.umu.se/~jubo/ExJobbs/MK/patterns.htm}}&lt;br /&gt;
&lt;br /&gt;
{{Relationships between Design Patterns-Walter Zimmer}}&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67270</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67270"/>
		<updated>2012-10-04T03:37:35Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Importance of Design Patterns ==&lt;br /&gt;
Over the last few years, patterns have been gained attention in the software community. The use of patterns has helped solve issues faced while designing and reusing applications and libraries. These patterns capture knowledge from various parts of software developing. But as the number of patterns increases, the need to organize the patterns becomes more important. There should be a strong classification scheme to organize patterns in a library and help users in finding and storing patterns.  Developing such a classification scheme involves finding useful criteria that should reflect natural properties of patterns&lt;br /&gt;
&lt;br /&gt;
== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
*Basic inheritance and interaction patterns &lt;br /&gt;
*Patterns for structuring object-oriented software systems &lt;br /&gt;
*Patterns based on recursive structures  &lt;br /&gt;
*Patterns relying on abstract coupling &lt;br /&gt;
*Patterns related to the MVC-framework&lt;br /&gt;
&lt;br /&gt;
== Zimmer ==&lt;br /&gt;
Zimmer classification provides a new classification of the GoF design pattern proposed by Gamma et all. Three kinds of relationships are defined and a pattern is categorized based on what relationship it supports.&lt;br /&gt;
*X uses Y in its solution &lt;br /&gt;
X uses a design pattern Y as part of its solution.&lt;br /&gt;
&lt;br /&gt;
*Variant of X uses Y in its solution &lt;br /&gt;
X may or may not utilize Design pattern Y as part of its solution. &lt;br /&gt;
&lt;br /&gt;
*X is similar to Y &lt;br /&gt;
X and Y address a similar kind of problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Similarities and Differences in the Classification approach ==&lt;br /&gt;
&lt;br /&gt;
In contrast to the classification by Gamma et. al, a pattern can belong to more than one category per criterion in Buschman et. al classification.&lt;br /&gt;
Zimmer uses the relationships that Gamma et. al describe in each pattern's &amp;quot;Related Patterns&amp;quot; section. These relationships address a wide range of issues from “the pattern uses another pattern in its solution&amp;quot; to “the pattern is similar to another pattern in constructing object structures&amp;quot;. Therefore there are extensive similarities in the classification scheme.&lt;br /&gt;
Coad neither stress the importance of a classification nor does he describe his organization of patterns in a thorough manner.&lt;br /&gt;
&lt;br /&gt;
== References==&lt;br /&gt;
{{http://www8.cs.umu.se/~jubo/ExJobbs/MK/patterns.htm}}&lt;br /&gt;
{{Relationships between Design Patterns-Walter Zimmer}}&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67268</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67268"/>
		<updated>2012-10-04T03:25:29Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Importance of Design Patterns ==&lt;br /&gt;
Over the last few years, patterns have been gained attention in the software community. The use of patterns has helped solve issues faced while designing and reusing applications and libraries. These patterns capture knowledge from various parts of software developing. But as the number of patterns increases, the need to organize the patterns becomes more important. There should be a strong classification scheme to organize patterns in a library and help users in finding and storing patterns.  Developing such a classification scheme involves finding useful criteria that should reflect natural properties of patterns&lt;br /&gt;
&lt;br /&gt;
== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
*Basic inheritance and interaction patterns &lt;br /&gt;
*Patterns for structuring object-oriented software systems &lt;br /&gt;
*Patterns based on recursive structures  &lt;br /&gt;
*Patterns relying on abstract coupling &lt;br /&gt;
*Patterns related to the MVC-framework&lt;br /&gt;
&lt;br /&gt;
== Zimmer ==&lt;br /&gt;
Zimmer classification provides a new classification of the GoF design pattern proposed by Gamma et all. Three kinds of relationships are defined and a pattern is categorized based on what relationship it supports.&lt;br /&gt;
*X uses Y in its solution &lt;br /&gt;
X uses a design pattern Y as part of its solution.&lt;br /&gt;
&lt;br /&gt;
*Variant of X uses Y in its solution &lt;br /&gt;
X may or may not utilize Design pattern Y as part of its solution. &lt;br /&gt;
&lt;br /&gt;
*X is similar to Y &lt;br /&gt;
X and Y address a similar kind of problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Similarities and Differences in the Classification approach ==&lt;br /&gt;
&lt;br /&gt;
In contrast to the classification by Gamma et. al, a pattern can belong to more than one category per criterion in Buschman et. al classification.&lt;br /&gt;
Zimmer uses the relationships that Gamma et. al describe in each pattern's &amp;quot;Related Patterns&amp;quot; section. These relationships address a wide range of issues from “the pattern uses another pattern in its solution&amp;quot; to “the pattern is similar to another pattern in constructing object structures&amp;quot;. Therefore there are extensive similarities in the classification scheme.&lt;br /&gt;
Coad neither stress the importance of a classification nor does he describe his organization of patterns in a thorough manner.&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67262</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67262"/>
		<updated>2012-10-04T03:03:30Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
*Basic inheritance and interaction patterns &lt;br /&gt;
*Patterns for structuring object-oriented software systems &lt;br /&gt;
*Patterns based on recursive structures  &lt;br /&gt;
*Patterns relying on abstract coupling &lt;br /&gt;
*Patterns related to the MVC-framework&lt;br /&gt;
&lt;br /&gt;
== Zimmer ==&lt;br /&gt;
Zimmer classification provides a new classification of the GoF design pattern proposed by Gamma et all. Three kinds of relationships are defined and a pattern is categorized based on what relationship it supports.&lt;br /&gt;
*X uses Y in its solution &lt;br /&gt;
X uses a design pattern Y as part of its solution.&lt;br /&gt;
&lt;br /&gt;
*Variant of X uses Y in its solution &lt;br /&gt;
X may or may not utilize Design pattern Y as part of its solution. &lt;br /&gt;
&lt;br /&gt;
*X is similar to Y &lt;br /&gt;
X and Y address a similar kind of problem.&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67225</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67225"/>
		<updated>2012-10-04T02:43:20Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pree ==&lt;br /&gt;
Pree classification is based on the structure of the design pattern. &lt;br /&gt;
&lt;br /&gt;
'''basic inheritance and interaction patterns '''&lt;br /&gt;
'''patterns for structuring object-oriented software systems''' &lt;br /&gt;
'''patterns based on recursive structures''' &lt;br /&gt;
'''patterns relying on abstract coupling'''&lt;br /&gt;
'''patterns related to the MVC-framework'''&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67202</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67202"/>
		<updated>2012-10-04T02:35:03Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Buschman et al == &lt;br /&gt;
According to Buschman, classification is based on three criteria.&lt;br /&gt;
The functionality criteria classifies patterns based on the specific functionality that the design pattern will be used for. &lt;br /&gt;
The structural principles classifies patterns based on the architectural patterns that the design pattern is utilizing. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle&lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Patterns which belong to the sub category ''creation'' specify the manner in which to instantiate certain complex recursive or aggregate object structures. Patterns belonging to the subcategory ''communication'' describes the communication protocol to be followed during the remote or independent development of certain collaborating objects. Patterns of the ''access'' category will describe the scope of a particular object. Patterns belonging to the category organizing the ''computation of complex tasks'' specify the way in which responsibility can be allocated among collaborating objects.&lt;br /&gt;
&lt;br /&gt;
Patterns belonging to the subcategory ''abstraction'' gives an abstract overview of functionality in a software system. Patterns belonging to the subcategory ''encapsulation'' hide details of objects to eradicate dependencies.Patterns in the subcategory ''separation of concern''  segregates specific responsibilities into different objects or components to solve a particular task or provide a certain service. Patterns belonging to the category ''coupling and cohesion'' will ease out the structural and communicational dependencies between strongly coupled objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Coad ==&lt;br /&gt;
Coad organizes his pattern classification around a certain pattern which will further serve as a template for other patterns that follow.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Pattern !! Description&lt;br /&gt;
|-&lt;br /&gt;
| fundamental pattern  || template for other patterns&lt;br /&gt;
|-&lt;br /&gt;
| aggregate patterns || patterns that interact with transaction players&lt;br /&gt;
|-&lt;br /&gt;
| plan patterns || patterns that interact with a plan player&lt;br /&gt;
|-&lt;br /&gt;
| interaction patterns  || Patterns which interact with the other players&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67101</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67101"/>
		<updated>2012-10-04T01:42:45Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Buschman == &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle &lt;br /&gt;
|-&lt;br /&gt;
| Creation || Abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || Encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || Separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || Coupling and cohesion&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67088</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67088"/>
		<updated>2012-10-04T01:37:23Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
--[[User:Sbkottan|Sbkottan]] 21:30, 3 October 2012 (EDT)&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;[[Media:Example.ogg]]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hello || &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle &lt;br /&gt;
|-&lt;br /&gt;
| Creation || abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || coupling and cohesion&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67087</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67087"/>
		<updated>2012-10-04T01:37:03Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
--[[User:Sbkottan|Sbkottan]] 21:30, 3 October 2012 (EDT)&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;[[Media:Example.ogg]]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hello || &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle &lt;br /&gt;
|-&lt;br /&gt;
| Creation ||  || abstraction   &lt;br /&gt;
|-&lt;br /&gt;
| Communication || encapsulation&lt;br /&gt;
|-&lt;br /&gt;
| Access || separation of concerns  &lt;br /&gt;
|-&lt;br /&gt;
| Computation of complex tasks || coupling and cohesion&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67075</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67075"/>
		<updated>2012-10-04T01:30:52Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
----&lt;br /&gt;
--[[User:Sbkottan|Sbkottan]] 21:30, 3 October 2012 (EDT)&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;[[Media:Example.ogg]]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hello || &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle !! Granularity&lt;br /&gt;
|-&lt;br /&gt;
| creation ||  || access || computation of complex tasks&lt;br /&gt;
|-&lt;br /&gt;
| communication || Example || Example&lt;br /&gt;
|-&lt;br /&gt;
| access || Example || Example&lt;br /&gt;
|-&lt;br /&gt;
| computation of complex tasks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
•	creation &lt;br /&gt;
•	communication &lt;br /&gt;
•	access &lt;br /&gt;
•	organizing the computation of complex tasks&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67071</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67071"/>
		<updated>2012-10-04T01:29:32Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
----&lt;br /&gt;
--[[User:Sbkottan|Sbkottan]] 21:29, 3 October 2012 (EDT)&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;[[Media:Example.ogg]]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hello || &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Functionality !! Structural Principle !! Granularity&lt;br /&gt;
|-&lt;br /&gt;
| creation || communication || access || computation of complex tasks&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example || Example&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example || Example&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
•	creation &lt;br /&gt;
•	communication &lt;br /&gt;
•	access &lt;br /&gt;
•	organizing the computation of complex tasks&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67062</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67062"/>
		<updated>2012-10-04T01:26:05Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
----&lt;br /&gt;
--[[User:Sbkottan|Sbkottan]] 21:26, 3 October 2012 (EDT)&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;[[Media:Example.ogg]]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hello || &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Header text !! Header text !! Header text&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example || Example&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example || Example&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example || Example&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67055</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=67055"/>
		<updated>2012-10-04T01:24:11Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
----&lt;br /&gt;
--[[User:Sbkottan|Sbkottan]] 21:24, 3 October 2012 (EDT)&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;[[Media:Example.ogg]]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hello || yes&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=66802</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=66802"/>
		<updated>2012-10-04T00:05:29Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=66799</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=66799"/>
		<updated>2012-10-04T00:04:41Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== weer ==&lt;br /&gt;
== qww ==&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=66797</id>
		<title>1w50</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=1w50&amp;diff=66797"/>
		<updated>2012-10-04T00:04:24Z</updated>

		<summary type="html">&lt;p&gt;Sbkottan: Created page with &amp;quot;== weer ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== weer ==&lt;/div&gt;</summary>
		<author><name>Sbkottan</name></author>
	</entry>
</feed>