|Start Software Modeling and Analysis Course
- Come to all classes - skipping class to work on projects is a mistake.
- Buy the text - sharing among three or four students should work.
Come to Friday morning help sessions when you are confused (9:00am - 11:00am). We have time to discuss your questions
in detail. The only dumb question is the one you don't ask.
Plan to spend 20 hours working on an OCD and 50 hours working on each project. Those numbers are averages - your mileage
- Begin studying C# examples while you are developing your first OCD.
- See the TAs for help with OCD layout and C# coding.
- Ask questions in class.
- Don't carry on side conversations during class - that annoys the instructor.
- Develop text and code prototypes early, refine, and organize into bigger units.
|Begin an Operational Concept Document (OCD)
Read the project statement, then enumerate Tasks needed to meet requirements.
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.
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.
Identify project risk factors - think about safety, performance, complexity, ease of use, value returned.
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 your the program operations that are part of the initial concept.
For creating diagrams, I favor using Gliffy - free from Google Store (access through Chrome). Here's an example:
In the past I've used Visio - free for students from Dreamspark - but you are allowed to draw neat hand sketches,
photograph them and include the image in your OCD. Here's an example:
Consider using other diagrams discussed in the notations presentation.
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.
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 is an excellent example.
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.
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.
Install Visual Studio 2017 Community Edition on your computer (requires about 2 Gb of free disk space). You can also get
Visual Studio, Enterprise Edition at no cost through Dreamspark using your SU credentials.
Go to this link: DreamSpark, set up an account using your SUID credentials,
then download Visual Studio 2017, Enterprise Edition. That gives you an iso file that you can burn to a CD and install,
or mount directly using Windows Explorer.
If you use a mac, you will need to install a virtual machine like VirtualBox, or
Then install Windows in the virtual machine.
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.
Here I've given references for very basic video tutorials:
Use your Visual Studio Hammer
Very simple GUI app - YouTube
Microsoft Virtual Academy
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'll do a demo of this process in an early Friday Morning help session. If necessary, the TAs can do another
demonstration during their Office Hours.
C# Basic Syntax,
C# File and Stream Handling,
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.
When you get to the due date for the project submit whatever you have working.
Note that you will loose one point per day for late submissions.
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..
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 class.
If you design with the keyboard you will have many frustrating sleepless nights. Think first.
Then test thoroughly as you go.