{"id":322,"date":"2024-10-09T00:50:42","date_gmt":"2024-10-09T00:50:42","guid":{"rendered":"https:\/\/www.go-uml.com\/id\/?p=322"},"modified":"2024-10-09T00:50:49","modified_gmt":"2024-10-09T00:50:49","slug":"enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study","status":"publish","type":"post","link":"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/","title":{"rendered":"Enhancing E-Commerce with MVC and UML Sequence Diagrams: A ShopEase Case Study"},"content":{"rendered":"<h4 class=\"text-base-strong\">Introduction\u00a0to\u00a0UML\u00a0Sequence\u00a0Diagrams<\/h4>\n<p aria-live=\"polite\"><span class=\"\">A\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0is\u00a0used\u00a0to\u00a0depict\u00a0the\u00a0dynamic\u00a0behavior\u00a0of\u00a0a\u00a0system,\u00a0showcasing\u00a0the\u00a0sequence\u00a0of\u00a0messages\u00a0exchanged\u00a0between\u00a0objects\u00a0over\u00a0time.\u00a0It\u00a0captures\u00a0the\u00a0interaction\u00a0order\u00a0to\u00a0fulfill\u00a0a\u00a0specific\u00a0functionality.<\/span><\/p>\n<p aria-live=\"polite\"><img decoding=\"async\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png\" alt=\"MVC sequence diagram example\" \/><\/p>\n<h4 class=\"text-base-strong\">Components\u00a0of\u00a0a\u00a0Sequence\u00a0Diagram<\/h4>\n<ol class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-5 marker:normal-nums marker:text-sm-strong\" start=\"1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Lifelines<\/strong>:\u00a0Represent\u00a0the\u00a0various\u00a0objects\u00a0or\u00a0components\u00a0in\u00a0the\u00a0system.\u00a0In\u00a0this\u00a0diagram,\u00a0we\u00a0have:<\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b1:\u00a0Boundary\u00a01<\/code><\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b2:\u00a0Boundary\u00a02<\/code><\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">c1:\u00a0Controller\u00a01<\/code><\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">e1:\u00a0Entity\u00a01<\/code><\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">e2:\u00a0Entity\u00a02<\/code><\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Activation\u00a0Bars<\/strong>:\u00a0Indicate\u00a0the\u00a0duration\u00a0an\u00a0object\u00a0performs\u00a0an\u00a0action.\u00a0Shown\u00a0as\u00a0thin\u00a0rectangles\u00a0on\u00a0the\u00a0lifelines.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Messages<\/strong>:\u00a0Indicate\u00a0communication\u00a0between\u00a0objects.<\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Synchronous\u00a0Messages<\/strong>:\u00a0Solid\u00a0arrowhead,\u00a0sender\u00a0waits\u00a0for\u00a0the\u00a0receiver\u00a0to\u00a0process\u00a0the\u00a0message.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Return\u00a0Messages<\/strong>:\u00a0Dashed\u00a0arrow,\u00a0shows\u00a0the\u00a0return\u00a0of\u00a0control\u00a0to\u00a0the\u00a0sender.<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h4 class=\"text-base-strong\">MVC\u00a0Framework\u00a0Pattern<\/h4>\n<p aria-live=\"polite\"><span class=\"\">The\u00a0MVC\u00a0pattern\u00a0divides\u00a0an\u00a0application\u00a0into\u00a0three\u00a0main\u00a0components:<\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Model<\/strong>:\u00a0Manages\u00a0the\u00a0data\u00a0and\u00a0business\u00a0logic.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>View<\/strong>:\u00a0Displays\u00a0the\u00a0data\u00a0(user\u00a0interface).<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Controller<\/strong>:\u00a0Handles\u00a0input,\u00a0processes\u00a0it,\u00a0and\u00a0updates\u00a0the\u00a0Model\u00a0and\u00a0View.<\/span><\/p>\n<\/li>\n<\/ul>\n<h4 class=\"text-base-strong\">Explanation\u00a0of\u00a0the\u00a0Attached\u00a0Image<\/h4>\n<p aria-live=\"polite\"><span class=\"\">Your\u00a0sequence\u00a0diagram\u00a0follows\u00a0the\u00a0MVC\u00a0pattern.\u00a0Here&#8217;s\u00a0the\u00a0interaction\u00a0breakdown:<\/span><\/p>\n<ol class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-5 marker:normal-nums marker:text-sm-strong\" start=\"1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Boundary\u00a0Lifeline\u00a0(View)<\/strong><\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b1:\u00a0Boundary\u00a01<\/code>\u00a0starts\u00a0by\u00a0sending\u00a0a\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">run()<\/code>\u00a0message\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b2:\u00a0Boundary\u00a02<\/code>.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b2:\u00a0Boundary\u00a02<\/code>\u00a0sends\u00a0a\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">getinputs()<\/code>\u00a0message\u00a0back\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b1:\u00a0Boundary\u00a01<\/code>.<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Controller\u00a0Lifeline<\/strong><\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b2:\u00a0Boundary\u00a02<\/code>\u00a0sends\u00a0a\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">query()<\/code>\u00a0message\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">c1:\u00a0Controller\u00a01<\/code>.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">c1:\u00a0Controller\u00a01<\/code>\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0sends\u00a0an\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">update()<\/code>\u00a0message\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">e1:\u00a0Entity\u00a01<\/code>.<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Entity\u00a0Lifeline\u00a0(Model)<\/strong><\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">c1:\u00a0Controller\u00a01<\/code>\u00a0sends\u00a0a\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">query()<\/code>\u00a0message\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">e2:\u00a0Entity\u00a02<\/code>.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">e2:\u00a0Entity\u00a02<\/code>\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0returns\u00a0the\u00a0result\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">c1:\u00a0Controller\u00a01<\/code>.<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Return\u00a0Messages<\/strong><\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">c1:\u00a0Controller\u00a01<\/code>\u00a0sends\u00a0the\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">result<\/code>\u00a0back\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b2:\u00a0Boundary\u00a02<\/code>.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b2:\u00a0Boundary\u00a02<\/code>\u00a0then\u00a0communicates\u00a0the\u00a0result\u00a0back\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b1:\u00a0Boundary\u00a01<\/code>.<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3 class=\"text-md-strong pb-1 [&amp;:not(:first-child)]:pt-3.5\">Case\u00a0Study:\u00a0Implementing\u00a0the\u00a0MVC\u00a0Framework\u00a0with\u00a0UML\u00a0Sequence\u00a0Diagrams<\/h3>\n<h4 class=\"text-base-strong\">Background<\/h4>\n<p aria-live=\"polite\"><span class=\"\">A\u00a0mid-sized\u00a0e-commerce\u00a0company,\u00a0ShopEase,\u00a0faced\u00a0challenges\u00a0with\u00a0managing\u00a0its\u00a0growing\u00a0user\u00a0base\u00a0and\u00a0transaction\u00a0volume.\u00a0The\u00a0company\u00a0decided\u00a0to\u00a0re-engineer\u00a0its\u00a0web\u00a0application\u00a0using\u00a0the\u00a0Model-View-Controller\u00a0(MVC)\u00a0framework\u00a0to\u00a0improve\u00a0maintainability,\u00a0scalability,\u00a0and\u00a0user\u00a0experience.<\/span><\/p>\n<h4 class=\"text-base-strong\">Objective<\/h4>\n<p aria-live=\"polite\"><span class=\"\">To\u00a0visualize\u00a0the\u00a0implementation\u00a0of\u00a0the\u00a0MVC\u00a0framework,\u00a0the\u00a0development\u00a0team\u00a0used\u00a0UML\u00a0Sequence\u00a0Diagrams\u00a0to\u00a0illustrate\u00a0the\u00a0interaction\u00a0between\u00a0various\u00a0components\u00a0in\u00a0a\u00a0typical\u00a0user\u00a0transaction\u00a0scenario.<\/span><\/p>\n<h4 class=\"text-base-strong\">System\u00a0Overview<\/h4>\n<p aria-live=\"polite\"><span class=\"\">ShopEase&#8217;s\u00a0web\u00a0application\u00a0is\u00a0divided\u00a0into\u00a0three\u00a0primary\u00a0components:<\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Model<\/strong>:\u00a0Manages\u00a0data\u00a0and\u00a0business\u00a0logic.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>View<\/strong>:\u00a0Represents\u00a0the\u00a0user\u00a0interface.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Controller<\/strong>:\u00a0Handles\u00a0user\u00a0input\u00a0and\u00a0updates\u00a0the\u00a0Model\u00a0and\u00a0View.<\/span><\/p>\n<\/li>\n<\/ul>\n<p aria-live=\"polite\"><span class=\"\">The\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0provided\u00a0captures\u00a0the\u00a0interactions\u00a0among\u00a0these\u00a0components\u00a0when\u00a0a\u00a0user\u00a0performs\u00a0a\u00a0search\u00a0operation.<\/span><\/p>\n<h4 class=\"text-base-strong\">Diagram\u00a0Description<\/h4>\n<ol class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-5 marker:normal-nums marker:text-sm-strong\" start=\"1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Initial\u00a0Interaction<\/strong>:<\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b1:\u00a0Boundary\u00a01<\/code>\u00a0(User\u00a0Interface)\u00a0sends\u00a0a\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">run()<\/code>\u00a0message\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b2:\u00a0Boundary\u00a02<\/code>,\u00a0initiating\u00a0the\u00a0process.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b2:\u00a0Boundary\u00a02<\/code>\u00a0requests\u00a0user\u00a0input\u00a0with\u00a0a\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">getinputs()<\/code>\u00a0message\u00a0back\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b1:\u00a0Boundary\u00a01<\/code>.<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Controller&#8217;s\u00a0Role<\/strong>:<\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\">After\u00a0receiving\u00a0the\u00a0user\u00a0input,\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b2:\u00a0Boundary\u00a02<\/code>\u00a0forwards\u00a0the\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">query()<\/code>\u00a0message\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">c1:\u00a0Controller\u00a01<\/code>.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">c1:\u00a0Controller\u00a01<\/code>\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0sends\u00a0an\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">update()<\/code>\u00a0message\u00a0to\u00a0the\u00a0relevant\u00a0entity,\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">e1:\u00a0Entity\u00a01<\/code>.<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Model&#8217;s\u00a0Role<\/strong>:<\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">c1:\u00a0Controller\u00a01<\/code>\u00a0simultaneously\u00a0queries\u00a0another\u00a0part\u00a0of\u00a0the\u00a0model,\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">e2:\u00a0Entity\u00a02<\/code>,\u00a0to\u00a0fetch\u00a0additional\u00a0required\u00a0data.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">e2:\u00a0Entity\u00a02<\/code>\u00a0processes\u00a0the\u00a0request\u00a0and\u00a0returns\u00a0the\u00a0needed\u00a0information\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">c1:\u00a0Controller\u00a01<\/code>.<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><strong>Result\u00a0Delivery<\/strong>:<\/span><\/p>\n<ul class=\"relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1\">\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\"><code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">c1:\u00a0Controller\u00a01<\/code>\u00a0aggregates\u00a0the\u00a0results\u00a0and\u00a0sends\u00a0them\u00a0back\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b2:\u00a0Boundary\u00a02<\/code>.<\/span><\/p>\n<\/li>\n<li class=\"ps-2\">\n<p aria-live=\"polite\"><span class=\"\">Finally,\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b2:\u00a0Boundary\u00a02<\/code>\u00a0communicates\u00a0the\u00a0results\u00a0back\u00a0to\u00a0<code class=\"mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200\/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900\">b1:\u00a0Boundary\u00a01<\/code>,\u00a0updating\u00a0the\u00a0user\u00a0interface.<\/span><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h4 class=\"text-base-strong\">Implementation\u00a0Outcome<\/h4>\n<p aria-live=\"polite\"><span class=\"\">The\u00a0MVC\u00a0pattern\u00a0allowed\u00a0ShopEase\u00a0to\u00a0decouple\u00a0data\u00a0handling,\u00a0business\u00a0logic,\u00a0and\u00a0the\u00a0user\u00a0interface,\u00a0making\u00a0the\u00a0system\u00a0more\u00a0modular\u00a0and\u00a0easier\u00a0to\u00a0maintain.\u00a0The\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0proved\u00a0invaluable\u00a0for\u00a0visualizing\u00a0and\u00a0understanding\u00a0the\u00a0dynamic\u00a0interactions\u00a0within\u00a0the\u00a0system.<\/span><\/p>\n<p aria-live=\"polite\"><img decoding=\"async\" src=\"https:\/\/www.plantuml.com\/plantuml\/png\/RPB1QiCm44Jl-eebz_o03oKqXg9Rcw8FsCeR8h0birgrvEzhsOh0HjUPD-iPuKiKP4dJgD1AOBYcA64YLlCYE-jcz08d4ub1Uo6-ewKJO0IZzuZsSnBuv60fni0hisfLslFVX6mVS0rUE8mZRObDhU8XivmQaXNeKV07urQaYFrxe_8EpCf2gTT4EB-1qHrexyIXKFcuCZex--uTV90KOBEYsXCvSspVGR7XAn4_rT7FcLg_0pCFAFHIGFjxu0d51TzAbZqTt4ZOqIz1dQms2yxDJXLhN6qCBwDl5DFOM5qUiNTn7l5PCQDNgxnrFlC8VzLL5_93_kd-0G00\" \/><\/p>\n<h4 class=\"text-base-strong\">Conclusion<\/h4>\n<p aria-live=\"polite\"><span class=\"\">This sequence diagram elegantly showcases the interaction between the View, Controller, and Model components in an MVC framework. It clearly demonstrates the flow of messages and the activation of different components, providing a thorough understanding of the system&#8217;s dynamic behavior.<\/span><\/p>\n<p aria-live=\"polite\"><span class=\"\"> By\u00a0adopting\u00a0the\u00a0MVC\u00a0framework\u00a0and\u00a0using\u00a0UML\u00a0Sequence\u00a0Diagrams,\u00a0ShopEase\u00a0was\u00a0able\u00a0to\u00a0streamline\u00a0its\u00a0application\u00a0architecture,\u00a0resulting\u00a0in\u00a0improved\u00a0performance,\u00a0better\u00a0maintainability,\u00a0and\u00a0a\u00a0more\u00a0robust\u00a0user\u00a0experience.\u00a0This\u00a0case\u00a0study\u00a0highlights\u00a0the\u00a0practical\u00a0application\u00a0of\u00a0theoretical\u00a0concepts,\u00a0demonstrating\u00a0how\u00a0visual\u00a0modeling\u00a0can\u00a0enhance\u00a0system\u00a0design\u00a0and\u00a0implementation.<\/span><\/p>\n<p aria-live=\"polite\"><span class=\"\">Dive\u00a0in\u00a0and\u00a0start\u00a0modeling\u00a0your\u00a0own\u00a0systems\u00a0with\u00a0UML\u00a0Sequence\u00a0Diagrams!\u00a0\ud83d\ude80<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction\u00a0to\u00a0UML\u00a0Sequence\u00a0Diagrams A\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0is\u00a0used\u00a0to\u00a0depict\u00a0the\u00a0dynamic\u00a0behavior\u00a0of\u00a0a\u00a0system,\u00a0showcasing\u00a0the\u00a0sequence\u00a0of\u00a0messages\u00a0exchanged\u00a0between\u00a0objects\u00a0over\u00a0time.\u00a0It\u00a0captures\u00a0the\u00a0interaction\u00a0order\u00a0to\u00a0fulfill\u00a0a\u00a0specific\u00a0functionality. Components\u00a0of\u00a0a\u00a0Sequence\u00a0Diagram Lifelines:\u00a0Represent\u00a0the\u00a0various\u00a0objects\u00a0or\u00a0components\u00a0in\u00a0the\u00a0system.\u00a0In\u00a0this\u00a0diagram,\u00a0we\u00a0have: b1:\u00a0Boundary\u00a01 b2:\u00a0Boundary\u00a02 c1:\u00a0Controller\u00a01 e1:\u00a0Entity\u00a01 e2:\u00a0Entity\u00a02 Activation\u00a0Bars:\u00a0Indicate\u00a0the\u00a0duration\u00a0an\u00a0object\u00a0performs\u00a0an\u00a0action.\u00a0Shown\u00a0as\u00a0thin\u00a0rectangles\u00a0on\u00a0the\u00a0lifelines. Messages:\u00a0Indicate\u00a0communication\u00a0between\u00a0objects. Synchronous\u00a0Messages:\u00a0Solid\u00a0arrowhead,\u00a0sender\u00a0waits\u00a0for\u00a0the\u00a0receiver\u00a0to\u00a0process\u00a0the\u00a0message. Return\u00a0Messages:\u00a0Dashed\u00a0arrow,\u00a0shows\u00a0the\u00a0return\u00a0of\u00a0control\u00a0to\u00a0the\u00a0sender. MVC\u00a0Framework\u00a0Pattern The\u00a0MVC\u00a0pattern\u00a0divides\u00a0an\u00a0application\u00a0into\u00a0three\u00a0main\u00a0components: Model:\u00a0Manages\u00a0the\u00a0data\u00a0and\u00a0business\u00a0logic. View:\u00a0Displays\u00a0the\u00a0data\u00a0(user\u00a0interface). Controller:\u00a0Handles\u00a0input,\u00a0processes\u00a0it,\u00a0and\u00a0updates\u00a0the\u00a0Model\u00a0and\u00a0View. Explanation\u00a0of\u00a0the\u00a0Attached\u00a0Image Your\u00a0sequence\u00a0diagram\u00a0follows\u00a0the\u00a0MVC\u00a0pattern.\u00a0Here&#8217;s\u00a0the\u00a0interaction\u00a0breakdown: Boundary\u00a0Lifeline\u00a0(View) b1:\u00a0Boundary\u00a01\u00a0starts\u00a0by\u00a0sending\u00a0a\u00a0run()\u00a0message\u00a0to\u00a0b2:\u00a0Boundary\u00a02. b2:\u00a0Boundary\u00a02\u00a0sends\u00a0a\u00a0getinputs()\u00a0message\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01. Controller\u00a0Lifeline b2:\u00a0Boundary\u00a02\u00a0sends\u00a0a\u00a0query()\u00a0message\u00a0to\u00a0c1:\u00a0Controller\u00a01. c1:\u00a0Controller\u00a01\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0sends\u00a0an\u00a0update()\u00a0message\u00a0to\u00a0e1:\u00a0Entity\u00a01. Entity\u00a0Lifeline\u00a0(Model) c1:\u00a0Controller\u00a01\u00a0sends\u00a0a\u00a0query()\u00a0message\u00a0to\u00a0e2:\u00a0Entity\u00a02. e2:\u00a0Entity\u00a02\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0returns\u00a0the\u00a0result\u00a0to\u00a0c1:\u00a0Controller\u00a01. Return\u00a0Messages c1:\u00a0Controller\u00a01\u00a0sends\u00a0the\u00a0result\u00a0back\u00a0to\u00a0b2:\u00a0Boundary\u00a02. b2:\u00a0Boundary\u00a02\u00a0then\u00a0communicates\u00a0the\u00a0result\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01. Case\u00a0Study:\u00a0Implementing\u00a0the\u00a0MVC\u00a0Framework\u00a0with\u00a0UML\u00a0Sequence\u00a0Diagrams Background A\u00a0mid-sized\u00a0e-commerce\u00a0company,\u00a0ShopEase,\u00a0faced\u00a0challenges\u00a0with\u00a0managing\u00a0its\u00a0growing\u00a0user\u00a0base\u00a0and\u00a0transaction\u00a0volume.\u00a0The\u00a0company\u00a0decided\u00a0to\u00a0re-engineer\u00a0its\u00a0web\u00a0application\u00a0using\u00a0the\u00a0Model-View-Controller\u00a0(MVC)\u00a0framework\u00a0to\u00a0improve\u00a0maintainability,\u00a0scalability,\u00a0and\u00a0user\u00a0experience. Objective To\u00a0visualize\u00a0the\u00a0implementation\u00a0of\u00a0the\u00a0MVC\u00a0framework,\u00a0the\u00a0development\u00a0team\u00a0used\u00a0UML\u00a0Sequence\u00a0Diagrams\u00a0to\u00a0illustrate\u00a0the\u00a0interaction\u00a0between\u00a0various\u00a0components\u00a0in\u00a0a\u00a0typical\u00a0user\u00a0transaction\u00a0scenario. System\u00a0Overview ShopEase&#8217;s\u00a0web\u00a0application\u00a0is\u00a0divided\u00a0into\u00a0three\u00a0primary\u00a0components: Model:\u00a0Manages\u00a0data\u00a0and\u00a0business\u00a0logic. View:\u00a0Represents\u00a0the\u00a0user\u00a0interface. Controller:\u00a0Handles\u00a0user\u00a0input\u00a0and\u00a0updates\u00a0the\u00a0Model\u00a0and\u00a0View. The\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0provided\u00a0captures\u00a0the\u00a0interactions\u00a0among\u00a0these\u00a0components\u00a0when\u00a0a\u00a0user\u00a0performs\u00a0a\u00a0search\u00a0operation. Diagram\u00a0Description Initial\u00a0Interaction: b1:\u00a0Boundary\u00a01\u00a0(User\u00a0Interface)\u00a0sends\u00a0a\u00a0run()\u00a0message\u00a0to\u00a0b2:\u00a0Boundary\u00a02,\u00a0initiating\u00a0the\u00a0process. b2:\u00a0Boundary\u00a02\u00a0requests\u00a0user\u00a0input\u00a0with\u00a0a\u00a0getinputs()\u00a0message\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01. Controller&#8217;s\u00a0Role: After\u00a0receiving\u00a0the\u00a0user\u00a0input,\u00a0b2:\u00a0Boundary\u00a02\u00a0forwards\u00a0the\u00a0query()\u00a0message\u00a0to\u00a0c1:\u00a0Controller\u00a01. c1:\u00a0Controller\u00a01\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0sends\u00a0an\u00a0update()\u00a0message\u00a0to\u00a0the\u00a0relevant\u00a0entity,\u00a0e1:\u00a0Entity\u00a01. Model&#8217;s\u00a0Role: c1:\u00a0Controller\u00a01\u00a0simultaneously\u00a0queries\u00a0another\u00a0part\u00a0of\u00a0the\u00a0model,\u00a0e2:\u00a0Entity\u00a02,\u00a0to\u00a0fetch\u00a0additional\u00a0required\u00a0data. e2:\u00a0Entity\u00a02\u00a0processes\u00a0the\u00a0request\u00a0and\u00a0returns\u00a0the\u00a0needed\u00a0information\u00a0to\u00a0c1:\u00a0Controller\u00a01. Result\u00a0Delivery: c1:\u00a0Controller\u00a01\u00a0aggregates\u00a0the\u00a0results\u00a0and\u00a0sends\u00a0them\u00a0back\u00a0to\u00a0b2:\u00a0Boundary\u00a02. Finally,\u00a0b2:\u00a0Boundary\u00a02\u00a0communicates\u00a0the\u00a0results\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01,\u00a0updating\u00a0the\u00a0user\u00a0interface. Implementation\u00a0Outcome The\u00a0MVC\u00a0pattern\u00a0allowed\u00a0ShopEase\u00a0to\u00a0decouple\u00a0data\u00a0handling,\u00a0business\u00a0logic,\u00a0and\u00a0the\u00a0user\u00a0interface,\u00a0making\u00a0the\u00a0system\u00a0more\u00a0modular\u00a0and\u00a0easier\u00a0to\u00a0maintain.\u00a0The\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0proved\u00a0invaluable\u00a0for\u00a0visualizing\u00a0and\u00a0understanding\u00a0the\u00a0dynamic\u00a0interactions\u00a0within\u00a0the\u00a0system. Conclusion This sequence diagram elegantly showcases the interaction between the View, Controller, and Model components in an MVC framework. It clearly demonstrates the flow of messages and the activation of different components, providing a thorough understanding of the system&#8217;s dynamic behavior. By\u00a0adopting\u00a0the\u00a0MVC\u00a0framework\u00a0and\u00a0using\u00a0UML\u00a0Sequence\u00a0Diagrams,\u00a0ShopEase\u00a0was\u00a0able\u00a0to\u00a0streamline\u00a0its\u00a0application\u00a0architecture,\u00a0resulting\u00a0in\u00a0improved\u00a0performance,\u00a0better\u00a0maintainability,\u00a0and\u00a0a\u00a0more\u00a0robust\u00a0user\u00a0experience.\u00a0This\u00a0case\u00a0study\u00a0highlights\u00a0the\u00a0practical\u00a0application\u00a0of\u00a0theoretical\u00a0concepts,\u00a0demonstrating\u00a0how\u00a0visual\u00a0modeling\u00a0can\u00a0enhance\u00a0system\u00a0design\u00a0and\u00a0implementation. Dive\u00a0in\u00a0and\u00a0start\u00a0modeling\u00a0your\u00a0own\u00a0systems\u00a0with\u00a0UML\u00a0Sequence\u00a0Diagrams!\u00a0\ud83d\ude80<\/p>\n","protected":false},"author":7,"featured_media":327,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"fifu_image_url":"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png","fifu_image_alt":"","footnotes":""},"categories":[22],"tags":[],"class_list":["post-322","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sequence-diagram"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Enhancing E-Commerce with MVC and UML Sequence Diagrams: A ShopEase Case Study - Go UML Indonesia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Enhancing E-Commerce with MVC and UML Sequence Diagrams: A ShopEase Case Study - Go UML Indonesia\" \/>\n<meta property=\"og:description\" content=\"Introduction\u00a0to\u00a0UML\u00a0Sequence\u00a0Diagrams A\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0is\u00a0used\u00a0to\u00a0depict\u00a0the\u00a0dynamic\u00a0behavior\u00a0of\u00a0a\u00a0system,\u00a0showcasing\u00a0the\u00a0sequence\u00a0of\u00a0messages\u00a0exchanged\u00a0between\u00a0objects\u00a0over\u00a0time.\u00a0It\u00a0captures\u00a0the\u00a0interaction\u00a0order\u00a0to\u00a0fulfill\u00a0a\u00a0specific\u00a0functionality. Components\u00a0of\u00a0a\u00a0Sequence\u00a0Diagram Lifelines:\u00a0Represent\u00a0the\u00a0various\u00a0objects\u00a0or\u00a0components\u00a0in\u00a0the\u00a0system.\u00a0In\u00a0this\u00a0diagram,\u00a0we\u00a0have: b1:\u00a0Boundary\u00a01 b2:\u00a0Boundary\u00a02 c1:\u00a0Controller\u00a01 e1:\u00a0Entity\u00a01 e2:\u00a0Entity\u00a02 Activation\u00a0Bars:\u00a0Indicate\u00a0the\u00a0duration\u00a0an\u00a0object\u00a0performs\u00a0an\u00a0action.\u00a0Shown\u00a0as\u00a0thin\u00a0rectangles\u00a0on\u00a0the\u00a0lifelines. Messages:\u00a0Indicate\u00a0communication\u00a0between\u00a0objects. Synchronous\u00a0Messages:\u00a0Solid\u00a0arrowhead,\u00a0sender\u00a0waits\u00a0for\u00a0the\u00a0receiver\u00a0to\u00a0process\u00a0the\u00a0message. Return\u00a0Messages:\u00a0Dashed\u00a0arrow,\u00a0shows\u00a0the\u00a0return\u00a0of\u00a0control\u00a0to\u00a0the\u00a0sender. MVC\u00a0Framework\u00a0Pattern The\u00a0MVC\u00a0pattern\u00a0divides\u00a0an\u00a0application\u00a0into\u00a0three\u00a0main\u00a0components: Model:\u00a0Manages\u00a0the\u00a0data\u00a0and\u00a0business\u00a0logic. View:\u00a0Displays\u00a0the\u00a0data\u00a0(user\u00a0interface). Controller:\u00a0Handles\u00a0input,\u00a0processes\u00a0it,\u00a0and\u00a0updates\u00a0the\u00a0Model\u00a0and\u00a0View. Explanation\u00a0of\u00a0the\u00a0Attached\u00a0Image Your\u00a0sequence\u00a0diagram\u00a0follows\u00a0the\u00a0MVC\u00a0pattern.\u00a0Here&#8217;s\u00a0the\u00a0interaction\u00a0breakdown: Boundary\u00a0Lifeline\u00a0(View) b1:\u00a0Boundary\u00a01\u00a0starts\u00a0by\u00a0sending\u00a0a\u00a0run()\u00a0message\u00a0to\u00a0b2:\u00a0Boundary\u00a02. b2:\u00a0Boundary\u00a02\u00a0sends\u00a0a\u00a0getinputs()\u00a0message\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01. Controller\u00a0Lifeline b2:\u00a0Boundary\u00a02\u00a0sends\u00a0a\u00a0query()\u00a0message\u00a0to\u00a0c1:\u00a0Controller\u00a01. c1:\u00a0Controller\u00a01\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0sends\u00a0an\u00a0update()\u00a0message\u00a0to\u00a0e1:\u00a0Entity\u00a01. Entity\u00a0Lifeline\u00a0(Model) c1:\u00a0Controller\u00a01\u00a0sends\u00a0a\u00a0query()\u00a0message\u00a0to\u00a0e2:\u00a0Entity\u00a02. e2:\u00a0Entity\u00a02\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0returns\u00a0the\u00a0result\u00a0to\u00a0c1:\u00a0Controller\u00a01. Return\u00a0Messages c1:\u00a0Controller\u00a01\u00a0sends\u00a0the\u00a0result\u00a0back\u00a0to\u00a0b2:\u00a0Boundary\u00a02. b2:\u00a0Boundary\u00a02\u00a0then\u00a0communicates\u00a0the\u00a0result\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01. Case\u00a0Study:\u00a0Implementing\u00a0the\u00a0MVC\u00a0Framework\u00a0with\u00a0UML\u00a0Sequence\u00a0Diagrams Background A\u00a0mid-sized\u00a0e-commerce\u00a0company,\u00a0ShopEase,\u00a0faced\u00a0challenges\u00a0with\u00a0managing\u00a0its\u00a0growing\u00a0user\u00a0base\u00a0and\u00a0transaction\u00a0volume.\u00a0The\u00a0company\u00a0decided\u00a0to\u00a0re-engineer\u00a0its\u00a0web\u00a0application\u00a0using\u00a0the\u00a0Model-View-Controller\u00a0(MVC)\u00a0framework\u00a0to\u00a0improve\u00a0maintainability,\u00a0scalability,\u00a0and\u00a0user\u00a0experience. Objective To\u00a0visualize\u00a0the\u00a0implementation\u00a0of\u00a0the\u00a0MVC\u00a0framework,\u00a0the\u00a0development\u00a0team\u00a0used\u00a0UML\u00a0Sequence\u00a0Diagrams\u00a0to\u00a0illustrate\u00a0the\u00a0interaction\u00a0between\u00a0various\u00a0components\u00a0in\u00a0a\u00a0typical\u00a0user\u00a0transaction\u00a0scenario. System\u00a0Overview ShopEase&#8217;s\u00a0web\u00a0application\u00a0is\u00a0divided\u00a0into\u00a0three\u00a0primary\u00a0components: Model:\u00a0Manages\u00a0data\u00a0and\u00a0business\u00a0logic. View:\u00a0Represents\u00a0the\u00a0user\u00a0interface. Controller:\u00a0Handles\u00a0user\u00a0input\u00a0and\u00a0updates\u00a0the\u00a0Model\u00a0and\u00a0View. The\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0provided\u00a0captures\u00a0the\u00a0interactions\u00a0among\u00a0these\u00a0components\u00a0when\u00a0a\u00a0user\u00a0performs\u00a0a\u00a0search\u00a0operation. Diagram\u00a0Description Initial\u00a0Interaction: b1:\u00a0Boundary\u00a01\u00a0(User\u00a0Interface)\u00a0sends\u00a0a\u00a0run()\u00a0message\u00a0to\u00a0b2:\u00a0Boundary\u00a02,\u00a0initiating\u00a0the\u00a0process. b2:\u00a0Boundary\u00a02\u00a0requests\u00a0user\u00a0input\u00a0with\u00a0a\u00a0getinputs()\u00a0message\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01. Controller&#8217;s\u00a0Role: After\u00a0receiving\u00a0the\u00a0user\u00a0input,\u00a0b2:\u00a0Boundary\u00a02\u00a0forwards\u00a0the\u00a0query()\u00a0message\u00a0to\u00a0c1:\u00a0Controller\u00a01. c1:\u00a0Controller\u00a01\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0sends\u00a0an\u00a0update()\u00a0message\u00a0to\u00a0the\u00a0relevant\u00a0entity,\u00a0e1:\u00a0Entity\u00a01. Model&#8217;s\u00a0Role: c1:\u00a0Controller\u00a01\u00a0simultaneously\u00a0queries\u00a0another\u00a0part\u00a0of\u00a0the\u00a0model,\u00a0e2:\u00a0Entity\u00a02,\u00a0to\u00a0fetch\u00a0additional\u00a0required\u00a0data. e2:\u00a0Entity\u00a02\u00a0processes\u00a0the\u00a0request\u00a0and\u00a0returns\u00a0the\u00a0needed\u00a0information\u00a0to\u00a0c1:\u00a0Controller\u00a01. Result\u00a0Delivery: c1:\u00a0Controller\u00a01\u00a0aggregates\u00a0the\u00a0results\u00a0and\u00a0sends\u00a0them\u00a0back\u00a0to\u00a0b2:\u00a0Boundary\u00a02. Finally,\u00a0b2:\u00a0Boundary\u00a02\u00a0communicates\u00a0the\u00a0results\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01,\u00a0updating\u00a0the\u00a0user\u00a0interface. Implementation\u00a0Outcome The\u00a0MVC\u00a0pattern\u00a0allowed\u00a0ShopEase\u00a0to\u00a0decouple\u00a0data\u00a0handling,\u00a0business\u00a0logic,\u00a0and\u00a0the\u00a0user\u00a0interface,\u00a0making\u00a0the\u00a0system\u00a0more\u00a0modular\u00a0and\u00a0easier\u00a0to\u00a0maintain.\u00a0The\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0proved\u00a0invaluable\u00a0for\u00a0visualizing\u00a0and\u00a0understanding\u00a0the\u00a0dynamic\u00a0interactions\u00a0within\u00a0the\u00a0system. Conclusion This sequence diagram elegantly showcases the interaction between the View, Controller, and Model components in an MVC framework. It clearly demonstrates the flow of messages and the activation of different components, providing a thorough understanding of the system&#8217;s dynamic behavior. By\u00a0adopting\u00a0the\u00a0MVC\u00a0framework\u00a0and\u00a0using\u00a0UML\u00a0Sequence\u00a0Diagrams,\u00a0ShopEase\u00a0was\u00a0able\u00a0to\u00a0streamline\u00a0its\u00a0application\u00a0architecture,\u00a0resulting\u00a0in\u00a0improved\u00a0performance,\u00a0better\u00a0maintainability,\u00a0and\u00a0a\u00a0more\u00a0robust\u00a0user\u00a0experience.\u00a0This\u00a0case\u00a0study\u00a0highlights\u00a0the\u00a0practical\u00a0application\u00a0of\u00a0theoretical\u00a0concepts,\u00a0demonstrating\u00a0how\u00a0visual\u00a0modeling\u00a0can\u00a0enhance\u00a0system\u00a0design\u00a0and\u00a0implementation. Dive\u00a0in\u00a0and\u00a0start\u00a0modeling\u00a0your\u00a0own\u00a0systems\u00a0with\u00a0UML\u00a0Sequence\u00a0Diagrams!\u00a0\ud83d\ude80\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/\" \/>\n<meta property=\"og:site_name\" content=\"Go UML Indonesia\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-09T00:50:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-09T00:50:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png\" \/>\n<meta name=\"author\" content=\"curtis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"curtis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/\",\"url\":\"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/\",\"name\":\"Enhancing E-Commerce with MVC and UML Sequence Diagrams: A ShopEase Case Study - Go UML Indonesia\",\"isPartOf\":{\"@id\":\"https:\/\/www.go-uml.com\/id\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png\",\"datePublished\":\"2024-10-09T00:50:42+00:00\",\"dateModified\":\"2024-10-09T00:50:49+00:00\",\"author\":{\"@id\":\"https:\/\/www.go-uml.com\/id\/#\/schema\/person\/fc1da26b1e963fc50ec2722b231a274b\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/#primaryimage\",\"url\":\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png\",\"contentUrl\":\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png\",\"width\":\"716\",\"height\":\"427\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.go-uml.com\/id\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enhancing E-Commerce with MVC and UML Sequence Diagrams: A ShopEase Case Study\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.go-uml.com\/id\/#website\",\"url\":\"https:\/\/www.go-uml.com\/id\/\",\"name\":\"Go UML Indonesia\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.go-uml.com\/id\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.go-uml.com\/id\/#\/schema\/person\/fc1da26b1e963fc50ec2722b231a274b\",\"name\":\"curtis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.go-uml.com\/id\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/48025789fc0776739935e63d9f629084?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/48025789fc0776739935e63d9f629084?s=96&d=mm&r=g\",\"caption\":\"curtis\"},\"url\":\"https:\/\/www.go-uml.com\/id\/author\/curtis\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Enhancing E-Commerce with MVC and UML Sequence Diagrams: A ShopEase Case Study - Go UML Indonesia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/","og_locale":"id_ID","og_type":"article","og_title":"Enhancing E-Commerce with MVC and UML Sequence Diagrams: A ShopEase Case Study - Go UML Indonesia","og_description":"Introduction\u00a0to\u00a0UML\u00a0Sequence\u00a0Diagrams A\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0is\u00a0used\u00a0to\u00a0depict\u00a0the\u00a0dynamic\u00a0behavior\u00a0of\u00a0a\u00a0system,\u00a0showcasing\u00a0the\u00a0sequence\u00a0of\u00a0messages\u00a0exchanged\u00a0between\u00a0objects\u00a0over\u00a0time.\u00a0It\u00a0captures\u00a0the\u00a0interaction\u00a0order\u00a0to\u00a0fulfill\u00a0a\u00a0specific\u00a0functionality. Components\u00a0of\u00a0a\u00a0Sequence\u00a0Diagram Lifelines:\u00a0Represent\u00a0the\u00a0various\u00a0objects\u00a0or\u00a0components\u00a0in\u00a0the\u00a0system.\u00a0In\u00a0this\u00a0diagram,\u00a0we\u00a0have: b1:\u00a0Boundary\u00a01 b2:\u00a0Boundary\u00a02 c1:\u00a0Controller\u00a01 e1:\u00a0Entity\u00a01 e2:\u00a0Entity\u00a02 Activation\u00a0Bars:\u00a0Indicate\u00a0the\u00a0duration\u00a0an\u00a0object\u00a0performs\u00a0an\u00a0action.\u00a0Shown\u00a0as\u00a0thin\u00a0rectangles\u00a0on\u00a0the\u00a0lifelines. Messages:\u00a0Indicate\u00a0communication\u00a0between\u00a0objects. Synchronous\u00a0Messages:\u00a0Solid\u00a0arrowhead,\u00a0sender\u00a0waits\u00a0for\u00a0the\u00a0receiver\u00a0to\u00a0process\u00a0the\u00a0message. Return\u00a0Messages:\u00a0Dashed\u00a0arrow,\u00a0shows\u00a0the\u00a0return\u00a0of\u00a0control\u00a0to\u00a0the\u00a0sender. MVC\u00a0Framework\u00a0Pattern The\u00a0MVC\u00a0pattern\u00a0divides\u00a0an\u00a0application\u00a0into\u00a0three\u00a0main\u00a0components: Model:\u00a0Manages\u00a0the\u00a0data\u00a0and\u00a0business\u00a0logic. View:\u00a0Displays\u00a0the\u00a0data\u00a0(user\u00a0interface). Controller:\u00a0Handles\u00a0input,\u00a0processes\u00a0it,\u00a0and\u00a0updates\u00a0the\u00a0Model\u00a0and\u00a0View. Explanation\u00a0of\u00a0the\u00a0Attached\u00a0Image Your\u00a0sequence\u00a0diagram\u00a0follows\u00a0the\u00a0MVC\u00a0pattern.\u00a0Here&#8217;s\u00a0the\u00a0interaction\u00a0breakdown: Boundary\u00a0Lifeline\u00a0(View) b1:\u00a0Boundary\u00a01\u00a0starts\u00a0by\u00a0sending\u00a0a\u00a0run()\u00a0message\u00a0to\u00a0b2:\u00a0Boundary\u00a02. b2:\u00a0Boundary\u00a02\u00a0sends\u00a0a\u00a0getinputs()\u00a0message\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01. Controller\u00a0Lifeline b2:\u00a0Boundary\u00a02\u00a0sends\u00a0a\u00a0query()\u00a0message\u00a0to\u00a0c1:\u00a0Controller\u00a01. c1:\u00a0Controller\u00a01\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0sends\u00a0an\u00a0update()\u00a0message\u00a0to\u00a0e1:\u00a0Entity\u00a01. Entity\u00a0Lifeline\u00a0(Model) c1:\u00a0Controller\u00a01\u00a0sends\u00a0a\u00a0query()\u00a0message\u00a0to\u00a0e2:\u00a0Entity\u00a02. e2:\u00a0Entity\u00a02\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0returns\u00a0the\u00a0result\u00a0to\u00a0c1:\u00a0Controller\u00a01. Return\u00a0Messages c1:\u00a0Controller\u00a01\u00a0sends\u00a0the\u00a0result\u00a0back\u00a0to\u00a0b2:\u00a0Boundary\u00a02. b2:\u00a0Boundary\u00a02\u00a0then\u00a0communicates\u00a0the\u00a0result\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01. Case\u00a0Study:\u00a0Implementing\u00a0the\u00a0MVC\u00a0Framework\u00a0with\u00a0UML\u00a0Sequence\u00a0Diagrams Background A\u00a0mid-sized\u00a0e-commerce\u00a0company,\u00a0ShopEase,\u00a0faced\u00a0challenges\u00a0with\u00a0managing\u00a0its\u00a0growing\u00a0user\u00a0base\u00a0and\u00a0transaction\u00a0volume.\u00a0The\u00a0company\u00a0decided\u00a0to\u00a0re-engineer\u00a0its\u00a0web\u00a0application\u00a0using\u00a0the\u00a0Model-View-Controller\u00a0(MVC)\u00a0framework\u00a0to\u00a0improve\u00a0maintainability,\u00a0scalability,\u00a0and\u00a0user\u00a0experience. Objective To\u00a0visualize\u00a0the\u00a0implementation\u00a0of\u00a0the\u00a0MVC\u00a0framework,\u00a0the\u00a0development\u00a0team\u00a0used\u00a0UML\u00a0Sequence\u00a0Diagrams\u00a0to\u00a0illustrate\u00a0the\u00a0interaction\u00a0between\u00a0various\u00a0components\u00a0in\u00a0a\u00a0typical\u00a0user\u00a0transaction\u00a0scenario. System\u00a0Overview ShopEase&#8217;s\u00a0web\u00a0application\u00a0is\u00a0divided\u00a0into\u00a0three\u00a0primary\u00a0components: Model:\u00a0Manages\u00a0data\u00a0and\u00a0business\u00a0logic. View:\u00a0Represents\u00a0the\u00a0user\u00a0interface. Controller:\u00a0Handles\u00a0user\u00a0input\u00a0and\u00a0updates\u00a0the\u00a0Model\u00a0and\u00a0View. The\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0provided\u00a0captures\u00a0the\u00a0interactions\u00a0among\u00a0these\u00a0components\u00a0when\u00a0a\u00a0user\u00a0performs\u00a0a\u00a0search\u00a0operation. Diagram\u00a0Description Initial\u00a0Interaction: b1:\u00a0Boundary\u00a01\u00a0(User\u00a0Interface)\u00a0sends\u00a0a\u00a0run()\u00a0message\u00a0to\u00a0b2:\u00a0Boundary\u00a02,\u00a0initiating\u00a0the\u00a0process. b2:\u00a0Boundary\u00a02\u00a0requests\u00a0user\u00a0input\u00a0with\u00a0a\u00a0getinputs()\u00a0message\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01. Controller&#8217;s\u00a0Role: After\u00a0receiving\u00a0the\u00a0user\u00a0input,\u00a0b2:\u00a0Boundary\u00a02\u00a0forwards\u00a0the\u00a0query()\u00a0message\u00a0to\u00a0c1:\u00a0Controller\u00a01. c1:\u00a0Controller\u00a01\u00a0processes\u00a0the\u00a0query\u00a0and\u00a0sends\u00a0an\u00a0update()\u00a0message\u00a0to\u00a0the\u00a0relevant\u00a0entity,\u00a0e1:\u00a0Entity\u00a01. Model&#8217;s\u00a0Role: c1:\u00a0Controller\u00a01\u00a0simultaneously\u00a0queries\u00a0another\u00a0part\u00a0of\u00a0the\u00a0model,\u00a0e2:\u00a0Entity\u00a02,\u00a0to\u00a0fetch\u00a0additional\u00a0required\u00a0data. e2:\u00a0Entity\u00a02\u00a0processes\u00a0the\u00a0request\u00a0and\u00a0returns\u00a0the\u00a0needed\u00a0information\u00a0to\u00a0c1:\u00a0Controller\u00a01. Result\u00a0Delivery: c1:\u00a0Controller\u00a01\u00a0aggregates\u00a0the\u00a0results\u00a0and\u00a0sends\u00a0them\u00a0back\u00a0to\u00a0b2:\u00a0Boundary\u00a02. Finally,\u00a0b2:\u00a0Boundary\u00a02\u00a0communicates\u00a0the\u00a0results\u00a0back\u00a0to\u00a0b1:\u00a0Boundary\u00a01,\u00a0updating\u00a0the\u00a0user\u00a0interface. Implementation\u00a0Outcome The\u00a0MVC\u00a0pattern\u00a0allowed\u00a0ShopEase\u00a0to\u00a0decouple\u00a0data\u00a0handling,\u00a0business\u00a0logic,\u00a0and\u00a0the\u00a0user\u00a0interface,\u00a0making\u00a0the\u00a0system\u00a0more\u00a0modular\u00a0and\u00a0easier\u00a0to\u00a0maintain.\u00a0The\u00a0UML\u00a0Sequence\u00a0Diagram\u00a0proved\u00a0invaluable\u00a0for\u00a0visualizing\u00a0and\u00a0understanding\u00a0the\u00a0dynamic\u00a0interactions\u00a0within\u00a0the\u00a0system. Conclusion This sequence diagram elegantly showcases the interaction between the View, Controller, and Model components in an MVC framework. It clearly demonstrates the flow of messages and the activation of different components, providing a thorough understanding of the system&#8217;s dynamic behavior. By\u00a0adopting\u00a0the\u00a0MVC\u00a0framework\u00a0and\u00a0using\u00a0UML\u00a0Sequence\u00a0Diagrams,\u00a0ShopEase\u00a0was\u00a0able\u00a0to\u00a0streamline\u00a0its\u00a0application\u00a0architecture,\u00a0resulting\u00a0in\u00a0improved\u00a0performance,\u00a0better\u00a0maintainability,\u00a0and\u00a0a\u00a0more\u00a0robust\u00a0user\u00a0experience.\u00a0This\u00a0case\u00a0study\u00a0highlights\u00a0the\u00a0practical\u00a0application\u00a0of\u00a0theoretical\u00a0concepts,\u00a0demonstrating\u00a0how\u00a0visual\u00a0modeling\u00a0can\u00a0enhance\u00a0system\u00a0design\u00a0and\u00a0implementation. Dive\u00a0in\u00a0and\u00a0start\u00a0modeling\u00a0your\u00a0own\u00a0systems\u00a0with\u00a0UML\u00a0Sequence\u00a0Diagrams!\u00a0\ud83d\ude80","og_url":"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/","og_site_name":"Go UML Indonesia","article_published_time":"2024-10-09T00:50:42+00:00","article_modified_time":"2024-10-09T00:50:49+00:00","og_image":[{"url":"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png","type":"","width":"","height":""}],"author":"curtis","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png","twitter_misc":{"Ditulis oleh":"curtis","Estimasi waktu membaca":"3 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/","url":"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/","name":"Enhancing E-Commerce with MVC and UML Sequence Diagrams: A ShopEase Case Study - Go UML Indonesia","isPartOf":{"@id":"https:\/\/www.go-uml.com\/id\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/#primaryimage"},"image":{"@id":"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png","datePublished":"2024-10-09T00:50:42+00:00","dateModified":"2024-10-09T00:50:49+00:00","author":{"@id":"https:\/\/www.go-uml.com\/id\/#\/schema\/person\/fc1da26b1e963fc50ec2722b231a274b"},"breadcrumb":{"@id":"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/#primaryimage","url":"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png","contentUrl":"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2022\/02\/mvc-sequence-diagram-example.png","width":"716","height":"427"},{"@type":"BreadcrumbList","@id":"https:\/\/www.go-uml.com\/id\/enhancing-e-commerce-with-mvc-and-uml-sequence-diagrams-a-shopease-case-study\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.go-uml.com\/id\/"},{"@type":"ListItem","position":2,"name":"Enhancing E-Commerce with MVC and UML Sequence Diagrams: A ShopEase Case Study"}]},{"@type":"WebSite","@id":"https:\/\/www.go-uml.com\/id\/#website","url":"https:\/\/www.go-uml.com\/id\/","name":"Go UML Indonesia","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.go-uml.com\/id\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Person","@id":"https:\/\/www.go-uml.com\/id\/#\/schema\/person\/fc1da26b1e963fc50ec2722b231a274b","name":"curtis","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.go-uml.com\/id\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/48025789fc0776739935e63d9f629084?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/48025789fc0776739935e63d9f629084?s=96&d=mm&r=g","caption":"curtis"},"url":"https:\/\/www.go-uml.com\/id\/author\/curtis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.go-uml.com\/id\/wp-json\/wp\/v2\/posts\/322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.go-uml.com\/id\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.go-uml.com\/id\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.go-uml.com\/id\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.go-uml.com\/id\/wp-json\/wp\/v2\/comments?post=322"}],"version-history":[{"count":0,"href":"https:\/\/www.go-uml.com\/id\/wp-json\/wp\/v2\/posts\/322\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.go-uml.com\/id\/wp-json\/wp\/v2\/media\/327"}],"wp:attachment":[{"href":"https:\/\/www.go-uml.com\/id\/wp-json\/wp\/v2\/media?parent=322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.go-uml.com\/id\/wp-json\/wp\/v2\/categories?post=322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.go-uml.com\/id\/wp-json\/wp\/v2\/tags?post=322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}