<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pasindu Chinthana</title>
    <description>The latest articles on DEV Community by Pasindu Chinthana (@edpchinthana).</description>
    <link>https://dev.to/edpchinthana</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F505043%2Fbf06031d-8fe5-4566-81a2-1324de97907a.png</url>
      <title>DEV Community: Pasindu Chinthana</title>
      <link>https://dev.to/edpchinthana</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/edpchinthana"/>
    <language>en</language>
    <item>
      <title>Introduction to Microservices</title>
      <dc:creator>Pasindu Chinthana</dc:creator>
      <pubDate>Tue, 01 Jun 2021 07:31:36 +0000</pubDate>
      <link>https://dev.to/edpchinthana/introduction-to-microservices-2aom</link>
      <guid>https://dev.to/edpchinthana/introduction-to-microservices-2aom</guid>
      <description>&lt;h3&gt;
  
  
  Monolithic Architecture
&lt;/h3&gt;

&lt;p&gt;In earlier days, monolithic architecture was used everywhere. It was a single application which facilitate the all functions in the system. It was simple and easy to organize early. But when the systems get complex, developers had to face a lot of issues.&lt;/p&gt;

&lt;p&gt;Lets take this taxi app(like Uber) architecture. It has a central application that handles every feature of the system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl39yvvkuphkolmee250n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl39yvvkuphkolmee250n.png" alt="monolith architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In this example, these modules are resident inside one application. So the code base must be huge and consume more resources. These modules are coupled tight. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Imagine you are going to add a feature or change the code. Then you need to test the code and all integration testing so on. Even you need to understand the whole flow of the code before modifying it. This happens because it is tightly coupled with other components. A small change in one component can affect another component's flow.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Usually, trip tracking might have more traffic than billing components. Since all of these are inside one application you need to scale up the whole application. But it is not efficient.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Whole features should be implemented using one technology or framework. But technologies are getting changed, updated frequently. With a monolithic approach, it is hard to upgrade frequently.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Service Oriented Architecture
&lt;/h3&gt;

&lt;p&gt;In early, most of the systems were developed in monolithic architecture. But with time, developers understood it would be easy if the application is more modular. &lt;/p&gt;

&lt;p&gt;So they started developing separate applications with separate technologies, and infrastructures. With that, they could write and test modules separately and even scale. &lt;/p&gt;

&lt;p&gt;The services were running on the same network and services communicated internally over the network.&lt;/p&gt;

&lt;p&gt;But still, it had some kind of coupling between services. &lt;/p&gt;

&lt;p&gt;Then developers start thinking to develop more modular components than in service oriented approach.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Micro-services
&lt;/h3&gt;

&lt;p&gt;Micro-services architecture is an extension from service oriented architecture. A module in micro-services can be modified, tested, deployed without affecting other modules.&lt;/p&gt;

&lt;p&gt;Micro-services has hexagonal architecture. Which means a module can be plugged in anywhere, any application. They are more granular. &lt;/p&gt;

&lt;p&gt;Each micro-service is a mini application that has its own hexagonal architecture consisting of business logic along with various adapters. Sometimes micro-services would expose and API that is consumed by other micro-services or by the application's clients. &lt;/p&gt;

&lt;p&gt;At runtime, each instance is often a cloud virtual machine(VM) or a Docker container.&lt;/p&gt;

&lt;p&gt;Lets take the same example we got earlier. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frf9kfyh7ksnkp55m1i6a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frf9kfyh7ksnkp55m1i6a.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Since the micro services are separated applications, we can modify, and add new features without affecting other applications. We don't need to test other applications. But in product testing it might be overhead.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We can scale up selected micro services at demand. So it does not need much resources for unnecessary applications. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Since we can run multiple instances, we can have much availability. Imagine one instance fails due to some reason. But we have another instance up and running. So with this approach we can have better availability and reliability with this approach.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
&lt;li&gt;With this hexagonal architecture, we can use this component in any applications. These micro-services are more oriented on their task. So a new developer can easily adapt to working on a micro service, since he does not need to know about the whole application idea.

&lt;/li&gt;
&lt;/ul&gt;



&lt;h4&gt;
  
  
  Characteristics of Micro-services Architecture
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Decentralized&lt;br&gt;
Micro-services architectures are distributed systems with decentralized data management. They do not rely on a unifying schema in a central database.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Polyglot&lt;br&gt;
Micro-services architecture take a heterogeneous approach to operating systems, programming languages, data stores and tools.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do one thing well&lt;br&gt;
Each micro-service component it designed for a set of capabilities and focuses on a specific domain.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You build it, you run it&lt;br&gt;
The team responsible for building a service is also responsible for operating and maintaining it in production.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Black Box&lt;br&gt;
They hide the details of their complexity from other components.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Independent&lt;br&gt;
Different components in a micro-services architecture can be changed, upgraded or replaced independently without affecting the functioning of other components.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h4&gt;
  
  
  Advantages of Micro-Services Architecture
&lt;/h4&gt;

&lt;p&gt;Enables the continuous delivery and deployment of large, complex applications and enables to organize the development effort around multiple, auto teams.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better test-ability - services are smaller and faster to test&lt;/li&gt;
&lt;li&gt;Better deploy-ability - services can be deployed independently&lt;/li&gt;
&lt;li&gt;Agility&lt;/li&gt;
&lt;li&gt;Flexible scaling&lt;/li&gt;
&lt;li&gt;Easy deployment&lt;/li&gt;
&lt;li&gt;Technological freedom&lt;/li&gt;
&lt;li&gt;Reusable code&lt;/li&gt;
&lt;li&gt;Resilience

