T B H P N

Note - Getting Started with CSE681 - SMA

How do you start SMA, start developing concepts, start developing code, and deliver projects???
Getting Started!
Start Software Modeling and Analysis Course
  1. Read assignments, listed in the Syllabus, and project statements before coming to class. Participate in all classes - skipping to work on projects is a mistake.
  2. The class text focuses on C# and the .Net Framework. It covers details you need to complete projects, for which there isn't enough time in the Asynchronous and Synchronous sessions. So, buy the text.
  3. Ask questions during classes or the Friday Help Sessions when you are confused. We have time to discuss your questions in detail. The only dumb question is the one you don't ask. You can also post questions on Piazza.
  4. Plan to spend 20 hours working on an OCD (Project #1) and about 50 hours working on each succeeding project. Those numbers are averages - your mileage may vary.
  5. Begin studying C# examples while you are developing your Project #1 OCD.
  6. Ask questions for help with OCD layout and C# coding.
  7. Develop text and code prototypes early, refine, and organize into bigger units.
Begin an Operational Concept Document (OCD)
  1. Read the project statement, then enumerate Tasks needed to meet requirements.
  2. Identify all the types of users you will support and think about their objectives and the system behaviors they may want. Note that these are uses, not design cases.
  3. Decide the impact of satisfying those needs on the project size, complexity, and effort to complete. Then decide which of these needs the system design should support.
  4. Identify project risk factors - think about safety, performance, complexity, ease of use, value returned.
  5. Partition the system into major packages - these often mirror the tasks you identified in the first step. Prepare a package diagram showing each of these packages and their dependency relationships. Activity Diagrams are very useful for describing the program operations that are part of your initial concept.

    We recommend using Gliffy - free from Google Store (access through Chrome). Here's an example package diagram:

    Package diagram

  6. Consider using other diagrams - see links in the Lecture #1 and Lecture #2 lecture pages. Use diagrams to make your discussions easier to understand and remember. Each diagram should be accompanied by text that says (a) why the diagram is here, (b) what it tells us, and (c) what conclusions we should draw.
  7. In summary, the Operational Concept Document (OCD) focuses on uses, partitions, and risks. It does that by carefully combining text with diagrams to make the concept clear and easy to understand. Here are good Sample OCDs.
  8. Provide an Executive Summary at the beginning. It's purpose is to describe not what you did but rather to describe what you've decided about the project uses, structure, and risks.
  9. Useful Resources:

    OCD Study Guide, OCD Survival Guide, Software Architecture Presentation
Start Developing Code
Note: I'll use the term "project" to refer to the work you are doing in response to a Project Statement. I'll also write project when I mean a Visual Studio project. That is simply a collection of packages that gets compiled into a library or executable. A package is a C# file with prologue, code, and test stub. Each new (VS) project you add has a new package, usually along with packages you've developed in other projects.
  1. Install Visual Studio 2017 Community Edition on your computer (requires about 400 Mb of free disk space).
  2. I've prepared a Visual Studio handout that gives you explicit directions for doing most of the things you need to do when working on projects, e.g., create a project, add code files, compile, etc. All of the screen shots focus on C++ development. However, you'll find it easy to tailor for C# development. Note that the handout, linked above, describes Visual Studio 2012. However, almost everything is accurate for Visual Studio 2015, except that the screen shots look a bit different.
  3. Here I've given references for very basic video tutorials:
    Use your Visual Studio Hammer Very simple GUI app - YouTube Microsoft Tutorials Microsoft Virtual Academy
  4. OK, so now what? Here's the process I use for developing code:
    • Develop a project concept with high level partitioning
    • Create an empty solution
    • Add existing VSprojects for any code packages you are reusing from some other development, very likely things I've developed and made available to you from this website.
    • Starting at the bottom-level of the partitioning, select a partition from your concept and create a console application VSproject to implement its functionality. Add code, perhaps making calls into the software you've already added to the solution (reused or an earlier VSproject you implemented). Add classes with member functions that implement the partition's activities. Add tests to the console application's main function and don't move on to any other coding until this package works as expected. Now, wrap the main with compiler declarations that allow you to skip compiling the main tests so you can start working on another package.
    • Keep repeating this process until you add an executive package that implements the entire program's tasks by making calls into the lower level partitions you've implement earlier.
    • I will do a demo of this process in an early lecture. If necessary, the TA can do another demonstration during TA Office Hours.
  5. Useful Resources:

    C# Basic Syntax, C# File and Stream Handling, .Net Containers
Submit Projects
  1. Build your solutions so you always are adding one new VSproject to a set of other working VSprojects. Those should be well-designed, robust, and effective.
  2. When you get to the due date for the project submit whatever you have working. Note that you will lose one point per day for late submissions.
  3. The only reason for continuing beyond the due date is if you believe you will get increased score on your project that will more than off-set the late fee penalty..
  4. All of this assumes you work out a concept and then a design before developing code. The design phase should be very brief after you've finished your OCD, since you've already thought through most of the issues and know how to proceed. Here you simply lay out the classes you'll use and figure out how to handle ownership and communication. We'll talk a lot about that in lectures.