<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Home on SWE 2410: Software Design</title><link>https://swe2410-9315a1.gitlab.io/</link><description>Recent content in Home on SWE 2410: Software Design</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://swe2410-9315a1.gitlab.io/index.xml" rel="self" type="application/rss+xml"/><item><title>SWE 2410 Coding Standard</title><link>https://swe2410-9315a1.gitlab.io/coding-standard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://swe2410-9315a1.gitlab.io/coding-standard/</guid><description>&lt;h2 id="swe-2410-coding-standard"&gt;&lt;a href="./"&gt;SWE 2410&lt;/a&gt; Coding Standard&lt;/h2&gt;
&lt;p&gt;In addition to correctness, solutions will be graded for style and
design. Additional detail is given below, but here are the key points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use meaningful names for identifiers except those with very limited
scope (such as the parameter for a one-line function).&lt;/li&gt;
&lt;li&gt;Format your programs consistently and nicely, including judicious use
of spaces and blank lines. Keep line lengths to about 100 characters.&lt;/li&gt;
&lt;li&gt;Ensure your files contain &lt;a href="https://opensourcehacker.com/2012/05/13/never-use-hard-tabs"&gt;no hard
tabs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Include your name (prominently) in &lt;em&gt;all&lt;/em&gt; source code files you edit.
Note this does not include &lt;code&gt;.fxml&lt;/code&gt; and similar files.&lt;/li&gt;
&lt;li&gt;Document the responsiblities of the classes you write. For example,
// Track owner, tenant, and number of apartment class Apartment { ...
} // Record both available and unavailable apartments in a building
class Building { Apartment[] available_apartments, open_apartments
... } // Track current floor and call destinations of the elevator //
as well as its maintenance history class Elevator { ... }
In general, the goal is to provide enough documentation that another
person can understand the modules in your solution, without providing
documentation that is blatently obvious from examining the code.&lt;/li&gt;
&lt;li&gt;Follow standard design principles including small subroutines, minimal
repeated code, and tightly scoped identifiers.&lt;/li&gt;
&lt;li&gt;Use appropriate exception processing.&lt;/li&gt;
&lt;li&gt;Fix your code so it builds without compilation warnings. Use only
standard, documented libraries distributed with Java and JavaFX.&lt;/li&gt;
&lt;li&gt;Use lower case for repository, file, and other names unless a tool
(such as &lt;code&gt;javac&lt;/code&gt;!) mandates a different convention.&lt;/li&gt;
&lt;li&gt;Do not check build products into repositories, including third-party
libraries.&lt;/li&gt;
&lt;li&gt;Do not print extra output such as debugging output.&lt;/li&gt;
&lt;li&gt;Do not include large amounts of dead code - code that has been
commented out or otherwise disabled.&lt;/li&gt;
&lt;li&gt;Do not introduce constructs that break abstractions: &lt;code&gt;instanceof&lt;/code&gt;,
package visibility, getters and setters for lots of data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additional detail:&lt;/p&gt;</description></item><item><title>SWE 2410 Syllabus, Hasker</title><link>https://swe2410-9315a1.gitlab.io/hasker-syllabus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://swe2410-9315a1.gitlab.io/hasker-syllabus/</guid><description>&lt;p&gt;&lt;strong&gt;Instructor&lt;/strong&gt;: &lt;a href="https://faculty-web.msoe.edu/hasker/"&gt;Rob Hasker&lt;/a&gt;
(414-277-7326)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Drop-in times&lt;/strong&gt; (office hours): See my home page:
&lt;a href="https://faculty-web.msoe.edu/hasker/"&gt;&lt;code&gt;https://faculty-web.msoe.edu/hasker/&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Textbook:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Design Patterns Explained: A New Perspective on Object-Oriented Design&lt;/em&gt;,
2nd Ed., Shalloway and Trott, Addison-Wesley, 2005. ISBN: 978-0-321-24714-8&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Optional reference:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Weekly Outcomes</title><link>https://swe2410-9315a1.gitlab.io/outcomes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://swe2410-9315a1.gitlab.io/outcomes/</guid><description>&lt;p&gt;Weekly, detailed outcomes for SWE 2410. See the course notes
for additional detail. Week numbers are provided, but many topics will be the
week before or a week later.&lt;/p&gt;
&lt;p&gt;The overall structure of the course, with &lt;a href="https://tips.uark.edu/using-blooms-taxonomy/"&gt;Bloom&amp;rsquo;s Taxonomic&lt;/a&gt; level in parentheses:&lt;/p&gt;</description></item><item><title>UML Standards</title><link>https://swe2410-9315a1.gitlab.io/uml-standards/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://swe2410-9315a1.gitlab.io/uml-standards/</guid><description>&lt;p&gt;&lt;a id="all"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="all-diagrams"&gt;All Diagrams&lt;/h2&gt;
&lt;p&gt;This section gives the general requirements; requirements for specific types of
diagrams are below.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use CamelCase for class names, meaning use upper-case letters for the first
word and all following words, lower case for all other letters. The
exceptions would be class names in some libraries (for example, the C++ STL)
and standard abbreviations (such as MSOE).&lt;/li&gt;
&lt;li&gt;Avoid non-standard abbreviations. &amp;ldquo;App&amp;rdquo; is fine, but most other
abbreviations are not. They make code hard to maintain because other
developers have to remember which abbreviations you prefer. For the same
reason, avoid spelling errors, especially for words within names.&lt;/li&gt;
&lt;li&gt;All classes should be associated with at least one other class.&lt;/li&gt;
&lt;li&gt;Avoid redundancy. For example, if class A relates to B and B relates to C,
there is rarely any need for A to relate directly to C. As another example,
avoid showing a relationship to another class and listing an instance of that
class in the box. The relationship implies the instance.&lt;/li&gt;
&lt;li&gt;Avoid the aggregation symbol (open diamond) on associations. Many people
believe there is a strong distinction between this and other associations,
but in fact the UML standard gives no meaning to this notation.&lt;/li&gt;
&lt;li&gt;Avoid the uses symbol (dashed arrow) on associations. These are temporary
associations related to a particular implementation of a method, and of
limited value to understanding the structure of a system. They often capture
a particular implementation, nothing They make a diagram hard to read without
adding value.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In general, be careful on how you use UML notation. UML is very carefully
designed to convey key information without unnecessary redundancy. Non-standard
notation adds confusion, defeating the purposes of drawing diagrams in the
first place. This is especially important in the core notation: using open
triangles for generalization, open (v-shaped) arrows for direct association,
solid lines for associations, etc. Learning to use the correct notation can be
very important for interviews because it&amp;rsquo;s one way people sort out those who
have learned basic software engineering concepts from those who have not.&lt;/p&gt;</description></item><item><title>Lab 2: Checkers and Strategies</title><link>https://swe2410-9315a1.gitlab.io/lab2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://swe2410-9315a1.gitlab.io/lab2/</guid><description>&lt;p&gt;As for many patterns, the Strategy Pattern improves cohesion by removing &lt;code&gt;if&lt;/code&gt;
statements in code. In this lab, you will refactor your
&lt;a href="../lab1/"&gt;Lab 1&lt;/a&gt; solution to remove the if statements based on whether a piece
is regular or a king. You may leave the if statements based on whether a piece
is red or black, but if you prefer you can use the Strategy Pattern to remove
those as well.&lt;/p&gt;</description></item><item><title>Enterprise Architect</title><link>https://swe2410-9315a1.gitlab.io/tools/ea/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://swe2410-9315a1.gitlab.io/tools/ea/</guid><description>&lt;h1 id="installing-ea"&gt;Installing EA&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;Microsoft Store&lt;/strong&gt;. Install &lt;strong&gt;Company Portal&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Open Company Portal. Search for &lt;strong&gt;Enterprise Architect&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Hit &lt;strong&gt;Install&lt;/strong&gt;. Wait for the install to reach 100%. Wait a few more minutes for the reinstall button to appear, indicating the install is complete&lt;/li&gt;
&lt;li&gt;Open Enterprise Architect by searching for it in the Start menu/search bar&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="creating-classes-and-relationships-in-ea"&gt;Creating classes and relationships in EA&lt;/h1&gt;
&lt;h2 id="creating-a-class-diagram-in-ea"&gt;Creating a class diagram in EA&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;On the welcome screen, in the main window, below Open and &lt;strong&gt;Personal Project&lt;/strong&gt;, click &lt;strong&gt;Create New&lt;/strong&gt;. In the process, you choose where you will save it&lt;/li&gt;
&lt;li&gt;In the Browser on the left, &lt;em&gt;right-click&lt;/em&gt; &lt;strong&gt;Model&lt;/strong&gt;. &lt;em&gt;Select&lt;/em&gt; &lt;strong&gt;Add View&lt;/strong&gt;. Keep the default option Create Diagram. &lt;em&gt;Click&lt;/em&gt; the &lt;strong&gt;OK&lt;/strong&gt; button. Keep the default option of a UML Structural Class diagram. &lt;em&gt;Click&lt;/em&gt; the &lt;strong&gt;OK&lt;/strong&gt; button&lt;/li&gt;
&lt;li&gt;In the central pane of the document, above the great blanks space where you want to draw, right above where it says &amp;ldquo;Start Page&amp;rdquo; with a small blue logo, click on the &lt;strong&gt;&amp;raquo;&lt;/strong&gt; symbol to open the toolbox&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note that the little three boxes icon represents a diagram. As you create objects, they will sit &lt;em&gt;beside&lt;/em&gt; the diagram, not in it. If you find yourself deleting extra stuff after trying the next few steps, be careful not to delete your diagram at the same time. If you do, you can recreate it by right-clicking on the view and selecting &lt;strong&gt;Add Diagram&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>