&lt;/li&gt;
&lt;/ul&gt;



&lt;h4&gt;
  
  
  Drawbacks of Micro-Services Architecture
&lt;/h4&gt;

&lt;p&gt;Developers must deal with the additional complexity of creating a distributed application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developer tools/ IDEs are oriented on building monolithic applications.&lt;/li&gt;
&lt;li&gt;Developers must implement the inter service communication mechanism.&lt;/li&gt;
&lt;li&gt;Implementing distributed transactions is difficult.&lt;/li&gt;
&lt;li&gt;Implementing use cases that span multiple services requires careful coordination between the teams.&lt;/li&gt;
&lt;li&gt;Testing is more difficult&lt;/li&gt;
&lt;li&gt;More deployment complexity.&lt;/li&gt;
&lt;li&gt;In production, there is also the operational complexity of deploying and managing a system comprised of many different service types.&lt;/li&gt;
&lt;li&gt;Increased memory consumption.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
Resources:&lt;br&gt;
Introduction to microservices  by Ashish Pandey&lt;br&gt;
&lt;a href="https://www.udemy.com/course/introduction-to-microservices-edyoda/" rel="noopener noreferrer"&gt;https://www.udemy.com/course/introduction-to-microservices-edyoda/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>monolithic</category>
      <category>architecture</category>
    </item>
    <item>
      <title>How to find and do work that you love (Ikigai)</title>
      <dc:creator>Pasindu Chinthana</dc:creator>
      <pubDate>Sun, 30 May 2021 18:09:10 +0000</pubDate>
      <link>https://dev.to/edpchinthana/how-to-find-and-do-work-that-you-love-ikigai-5a3b</link>
      <guid>https://dev.to/edpchinthana/how-to-find-and-do-work-that-you-love-ikigai-5a3b</guid>
      <description>&lt;p&gt;This article is based on a lecture delivered by dr. Nayanapriya Gunawardhana, former general manager, supply chain excellence, Brandix, Sri Lanka. It was about work for a mission-powered by passion and was organized by Software Engineering Teaching Unit, University of Kelaniya.&lt;/p&gt;

&lt;h4&gt;
  
  
  Ikigai - Reason for being
&lt;/h4&gt;

&lt;p&gt;Ikigai is a Japanese concept of having a direction or purpose of you live for or your reason for being. The work consists of 'iki'('to live') and 'gai'('reason').&lt;/p&gt;

&lt;p&gt;The opportunity to do what you love is a dream come true for many of us. But this doesn't have to be just a dream through the Ikigai exercise, we can be our own guideline to become dream true in our everyday life.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JgGUNVLl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p803e34ii7c5o4p070qj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JgGUNVLl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p803e34ii7c5o4p070qj.png" alt="Alt Text" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Those circles are overlapped at the middle. If you have something that belongs to every circle, that would be your reason for being.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What do you love?&lt;/strong&gt;&lt;br&gt;
This section includes what we do or experience that brings us the most joy in life and makes us feel more alive and fulfilled. What is important is that we allow ourselves to think deeply about what we love, without any concern for whether we are good at it, whether the world needs it, or if we can get paid for doing it.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What are you good at?&lt;/strong&gt;&lt;br&gt;
This section includes anything that we are particularly good at, such as skills we have learned, hobbies we have pursued, talents we have shown since an early age. This only concerns talents and capabilities, whether or not we are passionate about them, whether world needs them or if we can get paid for them.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What skills are in demand that you can get paid for?&lt;/strong&gt;&lt;br&gt;
This dimension refers to the skills what someone else is willing to pay us for. Whether we can get paid for our passions or talents depends on factors such as the state of the economy, whether our passions or talents are in demand etc.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What does the world need right now?&lt;/strong&gt;&lt;br&gt;
The 'world' here might be humanity as a whole, a small community you are in touch with, or anything in between. What the world needs might be based on your impressions or needs expressed by others.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GsAcH-VD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/10qloofow85pwm98ckpc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GsAcH-VD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/10qloofow85pwm98ckpc.jpg" alt="Alt Text" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cyber security &amp; Ethical hacking</title>
      <dc:creator>Pasindu Chinthana</dc:creator>
      <pubDate>Sun, 30 May 2021 13:27:43 +0000</pubDate>
      <link>https://dev.to/edpchinthana/cyber-security-ethical-hacking-5aek</link>
      <guid>https://dev.to/edpchinthana/cyber-security-ethical-hacking-5aek</guid>
      <description>&lt;p&gt;This article is based on a lecture, Introduction to Cyber Security which has been delivered by Dr. Harsha Kalutarage, guest lecturer - University of Kelaniya. It was organized by Software Engineering Teaching Unit - University of Kelaniya, Sri Lanka.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cyber Security
&lt;/h3&gt;

&lt;p&gt;Nowadays, with the rapid development in technology and usage of computer systems, it has been a massive challenge in protecting digital data, privacy information like banking details, medical reports, etc.&lt;br&gt;
Cyber security and technologies are developed to prevent cyber attacks and create a safe environment for users.&lt;/p&gt;

