<?xml version="1.0" encoding="UTF-8"?><rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Software Engineering Archives - Francesco Lelli</title> <atom:link href="https://francescolelli.info/category/software-engineering/feed/" rel="self" type="application/rss+xml" /><link>https://francescolelli.info/category/software-engineering/</link> <description>Information Management, Computer Science,  Economics, Finance and more</description> <lastBuildDate>Fri, 07 Jun 2024 14:56:22 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod> hourly </sy:updatePeriod> <sy:updateFrequency> 1 </sy:updateFrequency> <generator>https://wordpress.org/?v=6.8.5</generator><image> <url>https://francescolelli.info/wp-content/uploads/2018/11/cropped-InstrumentElement-32x32.jpg</url><title>Software Engineering Archives - Francesco Lelli</title><link>https://francescolelli.info/category/software-engineering/</link> <width>32</width> <height>32</height> </image> <site
xmlns="com-wordpress:feed-additions:1">156264324</site> <item><title>Phd or Postdoc in Switzerland for International Students: On Swiss Government Excellence Scholarships</title><link>https://francescolelli.info/job/phd-or-postdoc-in-switzerland-for-international-students-on-swiss-government-excellence-scholarships/</link> <comments>https://francescolelli.info/job/phd-or-postdoc-in-switzerland-for-international-students-on-swiss-government-excellence-scholarships/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Fri, 07 Jun 2024 14:56:14 +0000</pubDate> <category><![CDATA[Big Data]]></category> <category><![CDATA[Cloud Computing]]></category> <category><![CDATA[Internet of Things]]></category> <category><![CDATA[Job]]></category> <category><![CDATA[Job/Fellowship]]></category> <category><![CDATA[Machine Learning]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Research]]></category> <category><![CDATA[Software Engineering]]></category> <category><![CDATA[Digital Decision Making]]></category> <category><![CDATA[Distributed Systems]]></category> <category><![CDATA[fellowship]]></category> <category><![CDATA[Human Behaviour Informatics]]></category> <category><![CDATA[internet of things]]></category> <category><![CDATA[IoT]]></category> <category><![CDATA[PhD]]></category> <category><![CDATA[Post-Doc]]></category> <category><![CDATA[Service Oriented Architecture]]></category> <category><![CDATA[Swiss]]></category> <category><![CDATA[Switzerland]]></category> <category><![CDATA[Virtual Reality]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=2564</guid><description><![CDATA[<p>Do you have a fresh master or PhD and are you considering Phd or Postdoc in Switzerland? The Swiss Government Excellence Scholarship offers young researchers from around the world who have completed a master’s degree or PhD the opportunity to start or continue their research careers in Switzerland. The scholarship supports research endeavors for a [&#8230;]</p><p>The post <a
href="https://francescolelli.info/job/phd-or-postdoc-in-switzerland-for-international-students-on-swiss-government-excellence-scholarships/">Phd or Postdoc in Switzerland for International Students: On Swiss Government Excellence Scholarships</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>Do you have a fresh master or PhD and are you considering Phd or Postdoc in Switzerland? The Swiss Government Excellence Scholarship offers young researchers from around the world who have completed a master’s degree or PhD the opportunity to start or continue their research careers in Switzerland. The scholarship supports research endeavors for a period of one year, or up to three years for those pursuing PhD studies. The video below introduce the scholarship program:</p><figure
class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="What are Swiss Government Excellence Scholarships?" width="800" height="450" src="https://www.youtube.com/embed/6JMVJRf3rCw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>In short, three different fellowships are available:</p><ol
class="wp-block-list"><li><strong>Research Fellowship</strong>: For individuals without a PhD who are considering pursuing research studies.</li><li><strong>PhD Scholarship</strong>: For those who wish to pursue a PhD in Switzerland for a period of 3+ years.</li><li><strong>Post-Doc Scholarship</strong>: For individuals with a PhD who are looking to spend one year in Switzerland conducting postdoctoral research.</li></ol><p>Please note that all fellowships are intended for individuals who have not previously spent time in Switzerland. Consequently, if you are awarded one of these fellowships, you will be ineligible to apply for the others in the future as you technicaly already have a Phd or Postdoc in Switzerland.</p><figure
class="wp-block-image size-full"><img
fetchpriority="high" decoding="async" width="1024" height="1024" data-attachment-id="2567" data-permalink="https://francescolelli.info/job/phd-or-postdoc-in-switzerland-for-international-students-on-swiss-government-excellence-scholarships/attachment/phd-postdoc-switzerland-international-students-swiss-government-excellence-scholarships/" data-orig-file="https://francescolelli.info/wp-content/uploads/2024/06/Phd-Postdoc-Switzerland-International-Students-Swiss-Government-Excellence-Scholarships.jpeg" data-orig-size="1024,1024" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Phd-Postdoc-Switzerland-International-Students-Swiss-Government-Excellence-Scholarships" data-image-description="" data-image-caption="&lt;p&gt;Phd or Postdoc in Switzerland for International Students: On Swiss Government Excellence Scholarships&lt;/p&gt;
" data-medium-file="https://francescolelli.info/wp-content/uploads/2024/06/Phd-Postdoc-Switzerland-International-Students-Swiss-Government-Excellence-Scholarships-300x300.jpeg" data-large-file="https://francescolelli.info/wp-content/uploads/2024/06/Phd-Postdoc-Switzerland-International-Students-Swiss-Government-Excellence-Scholarships.jpeg" src="https://francescolelli.info/wp-content/uploads/2024/06/Phd-Postdoc-Switzerland-International-Students-Swiss-Government-Excellence-Scholarships.jpeg?8011c3&amp;8011c3" alt="" class="wp-image-2567" srcset="https://francescolelli.info/wp-content/uploads/2024/06/Phd-Postdoc-Switzerland-International-Students-Swiss-Government-Excellence-Scholarships.jpeg 1024w, https://francescolelli.info/wp-content/uploads/2024/06/Phd-Postdoc-Switzerland-International-Students-Swiss-Government-Excellence-Scholarships-300x300.jpeg 300w, https://francescolelli.info/wp-content/uploads/2024/06/Phd-Postdoc-Switzerland-International-Students-Swiss-Government-Excellence-Scholarships-150x150.jpeg 150w, https://francescolelli.info/wp-content/uploads/2024/06/Phd-Postdoc-Switzerland-International-Students-Swiss-Government-Excellence-Scholarships-768x768.jpeg 768w, https://francescolelli.info/wp-content/uploads/2024/06/Phd-Postdoc-Switzerland-International-Students-Swiss-Government-Excellence-Scholarships-600x600.jpeg 600w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><p>Let&#8217;s see each one of them in dettail:</p><h2 class="wp-block-heading">Research Fellowship</h2><p>Research Fellowships are 12-month programs aimed at highly qualified postgraduate researchers from all academic disciplines. Applicants must have obtained a master&#8217;s degree or equivalent by July 31, 2024, except for ETH Zurich applicants, who must meet this requirement by June 30, 2024. Candidates should be born after December 31, 1988. The application requires a support letter from an academic host professor at a Swiss university, including a brief CV (maximum 2 pages), explaining their willingness to supervise and support the research. This letter differs from the confidential recommendation letter also required. Additionally, applicants must submit a research proposal with a defined time frame. Notably, this fellowship is not available to those who already hold a PhD degree</p><h2 class="wp-block-heading">PhD Scholarship</h2><p>PhD Scholarships are designed for highly qualified PhD students from all academic disciplines, offering funding for 12 to 36 months, extendable in three 12-month increments based on academic progress. Applicants must have obtained a master&#8217;s degree or equivalent by July 31, 2024, except for ETH Zurich applicants, who must meet this requirement by June 30, 2024. Eligible candidates should be born after December 31, 1988. The application requires a support letter from an academic host professor at a Swiss university, including a brief CV (maximum 2 pages), detailing their commitment to supervise and support the PhD throughout its duration. If an assistant professor supports the application, a full professor must co-sign the letter. This support letter is distinct from the confidential recommendation letter also required. For PhD studies at a University of Applied Sciences, an additional support letter from a faculty member of the host research university is mandatory. The doctoral degree must be awarded by a research university. A detailed research proposal with a defined time frame is the centerpiece of the application and requires thorough attention.</p><h2 class="wp-block-heading">Post-Doc Scholarship</h2><p>Postdoctoral Scholarships are 12-month programs aimed at highly qualified early career scientists from all scientific fields. Eligible candidates must have completed their PhD between December 31, 2020, and July 31, 2024 (June 30, 2024, for ETH Zurich), and primarily for those who have not previously studied in Switzerland. The program does not fund sabbaticals. Applicants need a support letter from an academic host professor at a Swiss university, including a brief CV (maximum 2 pages), explaining their willingness to supervise the research. Former PhD mentors and co-directors for co-tutelle PhDs cannot be supervisors. A detailed research proposal with a timeframe is the centerpiece of the application. This scholarship is exclusively for full-time postdoctoral research in Switzerland, prohibiting fieldwork outside the country, and recipients are expected to reside in Switzerland during the grant period. For double doctorates, the date of the first degree is considered. The scholarship is not valid for mixed research conducted partly in Switzerland and partly in another country.</p><h2 class="wp-block-heading">Where to find more Information</h2><p>The official link of the scholarship contains all the relevant information and is the &#8220;GO TO&#8221; resources:</p><ul
class="wp-block-list"><li><a
href="https://www.sbfi.admin.ch/sbfi/en/home/education/scholarships-and-grants/swiss-government-excellence-scholarships.html">https://www.sbfi.admin.ch/sbfi/en/home/education/scholarships-and-grants/swiss-government-excellence-scholarships.html</a></li></ul><p>Additionally, each country has specific information and details regarding the application procedure, which can be found at the following link.</p><ul
class="wp-block-list"><li><a
href="https://www.sbfi.admin.ch/dam/sbfi/en/dokumente/2022/07/all-countries.pdf.download.pdf/2023_ESKAS_all_country_contacts_A_to_Z_for_application_documents.pdf">https://www.sbfi.admin.ch/dam/sbfi/en/dokumente/2022/07/all-countries.pdf.download.pdf/2023_ESKAS_all_country_contacts_A_to_Z_for_application_documents.pdf</a></li></ul><p>I recommend relying on the official information provided at the link above. The program itself warns about potential scams, and while there are numerous YouTube videos on the topic, some are generated by ChatGPT and others are, for lack of a better word, &#8220;dubious.&#8221; Here, I share videos from two YouTubers who, in my opinion, offer a reliable overview of the program. From Jama, part 1:</p><figure
class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="SWISS GOVERNMENT EXCELLENCE SCHOLARSHIP review" width="800" height="450" src="https://www.youtube.com/embed/JlByFGkUZQg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>And part 2:</p><figure
class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="SWISS GOVERNMENT EXCELLENCE SCHOLARSHIP // Part 2 // PhD in SWITZERLAND // Research in Switzerland" width="800" height="450" src="https://www.youtube.com/embed/OGQfTYZydfU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>As well as from Aatiya:</p><figure
class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="Apply NOW for Swiss Government Excellence Scholarships !" width="800" height="450" src="https://www.youtube.com/embed/YihRni8xb5I?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><h2 class="wp-block-heading">My personal suggestions:</h2><p>If you are interested in applying for a Phd or Postdoc in Switzerland, here are my personal suggestions:</p><ol
class="wp-block-list"><li><strong>Start Early (Paperwork)</strong>: The application process is deliberately complex to filter out unmotivated candidates. The responsibility for managing the paperwork falls entirely on you, so begin early to ensure you have ample time to complete everything accurately.</li><li><strong>Start Early (Connections in Switzerland)</strong>: A critical aspect of the application is obtaining a support letter from a professor in Switzerland who is willing to endorse your candidacy and confirm that your proposal aligns with their and their institution&#8217;s research. Building these connections early is essential.</li><li><strong>Start Early (Your Research Proposal)</strong>: Develop a meaningful and well-written research proposal as soon as possible. Without a solid proposal, it will be challenging to secure support from a professor. You are solely responsible for writing this proposal. Once you have a polished version formatted according to the required templates, use it as your business card when reaching out to potential professors in Switzerland. Without this document, your communication is likely to be ignored or flagged as spam.</li></ol><p>In other words, your commitment and the importance of contacting your potential supervisor as early as possible, armed with all the relevant information, cannot be overstated. This official video from the program provides additional valuable suggestions:</p><figure
class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="#003 Before contacting a supervising professor for Swiss Government Excellence Scholarship" width="800" height="450" src="https://www.youtube.com/embed/kp4NnqZ2T00?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>In addition, please note that each professor will not/cam not endorse more then one (or two) candidates per year. Therefore many of the request may simply be not answered.</p><h2 class="wp-block-heading">Can I help you further for your Phd or Postdoc in Switzerland?</h2><p>It really depends. For this specific grant you (the applicant) are really responsible for doing the heavy lifting as well as for dealing with the dettails. As for the rest, (i) if you believe that you have what it takes for this fellowship, (ii) you fulfill all the requirements, (iii) you have a nice idea to pursue and (iv) it is related to one of the following areas:</p><ol
class="wp-block-list"><li><strong>Internet of Things (IoT)</strong>: Refers to the network of interconnected devices and objects that can communicate and share data. IoT enables smart homes, industrial automation, and more.</li><li><strong>Extended Reality (XR)</strong>: Encompasses virtual reality (VR), augmented reality (AR), and mixed reality (MR). XR technologies blend digital content with the real world, enhancing user experiences.</li><li><strong>Human Behavioral Informatics</strong>: The study of human behavior using data analytics and computational methods. It involves understanding patterns, preferences, and decision-making based on digital interactions.</li><li><strong>Computer Vision</strong>: A field of artificial intelligence that focuses on enabling machines to interpret visual information from images or videos. Applications include facial recognition, object detection, and medical imaging.</li><li><strong>Language Processing</strong>: Also known as natural language processing (NLP), it involves teaching computers to understand and generate human language. NLP powers chatbots, language translation, and sentiment analysis.</li><li><strong>Security and Privacy</strong>: Addresses safeguarding data, systems, and networks from unauthorized access or breaches. It includes encryption, authentication, and privacy-preserving techniques.</li><li><strong>Big Data Processing</strong>: Deals with managing and analyzing large volumes of data. Technologies like Hadoop and Spark enable efficient processing of massive datasets.</li><li><strong>Distributed Systems</strong>: Involves designing and managing systems that run on multiple interconnected computers. Examples include cloud computing, peer-to-peer networks, and distributed databases.</li><li><strong>Serverless Computing</strong>: A cloud computing model where developers focus on writing code without managing servers. Serverless platforms automatically scale resources based on demand.</li><li><strong>Digital Decision Making</strong>: The process of using data-driven insights and algorithms to make informed choices in various domains, such as business, healthcare, and finance.</li></ol><p>You can consider dropping me a line! <a
href="https://francescolelli.info/how-to-do-a-good-thesis-the-miniseries/">Are you still finishing your thesis instead? These guides may help!</a></p><p>Good Luck!</p><p></p><p>The post <a
href="https://francescolelli.info/job/phd-or-postdoc-in-switzerland-for-international-students-on-swiss-government-excellence-scholarships/">Phd or Postdoc in Switzerland for International Students: On Swiss Government Excellence Scholarships</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/job/phd-or-postdoc-in-switzerland-for-international-students-on-swiss-government-excellence-scholarships/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">2564</post-id> </item> <item><title>Service Oriented Architecture (SOA) Design Principle: Coupling, Cohesion, and Granularity</title><link>https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/</link> <comments>https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Mon, 20 Nov 2023 17:49:02 +0000</pubDate> <category><![CDATA[Java]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Python]]></category> <category><![CDATA[Software Engineering]]></category> <category><![CDATA[API]]></category> <category><![CDATA[APIs]]></category> <category><![CDATA[Cohesion]]></category> <category><![CDATA[computer science]]></category> <category><![CDATA[Coupling]]></category> <category><![CDATA[Design Patterns]]></category> <category><![CDATA[Granularity]]></category> <category><![CDATA[Service Oriented Architecture]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[software architecture]]></category> <category><![CDATA[software engineering]]></category> <category><![CDATA[Software Patterns]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=2526</guid><description><![CDATA[<p>In the realm of Service Oriented Architecture (SOA) design principles, the concepts of Service Coupling, Service Cohesion, and Service Granularity play pivotal roles in shaping a robust and effective architectural framework. Service Coupling refers to the degree of interdependence between any two business processes. In the context of SOA, weak coupling is highly preferred as [&#8230;]</p><p>The post <a
href="https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/">Service Oriented Architecture (SOA) Design Principle: Coupling, Cohesion, and Granularity</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>In the realm of Service Oriented Architecture (SOA) design principles, the concepts of Service Coupling, Service Cohesion, and Service Granularity play pivotal roles in shaping a robust and effective architectural framework. Service Coupling refers to the degree of interdependence between any two business processes. In the context of SOA, weak coupling is highly preferred as it signifies a lower level of dependency between services, allowing for greater flexibility, scalability, and maintainability. On the other hand, Service Cohesion pertains to the degree of functional relatedness and focus of operations within a service. In SOA, strong cohesion is the desired state, emphasizing that a service should encapsulate a well-defined and closely related set of functionalities. Lastly, Service Granularity addresses the scope of functionality exposed by a service, with a preference for coarse granularity. This implies that services should provide broader, more encompassing functionalities to address the specific needs at hand, promoting reusability and minimizing the number of service invocations. Adhering to these principles ensures the creation of a service-oriented architecture that is agile, modular, and aligned with the overarching goals of the enterprise.</p><p>In short Coupling, Cohesion and Granularity are part of SOA Design Principle and they can be summarized as follows:</p><ul
class="wp-block-list"><li><strong>Service Coupling:</strong><ul
class="wp-block-list"><li><em>Definition:</em> Refers to the degree of interdependence between two business processes.</li><li><em>Preferable State:</em> Weak coupling is favored in SOA, indicating lower dependency for increased flexibility and maintainability.</li></ul></li><li><strong>Service Cohesion:</strong><ul
class="wp-block-list"><li><em>Definition:</em> Represents the degree of functional relatedness and focus of operations within a service.</li><li><em>Preferable State:</em> Strong cohesion is preferred in SOA, indicating that a service should encapsulate closely related and well-defined functionalities.</li></ul></li><li><strong>Service Granularity:</strong><ul
class="wp-block-list"><li><em>Definition:</em> Denotes the scope of functionality exposed by a service.</li><li><em>Preferable State:</em> Coarse granularity is recommended in SOA, suggesting that services should provide broad functionalities to address specific needs, promoting reusability.</li></ul></li></ul><figure
class="wp-block-image size-full"><img
decoding="async" width="867" height="1300" data-attachment-id="2528" data-permalink="https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/attachment/pexels-photo-8470810/" data-orig-file="https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810.jpeg" data-orig-size="867,1300" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;Photo by Thirdman on &lt;a href=\&quot;https:\/\/www.pexels.com\/photo\/blueprints-and-a-laptop-8470810\/\&quot; rel=\&quot;nofollow\&quot;&gt;Pexels.com&lt;\/a&gt;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;blueprints and a laptop&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="pexels-photo-8470810" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-200x300.jpeg" data-large-file="https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-683x1024.jpeg" src="https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810.jpeg?8011c3&amp;8011c3" alt="Service Oriented Architecture (SOA) Design Principle: Coupling, Cohesion, and Granularity. The blueprint of Software Architecture" class="wp-image-2528" srcset="https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810.jpeg 867w, https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-200x300.jpeg 200w, https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-683x1024.jpeg 683w, https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-768x1152.jpeg 768w, https://francescolelli.info/wp-content/uploads/2023/11/pexels-photo-8470810-600x900.jpeg 600w" sizes="(max-width: 867px) 100vw, 867px" /></figure><h2 class="wp-block-heading">Service Coupling:</h2><p>Service Coupling is a critical design principle that examines the degree of interdependence between any two business processes or services within a system. It essentially evaluates how tightly or loosely these services are connected and the implications of changes in one on the others.</p><p>Characterized by the level of dependency, tight coupling signifies a strong interconnection where modifications in one service may necessitate corresponding changes in others. Conversely, weak coupling is the preferred state in SOA design. Weak coupling implies a lower level of dependency, allowing for greater flexibility, scalability, and ease of maintenance. Services with weak coupling can evolve independently, reducing the risk of unintended consequences when modifications or updates are made.</p><p>The benefits of weak coupling extend to the adaptability of the architecture to changes in business requirements. Services that are loosely coupled are more resilient to alterations, ensuring that adjustments in one part of the system do not propagate unexpectedly to other interconnected services.</p><p>For example, a service employing standardized interfaces and protocols can interact with other services more loosely, minimizing the impact of changes in one service on others. Achieving weak coupling often involves defining clear service interfaces, minimizing direct dependencies, and utilizing standards to facilitate interoperability between services. In essence, Service Coupling is a foundational principle in SOA design that promotes a modular, adaptable, and scalable architecture.</p><h2 class="wp-block-heading">Service Cohesion:</h2><p>Service Cohesion stands as a pivotal design principle governing the internal organization and functional relatedness within an individual service. It delves into the degree to which the operations encapsulated within a service are logically connected and focused on a specific set of functionalities.</p><p>Characterized by its emphasis on functional relatedness, strong cohesion is the ideal state for services in SOA. A service exhibiting strong cohesion encapsulates a well-defined and closely related set of functionalities, ensuring that its operations are united by a common purpose. This design approach enhances the service&#8217;s clarity, maintainability, and usability, as all contained functionalities contribute to a coherent and unified business capability.</p><p>In contrast, weak cohesion suggests a service with disparate functionalities that may not be logically connected, leading to a lack of clarity and potentially hindering the service&#8217;s effectiveness. Strong cohesion, on the other hand, facilitates a service&#8217;s reusability, as the encapsulated functionalities are designed to work together seamlessly, promoting a modular and extensible architecture.</p><p>For example, a service responsible for order processing should ideally encapsulate functionalities such as order validation, payment processing, and inventory management, exhibiting strong cohesion by focusing on a cohesive set of operations related to order fulfillment.</p><p>Achieving strong cohesion often involves careful analysis of the business processes and ensuring that the functionalities grouped within a service share a common context and purpose. This principle contributes to the creation of services that are not only well-defined and purposeful but also conducive to building a scalable and adaptable SOA.</p><h2 class="wp-block-heading">Service Granularity:</h2><p>The concept of Service Granularity plays a crucial role in defining the scope of functionality exposed by a service. It is essentially a measure of how broad or specific a set of functionalities needs to be in order to address a particular business need. The degree of granularity directly impacts the reusability, flexibility, and efficiency of the services within the architecture.</p><p>In SOA, the preferable state for Service Granularity is characterized by a tendency towards coarse granularity. Coarse-grained services encapsulate broader and more encompassing functionalities, capable of addressing significant business requirements in a single service invocation. This design approach promotes simplicity, reduces the number of service interactions, and facilitates easier maintenance.</p><p>Conversely, fine-grained services expose narrower sets of functionalities, potentially requiring multiple service invocations to fulfill a specific business operation. While fine granularity may seem intuitive for certain scenarios, it can lead to increased communication overhead and complexity, making the system more susceptible to performance issues and maintenance challenges.</p><p>For example, a coarse-grained service responsible for customer management might encompass functions such as creating, updating, and deleting customer profiles, providing a comprehensive set of functionalities within a single service interface.</p><p>Achieving the right level of granularity involves careful consideration of the business context and requirements. Coarse granularity is favored as it enhances the potential for service reuse, reduces the impact of changes on service interfaces, and aligns with the overarching goal of creating a modular and scalable architecture in SOA. Striking a balance between granularity and functionality is key to building an effective and adaptable service-oriented system.</p><hr
/><p><em>Unlock the power of Service Oriented Architecture (#SOA )! Learn how #service Coupling Cohesion, and Granularity influence flexibility and #scalability in your #System . #softwaredevelopment #programming #API</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Fsoftware-engineering%2Fservice-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity%2F&#038;text=Unlock%20the%20power%20of%20Service%20Oriented%20Architecture%20%28%23SOA%20%29%21%20Learn%20how%20%23service%20Coupling%20Cohesion%2C%20and%20Granularity%20influence%20flexibility%20and%20%23scalability%20in%20your%20%23System%20.%20%23softwaredevelopment%20%23programming%20%23API&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><h2 class="wp-block-heading">Service Oriented Architecture (SOA) Design Principle and Application Programming Interfaces (APIs)</h2><p>The concepts of Service Coupling, Service Cohesion, Service Granularity, and APIs (Application Programming Interfaces) are intricately related in the context of designing and implementing a Service Oriented Architecture (SOA) or any modular and scalable system. APIs act as the external interface for services, and their design choices have a direct impact on the level of coupling, the cohesion within services, and the granularity of functionalities exposed. A well-thought-out API strategy is crucial for realizing the principles of a modular, scalable, and adaptable Service Oriented Architecture.</p><p>APIs and SOA operate at different levels of abstraction and have distinct purposes within the realm of software architecture. The distinction in their level of abstraction is rooted in their design principles, scope, and intended use. APIs are considered more low-level than SOA because they provide detailed interfaces for developers to interact with specific functionalities, while SOA operates at a higher level, focusing on the overall organization and alignment of services within a system. APIs are tools that facilitate the implementation of SOA principles at a more granular level.</p><p>This specific article focus on SOA design principles; if you want to know more on <a
href="https://francescolelli.info/programming/how-to-design-a-good-api-advanced-object-oriented-programming/">how to design a good API you can find more information here</a>.</p><p></p><p>The post <a
href="https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/">Service Oriented Architecture (SOA) Design Principle: Coupling, Cohesion, and Granularity</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/software-engineering/service-oriented-architecture-soa-design-principle-coupling-cohesion-and-granularity/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">2526</post-id> </item> <item><title>What Software Patterns (or Design Patterns) are and an introduction to the most common one</title><link>https://francescolelli.info/software-engineering/what-software-patterns-or-design-patterns-are-and-an-introduction-to-the-most-common-one/</link> <comments>https://francescolelli.info/software-engineering/what-software-patterns-or-design-patterns-are-and-an-introduction-to-the-most-common-one/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Tue, 03 Oct 2023 10:19:03 +0000</pubDate> <category><![CDATA[Java]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Python]]></category> <category><![CDATA[Software Engineering]]></category> <category><![CDATA[adapter]]></category> <category><![CDATA[Class diagram]]></category> <category><![CDATA[computer science]]></category> <category><![CDATA[Design Patterns]]></category> <category><![CDATA[facade]]></category> <category><![CDATA[observer]]></category> <category><![CDATA[Proxy]]></category> <category><![CDATA[software architecture]]></category> <category><![CDATA[software engineering]]></category> <category><![CDATA[Software Patterns]]></category> <category><![CDATA[UML]]></category> <category><![CDATA[UML diagram]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=2511</guid><description><![CDATA[<p>Software patterns, often referred to as design patterns, are a reusable and generalizable solution to a common problem that software developers face when designing and building software applications. Design patterns are essentially templates or blueprints for solving recurring design problems in a systematic and efficient way. Design patterns serve several important purposes in software development: [&#8230;]</p><p>The post <a
href="https://francescolelli.info/software-engineering/what-software-patterns-or-design-patterns-are-and-an-introduction-to-the-most-common-one/">What Software Patterns (or Design Patterns) are and an introduction to the most common one</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>Software patterns, often referred to as design patterns, are a reusable and generalizable solution to a common problem that software developers face when designing and building software applications. Design patterns are essentially templates or blueprints for solving recurring design problems in a systematic and efficient way.</p><p>Design patterns serve several important purposes in software development:</p><ol
class="wp-block-list"><li><strong>Reusability</strong>: They encapsulate proven solutions to common problems, making it easier for developers to reuse these solutions in different parts of their code or in different projects.</li><li><strong>Abstraction</strong>: Design patterns provide a higher-level abstraction that helps developers think about and communicate the structure of their code more effectively. They provide a common language and framework for discussing design decisions.</li><li><strong>Maintainability</strong>: Using design patterns can improve the maintainability of software because they promote well-structured and organized code. Developers can more easily understand and modify code that follows established patterns.</li><li><strong>Scalability</strong>: Patterns can help ensure that software is designed in a way that allows it to scale and adapt to changing requirements without requiring major redesigns.</li><li><strong>Community Knowledge</strong>: Design patterns are well-documented and widely recognized within the software development community. This means that developers can leverage the collective wisdom and experience of the community when applying these patterns.</li></ol><figure
class="wp-block-image size-full"><img
decoding="async" width="1734" height="1300" data-attachment-id="2518" data-permalink="https://francescolelli.info/software-engineering/what-software-patterns-or-design-patterns-are-and-an-introduction-to-the-most-common-one/attachment/pexels-photo-577585/" data-orig-file="https://francescolelli.info/wp-content/uploads/2023/10/pexels-photo-577585.jpeg" data-orig-size="1734,1300" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;Photo by Kevin Ku on &lt;a href=\&quot;https:\/\/www.pexels.com\/photo\/data-codes-through-eyeglasses-577585\/\&quot; rel=\&quot;nofollow\&quot;&gt;Pexels.com&lt;\/a&gt;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;data codes through eyeglasses&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="pexels-photo-577585" data-image-description="" data-image-caption="&lt;p&gt;Photo by Kevin Ku on &lt;a href=&quot;https://www.pexels.com/photo/data-codes-through-eyeglasses-577585/&quot; rel=&quot;nofollow&quot;&gt;Pexels.com&lt;/a&gt;&lt;/p&gt;
" data-medium-file="https://francescolelli.info/wp-content/uploads/2023/10/pexels-photo-577585-300x225.jpeg" data-large-file="https://francescolelli.info/wp-content/uploads/2023/10/pexels-photo-577585-1024x768.jpeg" src="https://francescolelli.info/wp-content/uploads/2023/10/pexels-photo-577585.jpeg?8011c3&amp;8011c3" alt="What is a Software Patterns or a Design Patterns and an introduction to the most common one" class="wp-image-2518" srcset="https://francescolelli.info/wp-content/uploads/2023/10/pexels-photo-577585.jpeg 1734w, https://francescolelli.info/wp-content/uploads/2023/10/pexels-photo-577585-300x225.jpeg 300w, https://francescolelli.info/wp-content/uploads/2023/10/pexels-photo-577585-1024x768.jpeg 1024w, https://francescolelli.info/wp-content/uploads/2023/10/pexels-photo-577585-768x576.jpeg 768w, https://francescolelli.info/wp-content/uploads/2023/10/pexels-photo-577585-600x450.jpeg 600w, https://francescolelli.info/wp-content/uploads/2023/10/pexels-photo-577585-1536x1152.jpeg 1536w" sizes="(max-width: 1734px) 100vw, 1734px" /><figcaption
class="wp-element-caption"><em>What are Software Patterns (or Design Patterns) and an introduction to the most common one</em></figcaption></figure><p>As the term software embrace a very large domain, there are several categories of design patterns. Each one is specialized for a particular portion portion of the code. These patterns includes:</p><ol
class="wp-block-list"><li><strong>Creational Patterns</strong>: These patterns deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. Examples include the Singleton, Factory Method, and Abstract Factory patterns.</li><li><strong>Structural Patterns</strong>: Structural patterns focus on defining the composition of classes and objects. Examples include the Adapter, Bridge, and Decorator patterns.</li><li><strong>Behavioral Patterns</strong>: Behavioral patterns are concerned with the interaction and communication between objects. Examples include the Observer, Strategy, and Command patterns.</li><li><strong>Architectural Patterns</strong>: These are high-level patterns that deal with the overall structure of an application. Examples include the Model-View-Controller (MVC), Model-View-ViewModel (MVVM), and Layered Architecture patterns.</li><li><strong>Concurrency Patterns</strong>: These patterns address issues related to managing concurrent access to shared resources in multi-threaded applications. Examples include the Mutex, Semaphore, and Read-Write Lock patterns.</li></ol><p>Design patterns are not one-size-fits-all solutions, and they should be applied judiciously based on the specific requirements and constraints of a software project. Experienced developers use their knowledge of design patterns to make informed decisions about when and how to apply them to solve particular problems.</p><p>The list of pattern is long and is also evolving as the software developer community evolve. At the Some time pattern like <strong>facade</strong>, <strong>adapter</strong>/<strong>wrapper</strong>, <strong>proxy </strong>and <strong>observer </strong>stand the test of time and are the most known among developers. Let&#8217;s see each one of them</p><h2 class="wp-block-heading"><strong>Facade Pattern</strong>:</h2><ul
class="wp-block-list"><li><strong>Purpose</strong>: The Facade pattern provides a simplified, high-level interface to a complex subsystem or set of classes. It acts as a &#8220;facade&#8221; to shield clients from the underlying complexities of the system.</li><li><strong>Use Cases</strong>: It&#8217;s useful when you want to provide a simplified and unified interface to a complex system, making it easier for clients to interact with it. It promotes loose coupling between the client code and the subsystem.</li></ul><p>The image below present the pattern using a <a
href="https://francescolelli.info/generic/developing-uml-diagrams/">Class Diagram</a>:</p><figure
class="wp-block-image size-large"><img
loading="lazy" decoding="async" width="1024" height="710" data-attachment-id="2512" data-permalink="https://francescolelli.info/software-engineering/what-software-patterns-or-design-patterns-are-and-an-introduction-to-the-most-common-one/attachment/facadedesingpattern/" data-orig-file="https://francescolelli.info/wp-content/uploads/2023/10/FacadeDesingPattern.jpg" data-orig-size="1138,789" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Francesco Lelli&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1696331786&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="FacadeDesingPattern" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2023/10/FacadeDesingPattern-300x208.jpg" data-large-file="https://francescolelli.info/wp-content/uploads/2023/10/FacadeDesingPattern-1024x710.jpg" src="https://francescolelli.info/wp-content/uploads/2023/10/FacadeDesingPattern-1024x710.jpg?8011c3&amp;8011c3" alt="What are Software Patterns (or Design Patterns) and an introduction to the Facade Pattern" class="wp-image-2512" srcset="https://francescolelli.info/wp-content/uploads/2023/10/FacadeDesingPattern-1024x710.jpg 1024w, https://francescolelli.info/wp-content/uploads/2023/10/FacadeDesingPattern-300x208.jpg 300w, https://francescolelli.info/wp-content/uploads/2023/10/FacadeDesingPattern-768x532.jpg 768w, https://francescolelli.info/wp-content/uploads/2023/10/FacadeDesingPattern-600x416.jpg 600w, https://francescolelli.info/wp-content/uploads/2023/10/FacadeDesingPattern.jpg 1138w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><p><strong>Example of Use: Multimedia Player Facade</strong></p><p>Suppose you are building a multimedia player application that can play various types of media, such as audio and video files. The underlying multimedia framework is complex, with different classes and interfaces for handling codecs, rendering, audio output, and video display.</p><p>In this example, we could consider implementing a class of name <em><strong><code>MultimediaPlayerFacade</code> </strong></em>that acts as a simplified interface to the complex multimedia framework. It encapsulates the initialization and usage details of the audio and video players, making it much easier for client code to play multimedia. The client code is simplified and less coupled to the underlying multimedia framework, which can change without affecting the client code.</p><p>The Facade pattern here provides a cleaner and more maintainable way to interact with a complex subsystem, shielding the client code from its intricacies.</p><h2 class="wp-block-heading"><strong>Adapter Pattern</strong> also known as <strong>Wrapper Pattern</strong>::</h2><ul
class="wp-block-list"><li><strong>Purpose</strong>: The Adapter pattern allows two incompatible interfaces to work together by providing a wrapper around one of them. It acts as a bridge between two interfaces, making them compatible without changing their source code.</li><li><strong>Use Cases</strong>: It&#8217;s used when you have existing code with interfaces that are not compatible with the interfaces you need to use. The adapter pattern allows you to reuse existing code without modification.</li></ul><p>The image below present the pattern using a <a
href="https://francescolelli.info/generic/developing-uml-diagrams/">Class Diagram</a>:</p><figure
class="wp-block-image aligncenter size-full is-resized"><img
loading="lazy" decoding="async" data-attachment-id="2513" data-permalink="https://francescolelli.info/software-engineering/what-software-patterns-or-design-patterns-are-and-an-introduction-to-the-most-common-one/attachment/the-class-diagram-of-the-adapter-design-pattern_w640/" data-orig-file="https://francescolelli.info/wp-content/uploads/2023/10/The-class-diagram-of-the-Adapter-design-pattern_W640.jpg" data-orig-size="640,395" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="The-class-diagram-of-the-Adapter-design-pattern_W640" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2023/10/The-class-diagram-of-the-Adapter-design-pattern_W640-300x185.jpg" data-large-file="https://francescolelli.info/wp-content/uploads/2023/10/The-class-diagram-of-the-Adapter-design-pattern_W640.jpg" src="https://francescolelli.info/wp-content/uploads/2023/10/The-class-diagram-of-the-Adapter-design-pattern_W640.jpg?8011c3&amp;8011c3" alt="What are Software Patterns (or Design Patterns) and an introduction to the Adapter/Wrapper Pattern" class="wp-image-2513" style="width:840px;height:395px" width="840" height="395"/></figure><p><strong>Example of use: Legacy System Integration</strong></p><p>Imagine you are working on a modern e-commerce application that needs to integrate with a legacy payment gateway. The legacy payment gateway has an outdated interface that doesn&#8217;t match the modern payment service interface your application uses. You can use the Adapter pattern to bridge the gap.</p><p>To integrate the legacy payment gateway with your modern payment service, you can create an adapter class. In this way you can use the <code><em>Legacy Payment Adapter</em></code> to make payments through the legacy payment gateway using the modern payment service. In this way the adapter acts as a bridge between the modern payment service interface and the legacy payment gateway.</p><h2 class="wp-block-heading"><strong>Proxy Pattern</strong>:</h2><ul
class="wp-block-list"><li><strong>Purpose</strong>: The Proxy pattern provides a surrogate or placeholder for another object to control access to it. It can be used to add an additional layer of control over an object, such as lazy loading, access control, or caching.</li><li><strong>Use Cases</strong>: It&#8217;s useful when you want to control access to an object, especially in situations where the creation or access to the object is expensive or where you need to add functionality around object access.</li></ul><p>The image below present the pattern using a <a
href="https://francescolelli.info/generic/developing-uml-diagrams/">Class Diagram</a>:</p><figure
class="wp-block-image size-large"><img
loading="lazy" decoding="async" width="1024" height="572" data-attachment-id="2514" data-permalink="https://francescolelli.info/software-engineering/what-software-patterns-or-design-patterns-are-and-an-introduction-to-the-most-common-one/attachment/proxy_pattern_diagram-svg_/" data-orig-file="https://francescolelli.info/wp-content/uploads/2023/10/Proxy_pattern_diagram.svg_.png" data-orig-size="1920,1072" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Proxy_pattern_diagram.svg_" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2023/10/Proxy_pattern_diagram.svg_-300x168.png" data-large-file="https://francescolelli.info/wp-content/uploads/2023/10/Proxy_pattern_diagram.svg_-1024x572.png" src="https://francescolelli.info/wp-content/uploads/2023/10/Proxy_pattern_diagram.svg_-1024x572.png?8011c3&amp;8011c3" alt="What are Software Patterns (or Design Patterns) and an introduction to the Proxy Pattern" class="wp-image-2514" srcset="https://francescolelli.info/wp-content/uploads/2023/10/Proxy_pattern_diagram.svg_-1024x572.png 1024w, https://francescolelli.info/wp-content/uploads/2023/10/Proxy_pattern_diagram.svg_-300x168.png 300w, https://francescolelli.info/wp-content/uploads/2023/10/Proxy_pattern_diagram.svg_-768x429.png 768w, https://francescolelli.info/wp-content/uploads/2023/10/Proxy_pattern_diagram.svg_-600x335.png 600w, https://francescolelli.info/wp-content/uploads/2023/10/Proxy_pattern_diagram.svg_-1536x858.png 1536w, https://francescolelli.info/wp-content/uploads/2023/10/Proxy_pattern_diagram.svg_.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><p><strong>Example of use: Image Loading Proxy</strong></p><p>Suppose you are building an image viewer application, and you want to implement a feature that loads and displays high-resolution images from a remote server. However, loading these high-resolution images can be slow and resource-intensive. To improve user experience and optimize resource usage, you can use the Proxy pattern. You can use the <strong><em><code>ImageProxy</code> </em></strong>to load and display images in your application without loading the high-resolution image until it&#8217;s actually needed. Consequently you can delay the creation and loading of resource-intensive objects, improving the performance and resource utilization of your application.</p><h2 class="wp-block-heading"><strong>Observer Pattern</strong>:</h2><ul
class="wp-block-list"><li><strong>Purpose</strong>: The Observer pattern defines a one-to-many dependency between objects so that when one object changes state, all its dependents (observers) are notified and updated automatically.</li><li><strong>Use Cases</strong>: It&#8217;s commonly used for implementing distributed event handling systems, where multiple objects need to react to changes in another object&#8217;s state. Examples include GUI frameworks where UI elements update when underlying data changes.</li></ul><p>The image below present the pattern using a <a
href="https://francescolelli.info/generic/developing-uml-diagrams/">Class Diagram</a>:</p><figure
class="wp-block-image size-large"><img
loading="lazy" decoding="async" width="1024" height="423" data-attachment-id="2515" data-permalink="https://francescolelli.info/software-engineering/what-software-patterns-or-design-patterns-are-and-an-introduction-to-the-most-common-one/attachment/1920px-observer_w_update-svg_/" data-orig-file="https://francescolelli.info/wp-content/uploads/2023/10/1920px-Observer_w_update.svg_.png" data-orig-size="1920,794" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="1920px-Observer_w_update.svg_" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2023/10/1920px-Observer_w_update.svg_-300x124.png" data-large-file="https://francescolelli.info/wp-content/uploads/2023/10/1920px-Observer_w_update.svg_-1024x423.png" src="https://francescolelli.info/wp-content/uploads/2023/10/1920px-Observer_w_update.svg_-1024x423.png?8011c3&amp;8011c3" alt="What are Software Patterns (or Design Patterns) and an introduction to the Observer Pattern" class="wp-image-2515" srcset="https://francescolelli.info/wp-content/uploads/2023/10/1920px-Observer_w_update.svg_-1024x423.png 1024w, https://francescolelli.info/wp-content/uploads/2023/10/1920px-Observer_w_update.svg_-300x124.png 300w, https://francescolelli.info/wp-content/uploads/2023/10/1920px-Observer_w_update.svg_-768x318.png 768w, https://francescolelli.info/wp-content/uploads/2023/10/1920px-Observer_w_update.svg_-600x248.png 600w, https://francescolelli.info/wp-content/uploads/2023/10/1920px-Observer_w_update.svg_-1536x635.png 1536w, https://francescolelli.info/wp-content/uploads/2023/10/1920px-Observer_w_update.svg_.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><p><strong>Example of use: Weather Monitoring System</strong></p><p>Imagine you are building a weather monitoring system that collects weather data from various sensors and notifies multiple display devices when the weather conditions change. In this scenario, you can apply the Observer pattern to implement the system. You could imagine a class of name <code>ConcreteWeatherStation</code> as the subject that collects weather data and notifies its observers (in this case, maybe various display objects) when the data changes. The Observer pattern allows multiple display devices to receive and react to updates without being tightly coupled to the weather station.</p><h2 class="wp-block-heading">Summary of Software Patterns or Design patterns</h2><p>Software patterns, also known as design patterns, are widely recognized and essential approaches for organizing code and solving recurring design problems in software development. Among these patterns, the Facade pattern simplifies complex subsystems by providing a unified interface, making it easier for clients to interact with intricate systems. The Adapter pattern bridges the gap between incompatible interfaces, allowing different components to work seamlessly together. The Proxy pattern acts as a surrogate for an object, controlling access and adding functionality, which can be valuable for resource optimization and security. Lastly, the Observer pattern facilitates the creation of distributed event handling systems, enabling one object to notify multiple observers about changes, enhancing code modularity and flexibility. These patterns represent just a subset of the many design patterns available, and they serve as valuable tools in the developer&#8217;s toolkit for building maintainable, scalable, and efficient software systems.</p><p>In the case you would like to learn more I would recommend you to have a look at the following book from &#8220;<a
href="https://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional-ebook/dp/B000SEIBB8">the gang of 4</a>&#8220;</p><figure
class="wp-block-embed is-type-rich is-provider-amazon wp-block-embed-amazon"><div
class="wp-block-embed__wrapper"> <iframe
title="Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series)" type="text/html" width="800" height="550" frameborder="0" allowfullscreen style="max-width:100%" src="https://read.amazon.com/kp/card?preview=inline&#038;linkCode=kpd&#038;ref_=k4w_oembed_scruoIlirQiw0u&#038;asin=B000SEIBB8&#038;tag=kpembed-20"></iframe></div></figure><p>It is a classic and several libraries will probably have a copy.</p><p>The post <a
href="https://francescolelli.info/software-engineering/what-software-patterns-or-design-patterns-are-and-an-introduction-to-the-most-common-one/">What Software Patterns (or Design Patterns) are and an introduction to the most common one</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/software-engineering/what-software-patterns-or-design-patterns-are-and-an-introduction-to-the-most-common-one/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">2511</post-id> </item> <item><title>Free Resources That Will Warm Up Your Programming Environment</title><link>https://francescolelli.info/programming/free-resources-that-will-warm-up-your-programming-environment/</link> <comments>https://francescolelli.info/programming/free-resources-that-will-warm-up-your-programming-environment/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Fri, 14 Jan 2022 19:19:56 +0000</pubDate> <category><![CDATA[Big Data]]></category> <category><![CDATA[Cloud Computing]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Python]]></category> <category><![CDATA[Software Engineering]]></category> <category><![CDATA[Tutorial]]></category> <category><![CDATA[Anaconda]]></category> <category><![CDATA[Datacamp]]></category> <category><![CDATA[free courses]]></category> <category><![CDATA[free datasets]]></category> <category><![CDATA[IDE]]></category> <category><![CDATA[Kaggle]]></category> <category><![CDATA[programming]]></category> <category><![CDATA[Set up IDE]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=2379</guid><description><![CDATA[<p>This article considers some free resources to warm up your programming environment. These are particularly useful if you plan to do a programming oriented thesis where you analyze data by writing some code. A functional working environment is useful independently from what you will be doing. It may sound like an annoying task where you [&#8230;]</p><p>The post <a
href="https://francescolelli.info/programming/free-resources-that-will-warm-up-your-programming-environment/">Free Resources That Will Warm Up Your Programming Environment</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>This article considers some free resources to warm up your programming environment. These are particularly useful if you plan to do a programming oriented thesis where you analyze data by writing some code. A functional working environment is useful independently from what you will be doing. It may sound like an annoying task where you will have to deal with configuration issues and understand a lot of technicalities. However, I strongly encourage you in enduring the pain of getting familiar with these practices for the following reasons:</p><ul
class="wp-block-list"><li>After the initial pain, and maybe a bit of a slow start, your thesis will advance ten times faster and you will be capable to achieve more than you can imagine.</li><li>What you will be learning will not be lost. Many companies use a similar environment (if not the same).</li><li>Many of these resources are free and you will be able to use them for other projects after the end of this academic endeavor.</li></ul><p>In other words, you have nothing to lose. All you have to do is to endure a bit of the initial annoyance that is required for a proper warm up of your programming environment. However, the reward is much greater than the initial investment.</p><figure
class="wp-block-image size-large"><img
loading="lazy" decoding="async" width="1024" height="562" data-attachment-id="2385" data-permalink="https://francescolelli.info/programming/free-resources-that-will-warm-up-your-programming-environment/attachment/programming-environment/" data-orig-file="https://francescolelli.info/wp-content/uploads/2022/01/programming-environment.jpeg" data-orig-size="1400,768" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="programming-environment" data-image-description="&lt;p&gt;Free Resources that will Warm Up your Programming Environment&lt;/p&gt;
" data-image-caption="&lt;p&gt;Free Resources that will Warm Up your Programming Environment&lt;/p&gt;
" data-medium-file="https://francescolelli.info/wp-content/uploads/2022/01/programming-environment-300x165.jpeg" data-large-file="https://francescolelli.info/wp-content/uploads/2022/01/programming-environment-1024x562.jpeg" src="https://francescolelli.info/wp-content/uploads/2022/01/programming-environment-1024x562.jpeg?8011c3&amp;8011c3" alt="Free Resources that will Warm Up your Programming Environment" class="wp-image-2385" srcset="https://francescolelli.info/wp-content/uploads/2022/01/programming-environment-1024x562.jpeg 1024w, https://francescolelli.info/wp-content/uploads/2022/01/programming-environment-300x165.jpeg 300w, https://francescolelli.info/wp-content/uploads/2022/01/programming-environment-768x421.jpeg 768w, https://francescolelli.info/wp-content/uploads/2022/01/programming-environment-600x329.jpeg 600w, https://francescolelli.info/wp-content/uploads/2022/01/programming-environment.jpeg 1400w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><p>In this article, I list only a very few resources and only the ones that are free. In the internet you can find many more.</p><p><strong>Programming skills</strong>: no matter how much you know, there is always room for knowing more. Most libraries, both public and university, have free subscriptions to courses. For example, <a
href="https://www.tilburguniversity.edu/students/skills/programming" target="_blank" rel="noreferrer noopener">the library in my university gives free access to DataCamp</a> to all the students that request it.</p><p>If you are not familiar with the platform, it contains a set of courses at all levels and many of them have code examples. As they cover a large range of cases, some of them will be relevant for your thesis. All you have to do is to dig into the list and familiarize with the code that is most promising for the work that you plan to do with your supervisor.</p><p><strong>Get a student account in GitHub</strong>, it is a free repository that you can use for storing your code. <a
href="https://education.github.com/pack" target="_blank" rel="noreferrer noopener">Calming student status</a> will grant you a pro version for free as well as many discounts for products of other companies. In addition, you will also not loose these perks after the graduation &#8211; some of them could be useful for you in the future.</p><p><strong>Get an account in Kaggle</strong>, again, it is a <a
href="https://www.kaggle.com/" target="_blank" rel="noreferrer noopener">free service that has courses and datasets</a>. They also offer a web based programming environment with the idea that if you will find yourself in need of additional computation, you will use their services. As a general rule, I would recommend to have a local working environment instead of a cloud based like the one of Kaggle. However, a cloud based environment may be useful under certain conditions.</p><p><strong>Set up Anaconda (or Eclipse) in your laptop</strong>. An Integrated Development Environment is extremely useful when you have to do some professional programming. Anaconda is free, open source and perfect for Python. Eclipse is its counterpart for Java. In the article below you can read about some of the benefits of an IDE. Once you will start using one you will never go back:</p><figure
class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-francesco-lelli"><div
class="wp-block-embed__wrapper"><blockquote
class="wp-embedded-content" data-secret="pVPzTAfG61"><a
href="https://francescolelli.info/python/integrated-development-environment-ide-why-you-need-one/">Integrated Development Environment (IDE): why you need one</a></blockquote><iframe
class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Integrated Development Environment (IDE): why you need one&#8221; &#8212; Francesco Lelli" src="https://francescolelli.info/python/integrated-development-environment-ide-why-you-need-one/embed/#?secret=Lw8o4WKWyX#?secret=pVPzTAfG61" data-secret="pVPzTAfG61" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></div></figure><p>This article is a mini-tutorial on how to set up the environment for Anaconda:</p><figure
class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-francesco-lelli"><div
class="wp-block-embed__wrapper"><blockquote
class="wp-embedded-content" data-secret="zGsMfegCvD"><a
href="https://francescolelli.info/python/install-anaconda-and-import-libraries-into-the-ide/">Install Anaconda and Import Libraries into the IDE</a></blockquote><iframe
class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Install Anaconda and Import Libraries into the IDE&#8221; &#8212; Francesco Lelli" src="https://francescolelli.info/python/install-anaconda-and-import-libraries-into-the-ide/embed/#?secret=fgEyAkUJR6#?secret=zGsMfegCvD" data-secret="zGsMfegCvD" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></div></figure><p>Finally, in the article below, you can familiarize with the debug functionality. It is one of the most useful features of an IDE and can really save you a tremendous amount of time:</p><figure
class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-francesco-lelli"><div
class="wp-block-embed__wrapper"><blockquote
class="wp-embedded-content" data-secret="pdssAfQHhH"><a
href="https://francescolelli.info/programming/how-to-debug-in-anaconda-and-spyder-save-time-and-energy/">How to Debug in Anaconda and Spyder:  Save Time and Energy!</a></blockquote><iframe
class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;How to Debug in Anaconda and Spyder:  Save Time and Energy!&#8221; &#8212; Francesco Lelli" src="https://francescolelli.info/programming/how-to-debug-in-anaconda-and-spyder-save-time-and-energy/embed/#?secret=cnwHZnBKpu#?secret=pdssAfQHhH" data-secret="pdssAfQHhH" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></div></figure><p>I would strongly encourage you in enduring the pain of getting familiar with the tools and the resources that I shared with you in this article. In the long run your future self will be extremely thankful.</p><p>A working environment is a very personal thing and I can imagine that every supervisor has their own. Consequently, I would encourage you to discuss the details during your first meeting. At the same time, I can imagine that these tools will be, in a way or an other, useful for your future work. In addition, the fact that you will have your working environment ready will allow you to advance conversations that are more specific to your thesis and you will result in a better use of the (limited) time that you will share with your supervisor.</p><hr
/><p><em>#free #Resources that will #SHARP your #programming #environnement. #Java #pythonprogramming #pythoncode #DataScience #DataAnalytics #data</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Fprogramming%2Ffree-resources-that-will-warm-up-your-programming-environment%2F&#038;text=%23free%20%23Resources%20that%20will%20%23SHARP%20your%20%23programming%20%23environnement.%20%23Java%20%23pythonprogramming%20%23pythoncode%20%23DataScience%20%23DataAnalytics%20%23data&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><p>By the way, here you can fine my profiles in GitHub Kaggle and DataCamp:</p><ul
class="wp-block-list"><li><a
href="https://github.com/Nym77">https://github.com/Nym77</a></li><li><a
href="https://kaggle.com/francescolelli">https://kaggle.com/francescolelli</a></li><li><a
href="https://www.datacamp.com/profile/flelli">https://www.datacamp.com/profile/flelli</a></li><li><a
href="https://www.freecodecamp.org/francesco-lelli" target="_blank" rel="noreferrer noopener">https://www.freecodecamp.org/francesco-lelli</a></li></ul><h3 class="wp-block-heading">Are you really committed in improving your programming skills?</h3><p><a
href="https://www.freecodecamp.org/francesco-lelli" target="_blank" rel="noreferrer noopener">Free Code Camp</a> is an open source free course that will guide you in a project based journey towards advanced programming skills. It contains also a session on how to pass a programming oriented job interview.</p><p><a
href="https://www.edx.org/course/introduction-computer-science-harvardx-cs50x" target="_blank" rel="noreferrer noopener">Introduction to Computer Science from Harvard</a> This is a free edX course from Harvard. You can also get a certificate but this will cost you something. Nevertheless the entire course is free.</p><h3 class="wp-block-heading">Something else:</h3><p>This article (Free Resources That Will Warm Up Your Programming Environment) is part of the miniseries on <a
href="https://francescolelli.info/how-to-do-a-good-thesis-the-miniseries/" target="_blank" rel="noreferrer noopener">how to do a good thesis</a>, you can see the full list of post at the following link:</p><figure
class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-francesco-lelli"><div
class="wp-block-embed__wrapper"><blockquote
class="wp-embedded-content" data-secret="BBWAxuW142"><a
href="https://francescolelli.info/how-to-do-a-good-thesis-the-miniseries/">How to Do a Good Thesis: the Miniseries</a></blockquote><iframe
class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;How to Do a Good Thesis: the Miniseries&#8221; &#8212; Francesco Lelli" src="https://francescolelli.info/how-to-do-a-good-thesis-the-miniseries/embed/#?secret=9WCxtPOxm5#?secret=BBWAxuW142" data-secret="BBWAxuW142" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></div></figure><p>This article is also part of a miniseries on how to <a
href="https://francescolelli.info/how-to-be-a-better-programmer-the-mini-guide/" target="_blank" rel="noreferrer noopener">become a better programmer</a>. You can see the full list of posts at the following link:</p><figure
class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-francesco-lelli"><div
class="wp-block-embed__wrapper"><blockquote
class="wp-embedded-content" data-secret="7F8R7RfPTQ"><a
href="https://francescolelli.info/how-to-be-a-better-programmer-the-mini-guide/">How to be a Better Programmer: the Mini Guide</a></blockquote><iframe
class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;How to be a Better Programmer: the Mini Guide&#8221; &#8212; Francesco Lelli" src="https://francescolelli.info/how-to-be-a-better-programmer-the-mini-guide/embed/#?secret=ehRwtIQGM3#?secret=7F8R7RfPTQ" data-secret="7F8R7RfPTQ" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></div></figure><p>The post <a
href="https://francescolelli.info/programming/free-resources-that-will-warm-up-your-programming-environment/">Free Resources That Will Warm Up Your Programming Environment</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/programming/free-resources-that-will-warm-up-your-programming-environment/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">2379</post-id> </item> <item><title>Agency in Human-Smart Device Relationships: An Exploratory Study</title><link>https://francescolelli.info/publication/agency-in-human-smart-device-relationships-an-exploratory-study/</link> <comments>https://francescolelli.info/publication/agency-in-human-smart-device-relationships-an-exploratory-study/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Tue, 17 Aug 2021 15:23:44 +0000</pubDate> <category><![CDATA[HCI]]></category> <category><![CDATA[Internet of Things]]></category> <category><![CDATA[Publication]]></category> <category><![CDATA[Research]]></category> <category><![CDATA[Software Engineering]]></category> <category><![CDATA[Agency]]></category> <category><![CDATA[device agency]]></category> <category><![CDATA[exploratory factorial analysis]]></category> <category><![CDATA[Human-Computer Interaction]]></category> <category><![CDATA[smart devices]]></category> <category><![CDATA[survey]]></category> <category><![CDATA[user agency]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=2292</guid><description><![CDATA[<p>Can User of IoT technology be more then &#8220;just user&#8221;? How do they relate to technology? Abstract: With technology in reach of everyone and the technology sector in ascendance, it is central to investigate the relationship people have with their devices. We use the concept of agency to capture aspects of user’s sense of mastery [&#8230;]</p><p>The post <a
href="https://francescolelli.info/publication/agency-in-human-smart-device-relationships-an-exploratory-study/">Agency in Human-Smart Device Relationships: An Exploratory Study</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>Can User of IoT technology be more then &#8220;just user&#8221;? How do they relate to technology?</p><div
class="wp-block-image"><figure
class="alignright size-large is-resized"><img
loading="lazy" decoding="async" data-attachment-id="2293" data-permalink="https://francescolelli.info/publication/agency-in-human-smart-device-relationships-an-exploratory-study/attachment/user-and-device-agency-profiling/" data-orig-file="https://francescolelli.info/wp-content/uploads/2021/08/User-and-Device-Agency-Profiling.jpg" data-orig-size="992,743" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="User-and-Device-Agency-Profiling" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2021/08/User-and-Device-Agency-Profiling-300x225.jpg" data-large-file="https://francescolelli.info/wp-content/uploads/2021/08/User-and-Device-Agency-Profiling.jpg" src="https://francescolelli.info/wp-content/uploads/2021/08/User-and-Device-Agency-Profiling.jpg?8011c3&amp;8011c3" alt="" class="wp-image-2293" width="354" height="286"/><figcaption>User and Device Agency </figcaption></figure></div><p><strong>Abstract</strong>: <br>With technology in reach of everyone and the technology sector in ascendance, it is central to investigate the relationship people have with their devices. We use the concept of agency to capture aspects of user’s sense of mastery and control in relation<br>to their device. This study gives preliminary evidence of the existence of two dimensions of agency for modelling the interaction between humans and smart devices: (i) user agency and (ii) device agency. These constructs emerged from an exploratory factorial analysis conducted on a survey data collected from 587 participants. Mapping the users’ dynamics with their devices into user agency and device agency advances our understanding of how digital technology shapes human cognition and emotion and how<br>users interact with technology. This approach can assist in designing interfaces that match the beliefs users have regarding their capabilities and the capacities of their devices.</p><p><strong>Key words:</strong> Agency, Human-Computer Interaction, smart devices, user agency, device agency, exploratory factorial analysis, survey.</p><div
class="wp-block-image"><figure
class="aligncenter size-large"><img
loading="lazy" decoding="async" width="1024" height="538" data-attachment-id="2294" data-permalink="https://francescolelli.info/publication/agency-in-human-smart-device-relationships-an-exploratory-study/attachment/agency-items-in-the-survey/" data-orig-file="https://francescolelli.info/wp-content/uploads/2021/08/Agency-Items-in-the-survey.jpg" data-orig-size="1228,645" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Agency-Items-in-the-survey" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2021/08/Agency-Items-in-the-survey-300x158.jpg" data-large-file="https://francescolelli.info/wp-content/uploads/2021/08/Agency-Items-in-the-survey-1024x538.jpg" src="https://francescolelli.info/wp-content/uploads/2021/08/Agency-Items-in-the-survey-1024x538.jpg?8011c3&amp;8011c3" alt="" class="wp-image-2294" srcset="https://francescolelli.info/wp-content/uploads/2021/08/Agency-Items-in-the-survey-1024x538.jpg 1024w, https://francescolelli.info/wp-content/uploads/2021/08/Agency-Items-in-the-survey-300x158.jpg 300w, https://francescolelli.info/wp-content/uploads/2021/08/Agency-Items-in-the-survey-768x403.jpg 768w, https://francescolelli.info/wp-content/uploads/2021/08/Agency-Items-in-the-survey-600x315.jpg 600w, https://francescolelli.info/wp-content/uploads/2021/08/Agency-Items-in-the-survey.jpg 1228w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Items in the Survey of Agency in Human-Smart Device Relationships: An Exploratory Study </figcaption></figure></div><p>we show that agency in human-smart device interactions is a twofold and graded construct, consisting of user agency and device agency. The attributing of agency to themselves and to their device frames how the users are perceiving and leveraging the affordances of the smart device. The attribution of user and device agency can be used as a measure for understanding if the user masters the device’s potentials to the fullest or not. Thus, user agency and device agency can be used as proxies for understanding how users experience their relationships with their devices.</p><p>The conceptualization of agency proposed here should be further refined in relation to other existing constructs. We should investigate whether user and device agency act as mediators for other factors of human-device interaction such as anthropomorphism and other concepts mentioned in this article. Furthermore, our exploratory study should be developed further to a point where we can perform confirmatory factor analysis. As the next step, an expert panel will be summoned to review the items used in this study, in preparation for refining the survey before collecting new data for the second set of statistical analyses. Furthermore, we should continue exploring the nuances of agency in different contexts of smart device use, such as work vs. personal.<br>Brad Pitt as Tyler Durden in Fight Club (1999) states that “the things you own end up owning you”. In the context of smart devices, this is true only if we are unaware of the agency we attribute to our devices and to ourselves. Perhaps the secret of a balanced relationship with our gadgets is in making an aware decision of when and how to be “owned” by the device and when not.</p><p>Full article available <a
href="https://aisel.aisnet.org/pacis2021/145/" target="_blank" rel="noreferrer noopener">at this link</a>.</p><p>Check out the presentation:</p><iframe
src="https://docs.google.com/presentation/d/e/2PACX-1vSgyFv15R4jGPrkQn1VZV6YCmNDL8nUD7MVoYmmBmUUdt6dadKTjtFSysxvIaiBW_br4MGBUyQpZDNL/embed?start=false&#038;loop=false&#038;delayms=3000" frameborder="0" width="960" height="569" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe><p>Your help in sharing the idea is very welcome!</p><hr
/><p><em>Agency in Human-Smart Device Relationships: An Exploratory Study #HCI #IoT #smarthome #homeautomation #survey #softwaredevelopment #softwareengineering</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Fpublication%2Fagency-in-human-smart-device-relationships-an-exploratory-study%2F&#038;text=Agency%20in%20Human-Smart%20Device%20Relationships%3A%20An%20Exploratory%20Study%20%23HCI%20%23IoT%20%23smarthome%20%23homeautomation%20%23survey%20%23softwaredevelopment%20%23softwareengineering&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><p><strong>Cite this paper as: </strong></p><p>Toivonen, Heidi and Lelli, Francesco, &#8220;Agency in Human-Smart Device Relationship: an Exploratory Study&#8221; (2021). <em>PACIS 2021 Proceedings</em>. 145. https://aisel.aisnet.org/pacis2021/145</p><p><em>Check out the Related Dataset</em>: Lelli, Francesco; Toivonen, Heidi, 2021, “<strong>A Survey for investigating human and smart devices relationships</strong>“, &nbsp;https://doi.org/10.34894/TRAONY, DataverseNL, V1</p><ul
class="wp-block-list"><li><a
href="https://francescolelli.info/paper-articles-and-publications/">Full list of Articles</a></li><li><a
href="https://francescolelli.info/conference-publications/">Full list of Conference Publications</a></li></ul><p></p><p>The post <a
href="https://francescolelli.info/publication/agency-in-human-smart-device-relationships-an-exploratory-study/">Agency in Human-Smart Device Relationships: An Exploratory Study</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/publication/agency-in-human-smart-device-relationships-an-exploratory-study/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">2292</post-id> </item> <item><title>Improving the performance of XML based technologies by caching and reusing information</title><link>https://francescolelli.info/publication/improving-the-performance-of-xml-based-technologies-by-caching-and-reusing-information/</link> <comments>https://francescolelli.info/publication/improving-the-performance-of-xml-based-technologies-by-caching-and-reusing-information/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Fri, 26 Feb 2021 19:39:34 +0000</pubDate> <category><![CDATA[Internet of Things]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Publication]]></category> <category><![CDATA[Research]]></category> <category><![CDATA[Software Engineering]]></category> <category><![CDATA[3 tier architecture]]></category> <category><![CDATA[Cloud Services]]></category> <category><![CDATA[RPC]]></category> <category><![CDATA[Service Oriented Architecture]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[web service]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=2255</guid><description><![CDATA[<p>Improving the performance of XML based technologies by caching and reusing information. Is it possible? Abstract: The growing synergy between Web Services and Grid or cloud based technologies is enabling profound, dynamic interactions between applications dispersed in geographic, institutional, and conceptual space. Such deep interoperability requires the simplicity, robustness, and extensibility for which XML has [&#8230;]</p><p>The post <a
href="https://francescolelli.info/publication/improving-the-performance-of-xml-based-technologies-by-caching-and-reusing-information/">Improving the performance of XML based technologies by caching and reusing information</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>Improving the performance of XML based technologies by caching and reusing information. Is it possible?</p><div
class="wp-block-image"><figure
class="alignright size-large is-resized"><img
loading="lazy" decoding="async" data-attachment-id="2256" data-permalink="https://francescolelli.info/publication/improving-the-performance-of-xml-based-technologies-by-caching-and-reusing-information/attachment/3-tier-architecture/" data-orig-file="https://francescolelli.info/wp-content/uploads/2021/02/3-Tier-Architecture.jpg" data-orig-size="312,376" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;F. Lelli&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1614369164&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="3-Tier-Architecture" data-image-description="&lt;p&gt;Improving the performance of XML based technologies by caching and reusing information&lt;/p&gt;
" data-image-caption="&lt;p&gt;Improving the performance of XML based technologies by caching and reusing information&lt;/p&gt;
" data-medium-file="https://francescolelli.info/wp-content/uploads/2021/02/3-Tier-Architecture-249x300.jpg" data-large-file="https://francescolelli.info/wp-content/uploads/2021/02/3-Tier-Architecture.jpg" src="https://francescolelli.info/wp-content/uploads/2021/02/3-Tier-Architecture.jpg?8011c3&amp;8011c3" alt="" class="wp-image-2256" width="249" height="219"/><figcaption>Improving the performance of XML based technologies by caching and reusing information</figcaption></figure></div><p><strong>Abstract</strong>: <br>The growing synergy between Web Services and Grid or cloud based technologies is enabling profound, dynamic interactions between applications dispersed in geographic, institutional, and conceptual space. Such deep interoperability requires the simplicity, robustness, and extensibility for which XML has been conceived, making it a natural lingua franca for the network. Along with these advantages, there is a degree of inefficiency that may limit the applicability of XML.<br>In this paper, we investigate the limitations of XML for high-performance and high-interactive distributed computing. Our experimental results clearly show that focusing on parsers, that are routinely used for desterilize XML messages exchanged in these system, we can improve the performance of a generic the end to end web services based solution. Then we present a new parser, the Cache Parser, which uses a cache to reduce the parsing time by reusing information related to previously parsed documents/messages similar to the one under examination. Finally, we will show how our fast parser can improve the global throughput of any application based on Web or Grid or Cloud Services, or also RPC calls in general.</p><p><strong>Key words:</strong> Web Service, Cloud Services, 3 tier architecture, SOA, RPC, Service Oriented Architecture</p><div
class="wp-block-image"><figure
class="aligncenter size-large"><img
loading="lazy" decoding="async" width="367" height="348" data-attachment-id="2257" data-permalink="https://francescolelli.info/publication/improving-the-performance-of-xml-based-technologies-by-caching-and-reusing-information/attachment/3-tier-sequence-diagram/" data-orig-file="https://francescolelli.info/wp-content/uploads/2021/02/3-Tier-Sequence-Diagram.jpg" data-orig-size="367,348" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;F. Lelli&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1614369260&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="3-Tier-Sequence-Diagram" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2021/02/3-Tier-Sequence-Diagram-300x284.jpg" data-large-file="https://francescolelli.info/wp-content/uploads/2021/02/3-Tier-Sequence-Diagram.jpg" src="https://francescolelli.info/wp-content/uploads/2021/02/3-Tier-Sequence-Diagram.jpg?8011c3&amp;8011c3" alt="" class="wp-image-2257" srcset="https://francescolelli.info/wp-content/uploads/2021/02/3-Tier-Sequence-Diagram.jpg 367w, https://francescolelli.info/wp-content/uploads/2021/02/3-Tier-Sequence-Diagram-300x284.jpg 300w" sizes="(max-width: 367px) 100vw, 367px" /></figure></div><p>The may Web Services fully solve the “global enterprise integration” problem, but the proposed solution seems to exhibit a poor performance, and we believe that this could pose serious limitations on their actual applicability, as the number of commercial users will increase.<br>As shown in paragraph 2 we also believe that one of the limitations in using a full WS approach for implementing complex and highly interactive systems, comes from the large de-marshalling costs incurred on the receiver sides.<br>To solve this problem, we have designed a new parser: the Cache Parser. It is able to “well and quickly” retrieve information from XML documents, using previous knowledge about the document syntactic tree. In particular, our Cache Parser, which is used to de-marshal XML messages on the receiver side:</p><ul
class="wp-block-list"><li>Uses a checksum to detect if a new document is “well formatted”, and to know if it shares the syntactic tree with an already parsed one.</li><li>Takes advantage of this XML-Document syntactic tree stored in a cache.</li><li>It is based on a strict collaboration between sender and receiver.</li><li>Consistently reduces the receiver parse time, without increasing the sender document creation time.</li></ul><p>This algorithm is 25 time faster than a pull parser and if used in a WS scenario it can allow a 1.54 performance improvement factor in term of request handled per second. Finally it can be applied in any scenario where the client and the server decide to cooperate.</p><p>Full article available <a
href="https://francescolelli.info/paper/Improving%20the%20performance%20of%20XML%20based%20technologies%20by%20caching%20and%20reusing%20information%20ICWS2006.pdf?8011c3&amp;8011c3" target="_blank" rel="noreferrer noopener">at this link</a>.</p><p>Your help in sharing the idea is very welcome!</p><hr
/><p><em>Improving the #performance of XML based technologies by caching and reusing #Information. #Webseries #RealTime #CloudComputing #API #APIs #programming #softwareengineering</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Fpublication%2Fimproving-the-performance-of-xml-based-technologies-by-caching-and-reusing-information%2F&#038;text=Improving%20the%20%23performance%20of%20XML%20based%20technologies%20by%20caching%20and%20reusing%20%23Information.%20%23Webseries%20%23RealTime%20%23CloudComputing%20%23API%20%23APIs%20%23programming%20%23softwareengineering&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><p><strong>Cite this paper as: </strong></p><p>F. Lelli, G. Maron, and S. Orlando. <strong><a
href="https://francescolelli.info/paper/Improving%20the%20performance%20of%20XML%20based%20technologies%20by%20caching%20and%20reusing%20information%20ICWS2006.pdf?8011c3&amp;8011c3">Improving the Performance of XML Based Technologies by Caching and Reusing Information.</a></strong>. IEEE International Conference on Web Services (ICWS), Chicago, September 2006.</p><ul
class="wp-block-list"><li><a
href="https://francescolelli.info/paper-articles-and-publications/">Full list of Articles</a></li><li><a
href="https://francescolelli.info/journals-publication/">Full list of Journal Publications</a></li></ul><p></p><p>The post <a
href="https://francescolelli.info/publication/improving-the-performance-of-xml-based-technologies-by-caching-and-reusing-information/">Improving the performance of XML based technologies by caching and reusing information</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/publication/improving-the-performance-of-xml-based-technologies-by-caching-and-reusing-information/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">2255</post-id> </item> <item><title>Client Side Estimation of a Remote Service Execution</title><link>https://francescolelli.info/publication/client-side-estimation-of-a-remote-service-execution/</link> <comments>https://francescolelli.info/publication/client-side-estimation-of-a-remote-service-execution/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Fri, 26 Feb 2021 11:53:34 +0000</pubDate> <category><![CDATA[Internet of Things]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Publication]]></category> <category><![CDATA[Research]]></category> <category><![CDATA[Software Engineering]]></category> <category><![CDATA[Cloud Services]]></category> <category><![CDATA[Grid]]></category> <category><![CDATA[QoS]]></category> <category><![CDATA[Quality of Service]]></category> <category><![CDATA[Response Time]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=2247</guid><description><![CDATA[<p>Is it possible to achieve a Client Side Estimation of a Remote Service Execution? Abstract: Many use cases, concerning the monitoring and controlling of real physical instruments, demand deep interaction between users and services that virtualize the access to such instruments/devices. In addition, in order to realize high interoperable solutions, SOA-based Web/Grid Service technologies must [&#8230;]</p><p>The post <a
href="https://francescolelli.info/publication/client-side-estimation-of-a-remote-service-execution/">Client Side Estimation of a Remote Service Execution</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<div
class="wp-block-image"><figure
class="alignright size-large is-resized"><img
loading="lazy" decoding="async" data-attachment-id="2248" data-permalink="https://francescolelli.info/publication/client-side-estimation-of-a-remote-service-execution/attachment/criticaltimesinserviceinvocations/" data-orig-file="https://francescolelli.info/wp-content/uploads/2021/02/CriticalTimesInServiceInvocations.jpg" data-orig-size="804,307" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;F. Lelli&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1614335153&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Improving the performance of XML based technologies by caching and reusing information" data-image-description="&lt;p&gt;Improving the performance of XML based technologies by caching and reusing information&lt;/p&gt;
" data-image-caption="&lt;p&gt;Improving the performance of XML based technologies by caching and reusing information&lt;/p&gt;
" data-medium-file="https://francescolelli.info/wp-content/uploads/2021/02/CriticalTimesInServiceInvocations-300x115.jpg" data-large-file="https://francescolelli.info/wp-content/uploads/2021/02/CriticalTimesInServiceInvocations.jpg" src="https://francescolelli.info/wp-content/uploads/2021/02/CriticalTimesInServiceInvocations.jpg?8011c3&amp;8011c3" alt="" class="wp-image-2248" width="503" height="192" srcset="https://francescolelli.info/wp-content/uploads/2021/02/CriticalTimesInServiceInvocations.jpg 804w, https://francescolelli.info/wp-content/uploads/2021/02/CriticalTimesInServiceInvocations-300x115.jpg 300w, https://francescolelli.info/wp-content/uploads/2021/02/CriticalTimesInServiceInvocations-768x293.jpg 768w, https://francescolelli.info/wp-content/uploads/2021/02/CriticalTimesInServiceInvocations-600x229.jpg 600w" sizes="(max-width: 503px) 100vw, 503px" /><figcaption>Client Side Estimation of a Remote Service Execution</figcaption></figure></div><p>Is it possible to achieve a Client Side Estimation of a Remote Service Execution?</p><p><strong>Abstract</strong>: <br>Many use cases, concerning the monitoring and controlling of real physical instruments, demand deep interaction between users and services that virtualize the access to such instruments/devices. In addition, in order to realize high interoperable solutions, SOA-based Web/Grid Service technologies must be adopted. When the access to one of these services is performed via internet using a Web Service call, the remote invocation time becomes critical in order to understand if an instrument can be controlled properly, or the delays introduced by the wire and the serialization/ deserialization process are unacceptable. This paper thus presents methodologies and algorithms, based on a 2k factorial analysis<br>and a Gaussian Majorization of previous service execution times, which enables the estimation of a generic remote method execution time. Furthermore it suggests three different software architectures, where the developed algorithms and methodology could be integrated in order to automatically profile the end-to-end service. It is worth noting that our proposals are validated using suitable benchmarks and extensive tests coming out from a real (not simulated) environment. In addition, the outcome of this paper have been used in the realization of a service for remote control, monitor, and manage of a pool of instruments/devices.</p><p><strong>Key words:</strong> Web Service, Quality of Service, QoS, Grid, Cloud Services, Response Time</p><p>In this paper you will understand the state of the art on Quality of Service in today digital services with particular attention to Web Services.  In this scenario, we proposes a set of solutions that enable a remote service invocation time to be predicted in a general scenario. The contribution of this paper can be divided in three different parts:</p><ul
class="wp-block-list"><li>Section 3 formalizes the problem while Sections 5 and 5.1 validate this formalization by providing a dataset for web service QoS study. In particular, the dataset consists of 2304000 samples (of 9 significant values each) organized in 2304 different tests.</li><li>In the second part of this paper (Section 4, 6, and 7) we analyze the collected dataset in a more exhaustive way. Two variants of a methodology that utilizes a Gaussian approximation of the dataset distributions, in combination with a regression model of the key factors that influence the average and the standard deviation, have been developed in Section 4.</li><li>Then, in Section 6 our estimators are validated with experimental results in several scenarios. In the last part of this paper (Section 7), we propose three different software architectures that can utilize the developed methodologies and algorithms. It is worth noting that the presented solutions have been already adopted in a Grid context during the design and implementation of our IE</li></ul><p>We have also experienced that in case of server overload, the number of deadline misses increases. This suggests a possible approach for an automatic organization of the clients that balances the servers’ load, and that could be exploited to solve the use cases mentioned in the introduction of this paper. If the number of deadline misses is greater than the expected<br>ones, the server machine is probably overloaded. So clients could/should decide to use a different machine, in which an identical copy of the invoked service is deployed.</p><p>Full article available <a
href="https://francescolelli.info/paper/Client%20Side%20Estimation%20of%20a%20Remote%20Service%20Execution-MASCOT07.pdf?189db0&amp;189db0&amp;8011c3&amp;8011c3" target="_blank" rel="noreferrer noopener">at this link</a>.</p><p>Your help in sharing the idea is very welcome!</p><hr
/><p><em>Client Side Estimation of a Remote Service Execution. #Webseries #RealTime (sort of) #CloudComputing #API #APIs #programming #SoftwareEngineering</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Fpublication%2Fclient-side-estimation-of-a-remote-service-execution%2F&#038;text=Client%20Side%20Estimation%20of%20a%20Remote%20Service%20Execution.%20%23Webseries%20%23RealTime%20%28sort%20of%29%20%23CloudComputing%20%23API%20%23APIs%20%23programming%20%23SoftwareEngineering&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><p><strong>Cite this paper as: </strong></p><p>F. Lelli, G. Maron and S. Orlando.&nbsp;<strong><a
href="https://francescolelli.info/paper/Client%20Side%20Estimation%20of%20a%20Remote%20Service%20Execution-MASCOT07.pdf?189db0&amp;189db0&amp;8011c3&amp;8011c3">Client Side Estimation of a Remote Service Execution</a></strong>, 15th Annual Meeting of the IEEE International Symposium on Modelling, Analysis, and Simulation of Computer and Telecommunication Systems (MASCOTS), Istanbul, Turkey October 2007</p><ul
class="wp-block-list"><li><a
href="https://francescolelli.info/paper-articles-and-publications/">Full list of Articles</a></li><li><a
href="https://francescolelli.info/journals-publication/">Full list of Journal Publications</a></li></ul><p></p><p>The post <a
href="https://francescolelli.info/publication/client-side-estimation-of-a-remote-service-execution/">Client Side Estimation of a Remote Service Execution</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/publication/client-side-estimation-of-a-remote-service-execution/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">2247</post-id> </item> <item><title>A Survey of Social Software Engineering</title><link>https://francescolelli.info/publication/a-survey-of-social-software-engineering/</link> <comments>https://francescolelli.info/publication/a-survey-of-social-software-engineering/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Sun, 24 Jan 2021 19:33:53 +0000</pubDate> <category><![CDATA[Publication]]></category> <category><![CDATA[Software Engineering]]></category> <category><![CDATA[collaborative tools]]></category> <category><![CDATA[Social software engineering]]></category> <category><![CDATA[software engineering]]></category> <category><![CDATA[Survey Paper]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=1427</guid><description><![CDATA[<p>Abstract: Software engineering is a complex sociotechnical activity, due to the need for discussing and sharing knowledge among team members. This has raised the need for effective ways of sharing ideas, knowledge, and artifacts among groups and their members. The social aspect of software engineering process also demands computer support to facilitate the development by [&#8230;]</p><p>The post <a
href="https://francescolelli.info/publication/a-survey-of-social-software-engineering/">A Survey of Social Software Engineering</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<div
class="wp-block-image"><figure
class="alignright size-large"><img
loading="lazy" decoding="async" width="440" height="330" data-attachment-id="2229" data-permalink="https://francescolelli.info/publication/a-survey-of-social-software-engineering/attachment/image/" data-orig-file="https://francescolelli.info/wp-content/uploads/2021/01/image.jpeg" data-orig-size="440,330" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="A Survey of Social Software Engineering" data-image-description="&lt;p&gt;A Survey of Social Software Engineering  &lt;/p&gt;
" data-image-caption="&lt;p&gt;A Survey of Social Software Engineering  &lt;/p&gt;
" data-medium-file="https://francescolelli.info/wp-content/uploads/2021/01/image-300x225.jpeg" data-large-file="https://francescolelli.info/wp-content/uploads/2021/01/image.jpeg" src="https://francescolelli.info/wp-content/uploads/2021/01/image.jpeg?8011c3&amp;8011c3" alt="A Survey of Social Software Engineering  " class="wp-image-2229" srcset="https://francescolelli.info/wp-content/uploads/2021/01/image.jpeg 440w, https://francescolelli.info/wp-content/uploads/2021/01/image-300x225.jpeg 300w" sizes="(max-width: 440px) 100vw, 440px" /><figcaption>A Survey of Social Software Engineering </figcaption></figure></div><p><strong>Abstract</strong>: <br>Software engineering is a complex sociotechnical activity, due to the need for discussing and sharing knowledge among team members. This has raised the need for effective ways of sharing ideas, knowledge, and artifacts among groups and their members. The social aspect of software engineering process also demands computer support to facilitate the development by means of collaborative tools, applications and environments.<br>In this paper, we present a survey of relevant works from psychology, mathematics and computer science studies. The combination of these fields provides the required infrastructure for engineering social and collaborative applications as well as the software engineering process. We also discuss possible solutions for the encountered shortcomings, and how they can improve software development</p><p><strong>Key words:</strong> Social Software Engineering,   Psychology, Collaborative tools, mathematical techniques.</p><p>In this paper you will see:</p><ul
class="wp-block-list"><li>a set of relevant works from psychological and social areas that could be integrated in modern software development.</li><li>relevant works in building collaborative and social tools</li><li>a set of references on mathematical techniques that have been or could be used in order to validate ideas around social software engineering.</li></ul><p>We addressed the idea of Social Software Engineering by providing a survey of contributions in related areas. We identified and discussed two main subcategories: on the one hand the need to integrate results from social and psychological sciences in the software lifecycle; on the other hand, we outlined the need for engineering social networking services and collaborative tools. As a matter of fact, these applications have been developed independently but they share many use cases. Therefore, by approaching the problem in a systematic way we can try to formalize and improve these classes of applications.<br>Finally we presented a set of mathematical techniques that have been used for experimental validation of scientific contributions: these techniques may be used as basic blocks for understanding the ideas proposed for social software engineering</p><p>Full article available at the following link:</p><p>A Survey of Social Software Engineering <a
href="https://ieeexplore.ieee.org/document/4686304" target="_blank" rel="noreferrer noopener">https://ieeexplore.ieee.org/document/4686304</a></p><p>PDF also available <a
href="https://pure.uvt.nl/ws/portalfiles/portal/47483912/paper9.pdf" target="_blank" rel="noreferrer noopener">at this link</a>.</p><p>Your help in sharing the idea is very welcome!</p><hr
/><p><em>Writing #Software is a social endeavor: A #survey of #Social #SoftwareEngineering</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Fpublication%2Fa-survey-of-social-software-engineering%2F&#038;text=Writing%20%23Software%20is%20a%20social%20endeavor%3A%20A%20%23survey%20of%20%23Social%20%23SoftwareEngineering&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><p><strong>Cite this paper as: </strong></p><p>N. Ahmadi, M. Jazayeri, F. Lelli, and S. Nesic. A Survey of Social Software Engineering In the First International Workshop on Social Software Engineering and Applications, Vol. 1, No.1 pp. 1-12, L&#8217;Aquila, Italy, Sep. 2008.</p><p>Authors in alphabetical order <br></p><ul
class="wp-block-list"><li><a
href="https://francescolelli.info/paper-articles-and-publications/">Full list of Articles</a></li><li><a
href="https://francescolelli.info/journals-publication/">Full list of Journal Publications</a></li></ul><p></p><p>The post <a
href="https://francescolelli.info/publication/a-survey-of-social-software-engineering/">A Survey of Social Software Engineering</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/publication/a-survey-of-social-software-engineering/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">1427</post-id> </item> <item><title>A Service Encapsulation Example Using a Location Service</title><link>https://francescolelli.info/software-engineering/a-service-encapsulation-example-using-a-location-service/</link> <comments>https://francescolelli.info/software-engineering/a-service-encapsulation-example-using-a-location-service/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Mon, 02 Nov 2020 19:32:30 +0000</pubDate> <category><![CDATA[Big Data]]></category> <category><![CDATA[BPI]]></category> <category><![CDATA[Software Engineering]]></category> <category><![CDATA[interface]]></category> <category><![CDATA[Service]]></category> <category><![CDATA[Service Encapsulation]]></category> <category><![CDATA[Service-oriented Architecture (SOA)]]></category> <category><![CDATA[SOA]]></category> <category><![CDATA[software architecture]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=2176</guid><description><![CDATA[<p>In this post, I am going to present an example of Service Encapsulation using the case study of ACME Social and the University of Nowhere that is described in the linked article. Service Encapsulation is often used to hide the internal representation, or state, of an object from the outside. In this way, we can [&#8230;]</p><p>The post <a
href="https://francescolelli.info/software-engineering/a-service-encapsulation-example-using-a-location-service/">A Service Encapsulation Example Using a Location Service</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>In this post, I am going to present an example of Service Encapsulation using the case study of <a
href="https://francescolelli.info/bpi/bpi-an-example-of-business-process-integration-big-data-flavor/" target="_blank" rel="noreferrer noopener">ACME Social and the University of Nowhere</a> that is described in the linked article.</p><p>Service Encapsulation is often used to hide the internal representation, or state, of an object from the outside. In this way, we can present to the outside world a cleaner, simpler, and more coherent view of the internal systems. Many services which were not initially planned for a Service Oriented Architecture (SOA) may get encapsulated or become a part of a SOA in this way.</p><p>In the example of ACME Social and University of Nowhere, both the parties agreed on exchanging information in order to improve the existing geolocation service of ACME Social. In particular, ACME Social would like to receive the following information from the University of Nowhere:</p><ul
class="wp-block-list"><li>Retrieve a list of unique IDs of the students</li><li>Retrieve the email addresse(s) of each student</li><li>Get the class that the student is supposed to follow</li><li>Retrieving the exact coordinates of the location of a given student according to the University of Nowhere.</li></ul><h3 class="wp-block-heading">Service Encapsulation: <strong>Can we design it as a stateless service?</strong></h3><p>Probably yes, even though students and their respective locations will change. From the point of view of the methods, we can expect that their behavior will not change over time. A possible UML diagram that describes the interface of the service could be as follows:</p><figure
class="wp-block-image size-large is-resized"><img
loading="lazy" decoding="async" data-attachment-id="2177" data-permalink="https://francescolelli.info/software-engineering/a-service-encapsulation-example-using-a-location-service/attachment/university-of-nowhere-location-service/" data-orig-file="https://francescolelli.info/wp-content/uploads/2020/11/University-Of-Nowhere-Location-Service.jpg" data-orig-size="260,166" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;F. Lelli&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1604250551&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="University-Of-Nowhere-Location-Service" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2020/11/University-Of-Nowhere-Location-Service.jpg" data-large-file="https://francescolelli.info/wp-content/uploads/2020/11/University-Of-Nowhere-Location-Service.jpg" src="https://francescolelli.info/wp-content/uploads/2020/11/University-Of-Nowhere-Location-Service.jpg?8011c3&amp;8011c3" alt="" class="wp-image-2177" width="278" height="177"/></figure><p>The class represents all the functionalities requested by ACME Social in 4 methods.  It does not have attributes and this approach will keep the design simple. IDs, emails, as well as geocoordinates will be shared as Strings in order to use one of the basic types of a service.</p><p>In the case we will decide to implement a WS-I compliant service, we can assume that the calls of the methods can fail and may trigger exceptions on the service consumer&#8217;s side.</p><h3 class="wp-block-heading">What about the concerns of ACME Social and the documentation of the service?</h3><p>As the service represents the entry point of the systems of the university of Nowhere, we need to carefully balance the complexity of the interface that we need to design. On the one hand, it must be able to mask all the idiosyncrasies of the IT of the university in order to facilitate its consumption by ACME Social. On the other hand it must be able to deliver everything that is needed and agreed. The figure below shows how this interface sits at the intersection points of two different worlds with different needs and goals:</p><figure
class="wp-block-image size-large"><img
loading="lazy" decoding="async" width="982" height="567" data-attachment-id="2178" data-permalink="https://francescolelli.info/software-engineering/a-service-encapsulation-example-using-a-location-service/attachment/service-interface-and-service-implementation/" data-orig-file="https://francescolelli.info/wp-content/uploads/2020/11/Service-Interface-And-Service-Implementation.jpg" data-orig-size="982,567" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;F. Lelli&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1604256502&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Service-Interface-And-Service-Implementation" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2020/11/Service-Interface-And-Service-Implementation-300x173.jpg" data-large-file="https://francescolelli.info/wp-content/uploads/2020/11/Service-Interface-And-Service-Implementation.jpg" src="https://francescolelli.info/wp-content/uploads/2020/11/Service-Interface-And-Service-Implementation.jpg?8011c3&amp;8011c3" alt="A Service Encapsulation Example Using a Location Service " class="wp-image-2178" srcset="https://francescolelli.info/wp-content/uploads/2020/11/Service-Interface-And-Service-Implementation.jpg 982w, https://francescolelli.info/wp-content/uploads/2020/11/Service-Interface-And-Service-Implementation-300x173.jpg 300w, https://francescolelli.info/wp-content/uploads/2020/11/Service-Interface-And-Service-Implementation-768x443.jpg 768w, https://francescolelli.info/wp-content/uploads/2020/11/Service-Interface-And-Service-Implementation-600x346.jpg 600w" sizes="(max-width: 982px) 100vw, 982px" /></figure><p>ACME Social, i.e. the client of the service needs a clear answer to the following questions:</p><ul
class="wp-block-list"><li><em>What does the service do?</em> Answering to this question will require a proper documentation of the methods. The name may be intuitive, but some of its behavior may not. Therefore, it needs to be carefully documented.</li><li><em>How can we use the service? </em>The best way to answer this question is with an example of use. ACME social may use different languages so the example(s) need to be written in Java and Python (for example) and <a
href="https://francescolelli.info/programming/best-practices-on-how-to-write-comments-in-your-code/" target="_blank" rel="noreferrer noopener">the code must be well documented (see these best practices)</a>.</li><li><em>Where can we locate the service? </em>The URL of the service, together with the way to get the authorization of use, should be part of the documentation. In addition, the service should be part of an UDDI registry as well.</li></ul><p>ACME Social is not at all interested in:</p><ul
class="wp-block-list"><li>How to represent internally the request received from ACME social</li><li>How to implement the service</li><li>Where to host the server needed for running the service</li><li>How to publish the service in the Internet</li><li>How to keep it running</li></ul><p>These aspects are of fundamental importance for the University of Nowhere. However, these concerns should not be shared with the consumers of the service.</p><hr
/><p><em>A #service Encapsulation example using a location service. #servicedesign #programming</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Fsoftware-engineering%2Fa-service-encapsulation-example-using-a-location-service%2F&#038;text=A%20%23service%20Encapsulation%20example%20using%20a%20location%20service.%20%23servicedesign%20%23programming&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><p>The post <a
href="https://francescolelli.info/software-engineering/a-service-encapsulation-example-using-a-location-service/">A Service Encapsulation Example Using a Location Service</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/software-engineering/a-service-encapsulation-example-using-a-location-service/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">2176</post-id> </item> <item><title>How to write clean code by Uncle Bob (Robert Cecil Martin)</title><link>https://francescolelli.info/tutorial/how-to-write-clean-code-by-uncle-bob-robert-cecil-martin/</link> <comments>https://francescolelli.info/tutorial/how-to-write-clean-code-by-uncle-bob-robert-cecil-martin/#respond</comments> <dc:creator><![CDATA[Francesco Lelli]]></dc:creator> <pubDate>Wed, 02 Sep 2020 11:27:26 +0000</pubDate> <category><![CDATA[Programming]]></category> <category><![CDATA[Software Engineering]]></category> <category><![CDATA[Tutorial]]></category> <category><![CDATA[agile]]></category> <category><![CDATA[code best practices]]></category> <category><![CDATA[comments in code]]></category> <category><![CDATA[project management]]></category> <category><![CDATA[Robert Martin]]></category> <category><![CDATA[software architecture]]></category> <category><![CDATA[Uncle Bob]]></category> <guid
isPermaLink="false">https://francescolelli.info/?p=2076</guid><description><![CDATA[<p>This is a collection of videos by Uncle Bob (Robert Cecil Martin) on how to write clean code. He is an American software engineer, instructor, and best-selling author. He developed several software design principles and co-founded the Agile Manifesto. There is more to object oriented programming. If you want to be able to write code [&#8230;]</p><p>The post <a
href="https://francescolelli.info/tutorial/how-to-write-clean-code-by-uncle-bob-robert-cecil-martin/">How to write clean code by Uncle Bob (Robert Cecil Martin)</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></description> <content:encoded><![CDATA[<p>This is a collection of videos by Uncle Bob (Robert Cecil Martin) on how to write clean code. He is an American software engineer, instructor, and best-selling author. He developed several software design principles and co-founded the Agile Manifesto.</p><figure
class="wp-block-image size-large"><img
loading="lazy" decoding="async" width="800" height="533" data-attachment-id="2078" data-permalink="https://francescolelli.info/tutorial/how-to-write-clean-code-by-uncle-bob-robert-cecil-martin/attachment/clean-code/" data-orig-file="https://francescolelli.info/wp-content/uploads/2020/09/Clean-Code.jpeg" data-orig-size="800,533" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Clean-Code" data-image-description="" data-image-caption="" data-medium-file="https://francescolelli.info/wp-content/uploads/2020/09/Clean-Code-300x200.jpeg" data-large-file="https://francescolelli.info/wp-content/uploads/2020/09/Clean-Code.jpeg" src="https://francescolelli.info/wp-content/uploads/2020/09/Clean-Code.jpeg?8011c3&amp;8011c3" alt="How to write clean code by Uncle Bob" class="wp-image-2078" srcset="https://francescolelli.info/wp-content/uploads/2020/09/Clean-Code.jpeg 800w, https://francescolelli.info/wp-content/uploads/2020/09/Clean-Code-300x200.jpeg 300w, https://francescolelli.info/wp-content/uploads/2020/09/Clean-Code-768x512.jpeg 768w, https://francescolelli.info/wp-content/uploads/2020/09/Clean-Code-600x400.jpeg 600w" sizes="(max-width: 800px) 100vw, 800px" /></figure><p>There is more to object oriented programming. If you want to be able to write code that you can re-use 2 weeks after, you want to put attention to how to write good quality code. This activity takes time, but if you want to be able to look back at what you have done (and you want it!) you have to pay the price.</p><figure
class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="Clean Code - Uncle Bob / Lesson 1" width="800" height="450" src="https://www.youtube.com/embed/7EmboKQH8lM?feature=oembed&#038;enablejsapi=1&#038;origin=https://francescolelli.info" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>Next, consider the importance of <a
href="https://francescolelli.info/programming/best-practices-on-how-to-write-comments-in-your-code/" target="_blank" rel="noreferrer noopener">commenting your code</a> and the proper way to do it. This is a fundamental activity. However, more commenting is not necessarily better then less commenting.</p><figure
class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="Clean Code - Uncle Bob / Lesson 2" width="800" height="450" src="https://www.youtube.com/embed/2a_ytyt9sf8?feature=oembed&#038;enablejsapi=1&#038;origin=https://francescolelli.info" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>This second set of talks digs deeper into the profession of software engineer/ programmer and promotes an attitude that fosters collaboration and ethics.</p><p>One of the problems that the industry is facing is that in the past 50 years, the number of programmers doubled every 5 years. Therefore, the industry remains young and the experienced coders face the trouble of passing their knowledge to the new generation. In one line: act professional!</p><figure
class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="Clean Code - Uncle Bob / Lesson 3" width="800" height="450" src="https://www.youtube.com/embed/Qjywrq2gM8o?feature=oembed&#038;enablejsapi=1&#038;origin=https://francescolelli.info" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>Test driven development is a software development process that relies on the repetition of a very short development cycle: Requirements are turned into very specific test cases, then the code is improved so that the tests pass. This is opposed to software development that allows code to be added that is not proven to meet requirements. This, together with making correct estimates and saying no is the right attitude for delivering successful results.</p><figure
class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="Clean Code - Uncle Bob / Lesson 4" width="800" height="450" src="https://www.youtube.com/embed/58jGpV2Cg50?feature=oembed&#038;enablejsapi=1&#038;origin=https://francescolelli.info" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>Software architecture refers to the fundamental structures of a software system and the discipline of creating such structures and systems. Each&nbsp;structure comprises software elements, relations among them, and properties of both elements and relations. In the video below, you will learn the fundamentals of software architecture, its rules, the value of discipline in the production of quality code, and the responsibility of disseminating the need to implement these good practices in the community of programmers.</p><figure
class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="Clean Code - Uncle Bob / Lesson 5" width="800" height="450" src="https://www.youtube.com/embed/sn0aFEMVTpA?feature=oembed&#038;enablejsapi=1&#038;origin=https://francescolelli.info" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>Challenges in software and software management include the problem of adjusting software production time to delivery times. In other words, we are talking about the divergence between the needs of the client, the commercial commitments, and the needs of the programmer to produce quality software. Software project management is comprised of a number of activities, which contain planning of project, deciding scope of software product, estimation of cost in various terms, scheduling of tasks and events, and resource management. This last talk is about some of these challenges:</p><figure
class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div
class="wp-block-embed__wrapper"> <iframe
title="Clean Code - Uncle Bob / Lesson 6" width="800" height="450" src="https://www.youtube.com/embed/l-gF0vDhJVI?feature=oembed&#038;enablejsapi=1&#038;origin=https://francescolelli.info" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></figure><p>In summary, quoting from Uncle Bob:</p><blockquote
class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way</p></blockquote><hr
/><p><em>#HowTo write clean #code by Uncle Bob ( Robert Cecil Martin ) #softwaredevelopment #CodeNewbie #HowtoPerfect</em><br
/><a
href='https://twitter.com/intent/tweet?url=https%3A%2F%2Ffrancescolelli.info%2Ftutorial%2Fhow-to-write-clean-code-by-uncle-bob-robert-cecil-martin%2F&#038;text=%23HowTo%20write%20clean%20%23code%20by%20Uncle%20Bob%20%28%20Robert%20Cecil%20Martin%20%29%20%23softwaredevelopment%20%23CodeNewbie%20%23HowtoPerfect&#038;related' target='_blank' rel="noopener noreferrer" >Share on X</a><br
/><hr
/><p></p><p>How to write clean code? In case you would like to know more, here you can find a link to his book:</p><p>Clean-Code-Handbook: <a
href="https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882" target="_blank" rel="noreferrer noopener">https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882</a></p><p>The post <a
href="https://francescolelli.info/tutorial/how-to-write-clean-code-by-uncle-bob-robert-cecil-martin/">How to write clean code by Uncle Bob (Robert Cecil Martin)</a> appeared first on <a
href="https://francescolelli.info">Francesco Lelli</a>.</p> ]]></content:encoded> <wfw:commentRss>https://francescolelli.info/tutorial/how-to-write-clean-code-by-uncle-bob-robert-cecil-martin/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <post-id
xmlns="com-wordpress:feed-additions:1">2076</post-id> </item> </channel> </rss>