<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.5">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2019-08-08T02:28:14+00:00</updated><id>/feed.xml</id><title type="html">Nova on Software Engineering</title><subtitle>In this blog I will write about the topics I encounter in my journey into Software Engineering</subtitle><entry><title type="html">Fallacies of Distributed Computing</title><link href="/software/2019/08/09/fallacies.html" rel="alternate" type="text/html" title="Fallacies of Distributed Computing" /><published>2019-08-09T17:00:00+00:00</published><updated>2019-08-09T17:00:00+00:00</updated><id>/software/2019/08/09/fallacies</id><content type="html" xml:base="/software/2019/08/09/fallacies.html">&lt;p&gt;Hello! In this post we will briefly explore the so called &lt;code class=&quot;highlighter-rouge&quot;&gt;Fallacies of Distributed Computing&lt;/code&gt;, that were first drafted by &lt;a href=&quot;https://en.wikipedia.org/wiki/L._Peter_Deutsch&quot;&gt;Peter Deutsch&lt;/a&gt; in 1994 while working at &lt;a href=&quot;https://en.wikipedia.org/wiki/Sun_Microsystems&quot;&gt;Sun Microsystems&lt;/a&gt;, and 25 years later are still relevant.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;highlighter-rouge&quot;&gt;Fallacies of Distributed Computing&lt;/code&gt; are a series of 7 assumptions that inexperienced software architects are likely to make when designing distributed systems, these assumptions become problems and correcting them can be very expensive the longer the project is allowed to continue while ignoring this issues.&lt;/p&gt;

&lt;p&gt;In 1997, &lt;a href=&quot;https://en.wikipedia.org/wiki/James_Gosling&quot;&gt;James Gosling&lt;/a&gt; included a new fallacy, taking the total to 8:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;The Network is Reliable&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Latency is Zero&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Bandwidth is Infinite&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;The Network is Secure&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Topology Doesn’t Change&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;There is one Administrator&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Transport Cost is Zero&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;The network is Homogeneus&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s about it for today’s topic. Peace.&lt;/p&gt;</content><author><name></name></author><summary type="html">Hello! In this post we will briefly explore the so called Fallacies of Distributed Computing, that were first drafted by Peter Deutsch in 1994 while working at Sun Microsystems, and 25 years later are still relevant.</summary></entry><entry><title type="html">Guide to the SWEBOK</title><link href="/software/engineering/2019/08/02/guide-swebok.html" rel="alternate" type="text/html" title="Guide to the SWEBOK" /><published>2019-08-02T17:10:00+00:00</published><updated>2019-08-02T17:10:00+00:00</updated><id>/software/engineering/2019/08/02/guide-swebok</id><content type="html" xml:base="/software/engineering/2019/08/02/guide-swebok.html">&lt;p&gt;Hello there! Welcome to the first entry in this blog dedicated to all things related to Software Engineering. Today’s topic, fittingly, is foundational to this area.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;highlighter-rouge&quot;&gt;SWEBOK&lt;/code&gt;, or &lt;code class=&quot;highlighter-rouge&quot;&gt;Software Engineering Body of Knowledge&lt;/code&gt; are the generally accepted principles that govern the practice of Software Engineering worldwide. It is published as a guide or technical report by the &lt;code class=&quot;highlighter-rouge&quot;&gt;IEEE Computer Society&lt;/code&gt; and has become an &lt;code class=&quot;highlighter-rouge&quot;&gt;ISO&lt;/code&gt; standard. In 2013 version 3 of the guide was published and can be &lt;a href=&quot;https://www.computer.org/education/bodies-of-knowledge/software-engineering&quot;&gt;downloaded for free&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A total of 15 knowledge areas are found on the guide:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Software Requirements&lt;/strong&gt; Elicitation, analysis, specification, validation and management of software requirements in the whole lifecylce of a software product.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Design&lt;/strong&gt; The process of defining the architecture, components, interfaces and other characteristics of a system.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Consruction&lt;/strong&gt; The creation of software through coding, verification, unit testing, integration testing and debugging.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Testing&lt;/strong&gt; The verification that a program provides expected behaviors on a finite set of test cases.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Maintenance&lt;/strong&gt; Planning for postdelivery operations, ensuring maintainability of code and documentation and logistics for transition activities.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Configuration Management&lt;/strong&gt; The functional and physical characteristics of hardware and software that are documented and achieved in a software product.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Engineering Management&lt;/strong&gt; Planning, coordinating, measuring, monitoring, controlling and reporting to ensure effective and efficient software delivery.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Engineering Process&lt;/strong&gt; Requirements, design, construction, testing and configuration management processes for development, maintenance and operation of software.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Engineering Models and Methods&lt;/strong&gt; Structures to make software engineering systematic, repeatable and success-oriented.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Quality&lt;/strong&gt; Capability of software product to satisfy its requirements, for this to happen, the requirements must accurately represent the needs, wants and expectations of stakeholders.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Engineering Professional Practice&lt;/strong&gt; Knowledge, skills and attitudes that software engineers must possess to practice software engineering in a professional, responsible and ethical manner.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Software Engineering Economics&lt;/strong&gt; Aligning software technical decisions with the business goals of the organization, to ensure sustainably staying in business.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Computing Foundations&lt;/strong&gt; All software engineers must have a good underderstanding of the computer and its underliying principles of hardware and software.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Mathematical Foundations&lt;/strong&gt; Mathematics helps engineers understand the formal logic that computers and programs use to work.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Engineering Foundations&lt;/strong&gt; The application of systematic, disciplined, quantifiable approach to structures, machines, products, systems or procesess.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All the above summaries have been adapted or copied from the introduction section of each chapter in the &lt;code class=&quot;highlighter-rouge&quot;&gt;SWEBOK&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It should be noted that the &lt;code class=&quot;highlighter-rouge&quot;&gt;SWEBOK&lt;/code&gt; should be used as a guide and a reference, and that each of the knowledge areas described above have a vast ammount of published literature, and each topic has many subtopics that will be explored in future entries to this blog. All of these topics are also active areas of research.&lt;/p&gt;

&lt;p&gt;Finally, it should also be noted that the &lt;code class=&quot;highlighter-rouge&quot;&gt;SWEBOK&lt;/code&gt; makes no asumptions about the specifics of types of processors, operating systems, programming languages, development methodologies and practices, etc, because its objective is to be as general as possible.&lt;/p&gt;

&lt;p&gt;That’s about it for today’s topic, if you would like to add or correct anything on this blog feel free to send an email (or even better, fork the &lt;a href=&quot;https://github.com/Ragnarok540/Ragnarok540.github.io&quot;&gt;GitHub repository&lt;/a&gt; and make a pull request with your changes!). Peace.&lt;/p&gt;</content><author><name></name></author><summary type="html">Hello there! Welcome to the first entry in this blog dedicated to all things related to Software Engineering. Today’s topic, fittingly, is foundational to this area.</summary></entry></feed>