&lt;p&gt;There are guidelines or models developed to highlight core data security objectives and serve as a guide for organizations to keep their sensitive data protected from unauthorized access and data ex-filtration.&lt;br&gt;
Ex: &lt;strong&gt;CIA Triad&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kS7BnRT2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2cf6lrit274kyrfvqh00.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kS7BnRT2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2cf6lrit274kyrfvqh00.png" alt="Alt Text" width="800" height="595"&gt;&lt;/a&gt;&lt;br&gt;
CIA is an acronym for,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Confidentiality&lt;/strong&gt; ensures that information is accessible only by authorized individuals&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrity&lt;/strong&gt; ensures that information is reliable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Availability&lt;/strong&gt; ensures that data is available and accessible to satisfy business needs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are the most crucial components of security. Various security controls are applied to achieve these goals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access Control&lt;/strong&gt;&lt;br&gt;
Access control is the process of identifying a subject and determining their level of access to an object. Subject is the one who try to access. It can be a user, a program or a process. Object is the entity that is going to be accessed. It can be a file, program.&lt;/p&gt;

&lt;p&gt;There are three access control types.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Physical - prevent unauthorized physically access.&lt;/li&gt;
&lt;li&gt;Logical - prevent unauthorized electronic access&lt;/li&gt;
&lt;li&gt;Administrative - access control policies, procedures and guidelines&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Modern access control systems are designed combining all these three types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logical Access Control&lt;/strong&gt;&lt;br&gt;
These mechanisms are used to prevent unauthorized electronic access(virtual access) to objects. Identification, authentication, authorization, accountability mechanisms are used here. These process enforce an access control policy over subjects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intruder Behavior&lt;/strong&gt;&lt;br&gt;
An intruder is someone who penetrates system's access controls to gain unauthorized access to a target system. They identify vulnerabilities of a system and attack.&lt;/p&gt;

&lt;p&gt;These intruders can be motivated by various purposes like profit, protest, information gathering, challenges. These intruders or hackers can be categorized according to their purposes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Black hat hackers&lt;br&gt;
Those are the individuals who illegally hack into a system for monetary gain.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;White hat hackers&lt;br&gt;
Those are the individuals who explain the system's vulnerabilities by hacking into it with permission, to defend the organization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Grey hat hackers&lt;br&gt;
Those hackers discover vulnerabilities in the system and report it to the owner of the system, but they do this without seeking owner's approval.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Intruder Detection&lt;/strong&gt;&lt;br&gt;
Intruder detection can be done by monitoring activities based on misuse of signature or anomaly behaviors. This can be done manually or using machine learning techniques. &lt;/p&gt;

&lt;h3&gt;
  
  
  Ethical Hacking
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dY-LLg68--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zalb5mgd28i8pkarl7y4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dY-LLg68--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zalb5mgd28i8pkarl7y4.jpg" alt="Alt Text" width="800" height="436"&gt;&lt;/a&gt;&lt;br&gt;
Ethical hacking, also known as white hat or penetration testing or pen testing, is legally breaking into computers and devices to test an organization's defenses. Ethical hacking is used to improve the security of the systems and networks by fixing the vulnerability found while testing.&lt;/p&gt;

&lt;p&gt;Ethical hackers improve the security posture of an organization. Ethical hackers use the same tools, tricks and techniques that malicious hackers used, but with the permission of the authorized person. The purpose of ethical hacking is to improve the security and to defend the systems from attacks by malicious users.&lt;/p&gt;

&lt;p&gt;These techniques can be divided as following categories,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Network hacking&lt;br&gt;
Network hacking means gathering information about a network with the intent to harm the network system and hamper its operations using the various tools like telnet, NS lookup, Ping, Tracert etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Website hacking&lt;br&gt;
Website hacking means taking unauthorized access over a web server, database and make a change in information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Computer hacking&lt;br&gt;
Computer hacking means unauthorized access to the computer and steals the information from PC like computer id and password by applying hacking methods.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Password hacking&lt;br&gt;
Password hacking is the process of recovering secret password from data that has been already stored in the computer system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Email hacking&lt;br&gt;
Email hacking means unauthorized access on an email account and using it without the owners's permission.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Industry Expectations &amp; Professionalism</title>
      <dc:creator>Pasindu Chinthana</dc:creator>
      <pubDate>Fri, 28 May 2021 15:12:22 +0000</pubDate>
      <link>https://dev.to/edpchinthana/industry-expectations-professionalism-49p7</link>
      <guid>https://dev.to/edpchinthana/industry-expectations-professionalism-49p7</guid>
      <description>&lt;p&gt;This article is based on a lecture which has been delivered by Mr. Roshen Warnacula, team lead - talent acquisition at Sysco Labs. It was organized by Software Engineering Teaching Unit - University of Kelaniya, Sri Lanka.&lt;/p&gt;

&lt;h2&gt;
  
  
  Professionalism
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YpVx_s97--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hnvnhtt6hw34mybm85a1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YpVx_s97--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hnvnhtt6hw34mybm85a1.jpg" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The skill, good judgment, and polite behavior that is expected from a person who is trained to do a job well” &lt;br&gt;
Merrium-Webster, n.d.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Professionalism is about having strong skills and competence in the field, qualities and behaviors how a person exhibits, how a person conducts himself during business affairs.&lt;/p&gt;

&lt;p&gt;In here professionalism will be explained under 10 key points.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Appearance
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A professional is always neatly dressed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He will always try to maintain with the company's dress code and should pay special attention when representing the company in front of external clients and stakeholders.&lt;/p&gt;

&lt;p&gt;Maintaining good appearance helps to build up a good impression about the person in others.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Demeanor
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Reflect confidence, but not cockiness&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A professional should be polite and well-spoken even when interacting with customers, superiors or co-workers. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Reliability
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Be counted on to find a way to get the job done.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A professional should respond to people promptly and follow through on promises in a timely manner. And he should clarify everything, especially when things change, to make sure the team is also in the same page.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Competence
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Strive to become an expert in the career path.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A professional should continue education by taking courses, attending seminars and obtaining related educational and professional qualifications through out the career life.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Ethics
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;All professionals must adhere to a strict code of ethics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even if the company does not have a written code, a professional should always ethical behavior. There are professional bodies out there to protect the professional community with well defined code of ethics.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Maintaining the poise in every situation
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;A professional must maintain his/her poise even when facing a difficult situation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A professional should be able to work calm and in structured manner even he is challenged or questioned. &lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  7. Phone Etiquette
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Phone etiquette is also an important component of professional behavior&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When placing an official call, a professional should explain himself at first by his name, company and designation. He should not dominate the conversation, should listen pay attention to what the other party is saying.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  8. Written correspondence
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;During written or email correspondence, should keep emails brief and to the point.&lt;/strong&gt;&lt;br&gt;
A professional should you polite and formal tone while keeping email and written communications. As example, capital letters should not used in emails no matter how frustrated situation is. It might imply shouting or forcing about the matter.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  9. Organizational Skills
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;A professional can quickly and easily find what is needed.&lt;/strong&gt;&lt;br&gt;
A professional should keep his work well prepared and organized. When attending a meeting or presentation, he should well prepared and take what is necessary. Even he should maintain his work area neat and organized.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  10. Accountability
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Always be accountable for your actions&lt;/strong&gt;&lt;br&gt;
If a professional makes a mistake, he should own up to it and try to fix it if possible. And he should not try to place the blame on a colleague.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Industry Expectations
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rWRIgVYO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sda2arse6t9x9wtruhth.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rWRIgVYO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sda2arse6t9x9wtruhth.jpg" alt="Alt Text" width="800" height="527"&gt;&lt;/a&gt;&lt;br&gt;
Here I will discuss the things which companies expecting from candidates under few key points.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Communication skills&lt;br&gt;
Communication is the key. not only verbal also the written communications skills are required. No matter how good at a technology, if he cannot do communications properly, it does not help the company to achieve its goals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Innovative thinking&lt;br&gt;
Companies look for individuals who can go beyond the expectation and who can add more value to the company and produce innovative solutions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ability to lead&lt;br&gt;
Companies look for employees who can work in a team and step up and drive the team in difficult times. They expect to find out employees who might be suitable for top ranks in future.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Positive outlook&lt;br&gt;
The workplace is an environment full of challenges and obstacles. Those with a positive outlook will find it much easier to survive and thrive than those without.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Versatility&lt;br&gt;
In order to have the maximum impact, companies looking for people who can play multiple roles within the team.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Willingness to learn&lt;br&gt;
Technologies and tools used in companies might get changed time to time. There is no one to teach those and get employees get updated. So companies look for individuals who are willing to learn new technologies and get adopted by their selves.&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;
These are the things, an undergraduate or an individual who is willing to enter the industry should have or should practice. If you feel you do not have those qualities, there are organizations like toastmasters, online courses, training programs to improve those qualities.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FN4ded9R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rwej9j0xl9e7n6xn6xi2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FN4ded9R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rwej9j0xl9e7n6xn6xi2.jpg" alt="Alt Text" width="550" height="285"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Test Automation</title>
      <dc:creator>Pasindu Chinthana</dc:creator>
      <pubDate>Thu, 21 Jan 2021 06:32:50 +0000</pubDate>
      <link>https://dev.to/edpchinthana/test-automation-1m69</link>
      <guid>https://dev.to/edpchinthana/test-automation-1m69</guid>
      <description>&lt;p&gt;Software testing is the process of evaluating the actual software product meets expected requirements and ensuring that the software product is defect-free.&lt;/p&gt;

&lt;p&gt;Test automation is using tools to do repetitive testing tasks to reduce human intervention and achieve higher effectiveness. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Benefits of Test Automation&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Speedup test execution&lt;br&gt;
For example, to test a single API call by a human might take few minutes but with automation, it can be done in seconds likewise it is faster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoids human errors&lt;br&gt;
Machines are less error-prone. So we can reach high accuracy with these repetitive tasks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unattended execution&lt;br&gt;
Large test cases can be run even at night without humans&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Test what manually impossible&lt;br&gt;
For example, testing a function with 1000 inputs manually is quite impossible. But with automation, we can do it easily.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Less cost&lt;br&gt;
Automation tools are cheaper than humans.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Types of Automated Testing&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oiXr5NLV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/24x2qp86qekyrpi4pci5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oiXr5NLV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/24x2qp86qekyrpi4pci5.png" alt="Alt Text" width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the software testing process unit testing covers a large portion. So it lies on the bottom of the pyramid. Then automated component tests, automated integration tests, automated API tests, automated e2e tests lie on the pyramid. &lt;/p&gt;

&lt;p&gt;Manual exploratory tests cannot be automated. Those tests are done by testers with experience in the system. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Available Tools and Technologies for Test Automation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AIQLyz-F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/wa722o6k2w48usuv46pu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AIQLyz-F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/wa722o6k2w48usuv46pu.png" alt="Alt Text" width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Test Automation Frameworks&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Test Automation framework is a supporting structure with rules, guidelines tools to automate the testing process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linear Automation Framework&lt;/li&gt;
&lt;li&gt;Modular Based Testing Framework&lt;/li&gt;
&lt;li&gt;Library Architecture Testing Framework&lt;/li&gt;
&lt;li&gt;Data-Driven Framework&lt;/li&gt;
&lt;li&gt;Keyword-Driven Framework&lt;/li&gt;
&lt;li&gt;Hybrid Testing Framework&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Advantages of Using a Test Automation Framework&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Increase reusability&lt;/li&gt;
&lt;li&gt;Increase maintainability&lt;/li&gt;
&lt;li&gt;Reduce complexity&lt;/li&gt;
&lt;li&gt;Improved reporting&lt;/li&gt;
&lt;li&gt;Improves error handling&lt;/li&gt;
&lt;li&gt;Improved productivity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To gain the maximum benefits of using a test automation framework, we should define the scope of automation and we should select the right automation tool and framework. For this, we should have a better understanding of the testing pyramid. And we should follow standard scripting standards and also we should consider the team's preference based on their experience.&lt;/p&gt;

</description>
      <category>testing</category>
    </item>
    <item>
      <title>Universal Design for Interactive Systems</title>
      <dc:creator>Pasindu Chinthana</dc:creator>
      <pubDate>Sun, 27 Dec 2020 13:54:27 +0000</pubDate>
      <link>https://dev.to/edpchinthana/universal-design-for-interactive-systems-1l9a</link>
      <guid>https://dev.to/edpchinthana/universal-design-for-interactive-systems-1l9a</guid>
      <description>&lt;p&gt;It is very important to design the system for users considering human abilities and requirements. But people have different abilities, weaknesses, they come from different backgrounds and cultures, they have different interests, viewpoints, experiences, ages, and sizes. So we should consider all these facts when designing an interactive system.&lt;/p&gt;

&lt;p&gt;Universal design is the process of designing products so that they can be used by as many people as possible in as many situations as possible. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Universal Design Principles&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The universal design may seem like a huge task, but it should not become complex or costly. There are seven universal design principles.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Equitable&lt;br&gt;
No user should be excluded, access to the system should be available to users with any abilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Flexibility&lt;br&gt;
The design should allow for a range of abilities and preferences to adapt to the user's pace.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simple and intuitive&lt;br&gt;
The system should be simple regardless of the knowledge, experience, language, or level of concentration of the user.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Perceptible information&lt;br&gt;
The design should provide effective communication of information regardless of the environmental conditions or the user’s abilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tolerance for error&lt;br&gt;
The system should be designed to minimize the impact and damage caused by mistakes or unintended behavior.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Low physical effort&lt;br&gt;
The system should be designed to be comfortable to use, minimizing physical effort and fatigue.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Size and space for approach and use&lt;br&gt;
The placement of the system should be such that it can be reached and used by any user regardless of body size, posture, or mobility. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Multi-Modal Interaction&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;According to universal design principles, providing access through more than one mode of interaction is important. So good universal design relies on multi-modal interaction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sound in the interface&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sound is an important contributor to usability. There is experimental evidence to suggest that the addition of audio confirmation of modes, in the form of changes in keyclicks, reduces errors. Sound can convey transient information and does not take up screen space, making it potentially useful for mobile applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Touch in the interface&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The use of touch in the interface is known as haptic interaction. but it can be roughly divided into two areas: cutaneous perception, which is concerned with tactile sensations through the skin; and kinesthetics, which is the perception of movement and position. Both are useful in interaction but they require different technologies.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Handwriting recognition&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a very natural form of communication like speech. With handwriting recognition, we can input both textual and graphical input using the same tool. There were problems with the use of handwriting as an input medium. however, there are several mechanisms to capture handwriting. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gesture recognition&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Being able to control the computer with certain movements of the hand would be advantageous in many situations where there is no possibility of typing, or when other senses are fully occupied. It could also support communication for people who have hearing loss, if signing could be translated into speech or vice versa. But, like speech, the gesture is user-dependent, subject to variation, and co-articulation. The technology for capturing gestures is expensive.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Designing for diversity&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Interactive systems are usually designed to cater to the average user, but unfortunately, this may exclude people who are not average. People are diverse and there are many factors that must be taken into account if we are to come close to universal design.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Designing for users with disabilities&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is estimated that at least 10% of the population of every country has a disability that will affect interaction with computers. Using screen readers, gesture input, voice recognition we can provide access to the system to people even has disabilities.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Designing for different age groups&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In society, we can see older people and children have specific needs when it comes to interactive technology. Goals, likes, and dislikes have differed when we compare adults and children. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Designing for cultural differences&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cultural difference is often used synonymously with national differences but this is too simplistic. Whilst there are clearly important national cultural differences, such as age, gender, race, sexuality, class, religion, and political persuasion, may all influence an individual’s response to a system. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ngVRD8Qj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/h31n6eyhqxgclk9vfq7r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ngVRD8Qj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/h31n6eyhqxgclk9vfq7r.png" alt="Alt Text" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Evaluation Techniques for Interactive System</title>
      <dc:creator>Pasindu Chinthana</dc:creator>
      <pubDate>Sun, 27 Dec 2020 05:45:59 +0000</pubDate>
      <link>https://dev.to/edpchinthana/evaluation-techniques-for-interactive-system-3cge</link>
      <guid>https://dev.to/edpchinthana/evaluation-techniques-for-interactive-system-3cge</guid>
      <description>&lt;h3&gt;
  
  
  &lt;strong&gt;What is Evaluation?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Evaluation is the process we use to assess our system to ensure it behaves as expected in the user requirement. This process not only happens after development, we should use this throughout the development process. Ideally, evaluation should occur throughout the design life cycle, with the results of the evaluation feeding back into modifications to the design.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Goals of Evaluation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The evaluation has three main goals,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Assess the extent and accessibility of the system's functionality&lt;/strong&gt;&lt;br&gt;
Design of the system should enable users to perform their intended tasks more easily, this is not only about appropriate functionality available in the system but making it clearly reachable by the users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Assess user's experience of the interaction&lt;/strong&gt;&lt;br&gt;
This includes assessing how easy the system is to learn, its usability, and the user's satisfaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Identify any specific problems with the system&lt;/strong&gt;&lt;br&gt;
These may be aspects of the design which, when used in their intended context, cause unexpected results, or confusion amongst users. It is specifically concerned with identifying trouble-spots which can then be rectified.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Evaluation through expert analysis&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We can collaborate with users to evaluate our design at every stage. But it is more expensive and time-consuming. And also it is less effective when evaluating half-developed designs with users. &lt;/p&gt;

&lt;p&gt;So we can involve experts (designers, human factor experts,..) to assess the design upholds accepted usability principles. &lt;/p&gt;

&lt;p&gt;We can achieve this expert analysis evaluation in three different approaches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Cognitive walkthroughs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a usability evaluation method in which one or more evaluators work through a series of tasks and ask a set of questions from the perspective of the user.&lt;/p&gt;

&lt;p&gt;This process will need,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A specification or prototype of the system&lt;/li&gt;
&lt;li&gt;A description of the task the user is to perform&lt;/li&gt;
&lt;li&gt;A complete, written list of the actions needed to complete&lt;/li&gt;
&lt;li&gt;An indication of who the users are&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Given this information, the evaluators step through the action sequence to critique the system and tell a believable story about its usability.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is the effect of the action the same as the user's goal at that point?&lt;/li&gt;
&lt;li&gt;Will users see that the action is available?&lt;/li&gt;
&lt;li&gt;Once users have found the correct action, will they know it is the one they need?&lt;/li&gt;
&lt;li&gt;After the action is taken, will users understand the feedback they get?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Evaluators will keep records during the cognitive walkthrough of that is food and what needs improvement in the design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Heuristic evaluation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Heuristic evaluation is that several evaluators independently critique a system to come up with potential usability problems.&lt;/p&gt;

&lt;p&gt;We can use the following Nielsen's ten heuristics to assess the design of the system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visibility of system status&lt;/li&gt;
&lt;li&gt;Match between system and the real world&lt;/li&gt;
&lt;li&gt;User control and freedom&lt;/li&gt;
&lt;li&gt;Consistency and standards&lt;/li&gt;
&lt;li&gt;Error prevention&lt;/li&gt;
&lt;li&gt;Recognition rather than recall&lt;/li&gt;
&lt;li&gt;Flexibility and efficiency of use&lt;/li&gt;
&lt;li&gt;Aesthetic and minimalist design&lt;/li&gt;
&lt;li&gt;Help users recognize, diagnose and recover from errors&lt;/li&gt;
&lt;li&gt;Help and documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Model-based evaluation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Model-based evaluation is combining cognitive and design models to the evaluation process.&lt;/p&gt;

&lt;p&gt;Examples,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GOMS model&lt;/li&gt;
&lt;li&gt;Keystroke-level model&lt;/li&gt;
&lt;li&gt;Design rationale&lt;/li&gt;
&lt;li&gt;Dialog models&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Evaluation through user participation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zkjo5LxU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/uxbyen0qconuqehzrx2p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zkjo5LxU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/uxbyen0qconuqehzrx2p.png" alt="Evaluation through user participation" width="754" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Evaluation through expert analysis is useful for filtering and refining the design, but it is not a replacement for actual usability testing with the people for whom the system is intended.&lt;/p&gt;

&lt;p&gt;User participation in evaluation tends to occur in the later stages of development when there is at least a working prototype of the system in place. This may range from a simulation of the system’s interactive capabilities, without its underlying functionality.&lt;/p&gt;

&lt;p&gt;We can use empirical or experimental methods, observational methods, query techniques, and physiological monitoring methods to conduct evaluations with user participation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Styles of evaluation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before considering the evaluation techniques, we will distinguish two distinct evaluation styles.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Evaluation performed under laboratory conditions&lt;/li&gt;
&lt;li&gt;Evaluation performed in the work environment&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Empirical methods: experimental evaluation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the most powerful methods of evaluating a design or an aspect of a design is to use a controlled experiment. This provides empirical evidence to support a particular claim or hypothesis. It can be used to study a wide range of different issues at different levels of detail.&lt;/p&gt;

&lt;p&gt;Any experiment has the same basic form. The evaluator chooses a hypothesis to test, which can be determined by measuring some attribute of participant behavior. A number of experimental conditions are considered which differ only in the values of certain controlled variables. Any changes in the behavioral measures are attributed to the different conditions. Within this basic form, there are a number of factors that are important to the overall reliability of the experiment, which must be considered carefully in experimental design. These include the participants chosen, the variables tested and manipulated, and the hypothesis tested.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observational techniques&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A popular way to gather information about the actual use of a system is to observe users interacting with it. Usually, they are asked to complete a set of predetermined tasks, although, if the observation is being carried out in their place of work, they may be observed going about their normal duties. The evaluator watches and records the users’ actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Query techniques&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Another set of evaluation techniques relies on asking the user about the interface directly. Query techniques can be useful in eliciting detail of the user’s view of a system. They embody the philosophy that states that the best way to find out how a system meets user requirements is to ‘ask the user’. They can be used in the evaluation and more widely to collect information about user requirements and tasks. The advantage of such methods is that they get the user’s viewpoint directly and may reveal issues that have not been considered by the designer. In addition, they are relatively simple and cheap to administer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--z4setEHq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/hce4zv4kzdzw9wgfnhzp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--z4setEHq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/hce4zv4kzdzw9wgfnhzp.png" alt="Alt Text" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>design</category>
      <category>ux</category>
      <category>systems</category>
    </item>
    <item>
      <title>Design rules for Interactive Systems</title>
      <dc:creator>Pasindu Chinthana</dc:creator>
      <pubDate>Sat, 26 Dec 2020 11:55:42 +0000</pubDate>
      <link>https://dev.to/edpchinthana/design-rules-for-interactive-systems-o2c</link>
      <guid>https://dev.to/edpchinthana/design-rules-for-interactive-systems-o2c</guid>
      <description>&lt;p&gt;Good user experience is one of the most important characteristics of successful software. So designers must have the ability to determine the usability consequences of their design decisions. &lt;/p&gt;

&lt;p&gt;So there are defined design rules or principles which designers can follow to increase the usability of their product. &lt;/p&gt;

&lt;p&gt;We can divide these rules into two categories by the rule's authority and generality. Principles are abstract design rules, with high generality and low authority. Standards are specific design rules with high authority and limited in applications. &lt;/p&gt;

&lt;p&gt;Here authority means an indication of whether or not the rule must be followed in design or whether it is only suggested. Generality means whether the rule can be applied to many design situations or whether it is focussed on a more limited application.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Principles to support usability&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We can divide these principles into three categories. Learnability, Flexibility, and Robustness. &lt;/p&gt;

&lt;h4&gt;
  
  
  Learnability
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;The ease with which new users can begin effective interaction and achieve maximum performance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Predictability&lt;/strong&gt; - Support for the user to determine the effect of future action based on past interaction history&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Synthesizability&lt;/strong&gt; - Support for the user to assess the effect of past operations on the current state&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Familiarity&lt;/strong&gt; - The extent to which a user's knowledge and experience in other real-world or computer-based domains can be applied when interacting with a new system&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Generalizability&lt;/strong&gt; - Support for the user to extend knowledge of specific interaction within and across applications to other similar situations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consistency&lt;/strong&gt; - Likeness in input-output behavior arising from similar situations or similar task objectives&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Flexibility
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;The multiplicity of ways in which the user and system exchange information&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dialog initiative&lt;/strong&gt; - Allowing the user freedom from artificial constraints on the input dialog imposed by the system&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-threading&lt;/strong&gt; - Ability of the system to support user interaction pertaining to more than one task at a time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Task migratability&lt;/strong&gt; - The ability to pass control for the execution of a given task so that it becomes either internalized by the user or the system or shared between them&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Substutivity&lt;/strong&gt; - Allowing equivalent values of input and output to be arbitrarily substituted for each other&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Customizability&lt;/strong&gt; - Modifiability of the user interface by the user or the system&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Robustness
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;The level of support provided to the user in determining successful achievement and assessment of goals&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Obersarvability&lt;/strong&gt; - Ability of the user to evaluate the internal state of the system from its perceivable representation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Recoverability&lt;/strong&gt; - Ability of the user to take corrective action once an error has been recognized&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Responsiveness&lt;/strong&gt; - How the user perceives the rate of communication with the system&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Task conformance&lt;/strong&gt; - The degree to which the system services support all of the tasks the user wishes to perform and in the way that the user understands them&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Standards and Guidelines for Interactive systems&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Standards are usually defined by national or international organizations to ensure compliance with a set of design rules by a large community. Standards can apply specifically to either the hardware or the software used to build the interactive system.&lt;/p&gt;

&lt;p&gt;Since the incompleteness of theories underlying the design of interactive software makes it difficult to produce authoritative and specific standards. So the majority of design rules are suggestive and more general guidelines.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Shneiderman's 8 Golden Rules&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Shneiderman's eight golden rules provide a convenient and succinct summary of the key principles of interface design. They are intended to be used during design but can also be applied for evaluation of the systems.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Strive for consistency&lt;/strong&gt;&lt;br&gt;
Maintain consistency in action sequences, layout, terminology, command use, and so on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enable frequent users to use shortcuts&lt;/strong&gt;&lt;br&gt;
Introduce abbreviations, special key sequences to perform regular and familiar actions more quickly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Offer informative feedback&lt;/strong&gt;&lt;br&gt;
Provide informative feedback for every user action according to the magnitude of the action.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Design dialogs to yield the closure&lt;/strong&gt;&lt;br&gt;
So the users won't be confused about whether their action was successful or not.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Offer error prevention and simple error handling&lt;/strong&gt;&lt;br&gt;
Give clear instructions to users so they won't do mistakes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Permit easy reversal of actions&lt;/strong&gt;&lt;br&gt;
This encourages users to explore the system and learn fast, with this, users know they can return to the previous state if they do a mistake.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Support internal locus of control&lt;/strong&gt;&lt;br&gt;
So the user is in control of the system, which responded to his actions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reduce short-term memory load&lt;/strong&gt;&lt;br&gt;
This can be done by keeping displays simple, consolidating multiple-page displays, and providing time for learning action sequences.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Norman’s Seven Principles&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Use both knowledges in the world and knowledge in the head&lt;/strong&gt;&lt;br&gt;
Systems should provide the necessary knowledge within the environment and their operation should be transparent to support the user in building an appropriate mental model of what is going on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Simplify the structure of tasks.&lt;/strong&gt;&lt;br&gt;
Tasks need to be simple in order to avoid complex problem solving and excessive memory load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Make things visible&lt;/strong&gt;&lt;br&gt;
The interface should make clear what the system can do and how this is achieved and should enable the user to see clearly the effect of their actions on the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Get the mappings right&lt;/strong&gt;&lt;br&gt;
it should be clear what does what and by how much. Controls, sliders, and dials should reflect the task so a small movement has a small effect and a large movement a large effect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Exploit the power of constraints&lt;/strong&gt;&lt;br&gt;
Constraints are things in the world that make it impossible to do anything but the correct action in the correct way. So using constraints can minimalize user mistakes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Design for error&lt;/strong&gt;&lt;br&gt;
To err is human, so anticipate the errors the user could make and design recovery into the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. When all else fails, standardize&lt;/strong&gt;&lt;br&gt;
If there are no natural mappings then arbitrary mappings should be standardized so that users only have to learn them once. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--caVxuJQv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/07ce45ssb008awfeg2e4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--caVxuJQv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/07ce45ssb008awfeg2e4.jpg" alt="Alt Text" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>design</category>
      <category>ux</category>
    </item>
    <item>
      <title>Software Development Life Cycle Methodologies</title>
      <dc:creator>Pasindu Chinthana</dc:creator>
      <pubDate>Thu, 03 Dec 2020 16:57:17 +0000</pubDate>
      <link>https://dev.to/edpchinthana/software-development-life-cycle-methodologies-3oj0</link>
      <guid>https://dev.to/edpchinthana/software-development-life-cycle-methodologies-3oj0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Software Development Life Cycle (SDLC)&lt;/strong&gt; is a process that is used to implement complex software systems. The goal of using SDLC is to produce high-quality software that meets customer expectations within a minimum time and cost. This approach is well defined and being used by almost every software development company.&lt;/p&gt;

&lt;p&gt;Basically, SDLC consists of 6 phases. The cycle is completed iterating through these phases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4Sy4GD1A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/2t5iactlx0zb0m3e10ar.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4Sy4GD1A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/2t5iactlx0zb0m3e10ar.jpeg" alt="Software Development Life Cycle" width="553" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage 1 — Planning
&lt;/h4&gt;

&lt;p&gt;Requirement gathering and feasibility studies will be conducted in this stage by senior members of the team.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage 2 — Defining
&lt;/h4&gt;

&lt;p&gt;Product requirements will be clearly defined and documented in this stage. And this Software Requirement Specification (SRS) will be presented to the customer and get them approved.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage 3 — Designing
&lt;/h4&gt;

&lt;p&gt;Product architecture for the proposed product will be designed in this stage based on the SRS. Then the Design Document Specification (DDS) will be created.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage 4 — Building
&lt;/h4&gt;

&lt;p&gt;Actual development will be started at the stage. Developers will implement the system according to the DDS.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage 5 — Testing
&lt;/h4&gt;

&lt;p&gt;The developed product will be tested to check whether it meets the customer’s requirement and bugs and defects will be found and fixed in the program in this stage.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stage 6 — Deployment
&lt;/h4&gt;

&lt;p&gt;The tested product will be released to the market and maintenance will be done.&lt;/p&gt;

&lt;p&gt;After the deployment stage, customer feedback will be collected and the above cycle will be repeated for further releases.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;SDLC Methodologies&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are various SDLC models defined and designed based on SDLC. A few of them will be discussed here.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Waterfall Model
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lI8fI0MH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/2sqry6hqhvaiekql1txp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lI8fI0MH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/2sqry6hqhvaiekql1txp.png" alt="Waterfall Methodology" width="600" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The waterfall model is the oldest SDLC model. This takes a linear structure the system requirements should be defined at the start and they cannot be changed during the process. Once the development is complete, the product will be tested against the initial requirements.&lt;/p&gt;

&lt;p&gt;Present software development companies tend not to use this model since complex software systems need a more flexible development process. Once an application is in the testing stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Agile
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DKZAvLH4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/sf1uo5p9uwdhbrd36eau.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DKZAvLH4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/sf1uo5p9uwdhbrd36eau.jpeg" alt="Agile Methodology" width="700" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This model is used in most organizations not only in the IT industry because agile methodology can be applied for other types of projects also. This approach produces ongoing release cycles with small, incremental changes from the previous release. The product is tested in each cycle. This method helps to find issues in the product early.&lt;/p&gt;

&lt;p&gt;Many software development teams apply &lt;strong&gt;scrum&lt;/strong&gt;, implementation of the agile framework for complex software systems.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Spiral Model
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mHgUAkRc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/z5um5tr12n48pb91t4oa.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mHgUAkRc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/z5um5tr12n48pb91t4oa.jpeg" alt="Spiral Methodology" width="433" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The spiral methodology allows the adoption of multiple SDLC models based on the risk patterns of the project. Projects that do not have clear requirements or expect major requirement changes during the development process can benefit from the scalability of this methodology. But the challenge is knowing when is the right moment to move on to the next phase with this model.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. V Model
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gp5SWQxz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/xsb4yt04np69hjr7eh5z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gp5SWQxz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/xsb4yt04np69hjr7eh5z.png" alt="V Model" width="500" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;V-Model is developed from the classic waterfall methodology. This model has a very strict approach, the next phase begins after the previous phase is completed. Since this lack of flexibility and higher-risk, this method is not suitable for complex software systems. But this is a good choice for projects whose requirements are clearly stated and static since the V model is easier to manage and control.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Choosing the best SDLC Model&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There is no best SDLC Model for all kinds of projects. This depends on several aspects.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The complexity of the requirements&lt;/li&gt;
&lt;li&gt;Project duration&lt;/li&gt;
&lt;li&gt;Stakeholders concerns and priorities&lt;/li&gt;
&lt;li&gt;The development team and their skills&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
