Skip to main content

A Word About the Analysis Sequence

I mentioned it earlier at some point, but I'm not following the traditional method of system analysis and design as taught in my class. I'm skipping quite a few steps, and really what I'm planning to end up with is a little disjointed. However, I have some reasons for that--namely that in a situation like this, I feel going whole hog on the discovery phase is redundant.

For instance, domain model and entity relationship model. If a student had come to me and described the problem and asked for a solution? Yes. Absolutely. I would need to sketch this out--what things am I working with? Which things are going to live in the database? Does a course have a grade like a planet has a moon, or is a course and a grade more like Mars and Uranus? These are important questions that need answered before you can get into the meat and potatoes.


But...I already did that. Months ago. Before I knew what a domain class model even was, but I have the relationships and the entities all laid out. There's not that many of them. Wait, I can hear it now:
But John--then shouldn't you just go through the motions? Throw together something in diagram form just to prove you know how to do it?
And to that italicized block quote let me say, "Be patient."

There is very limited value to this project to just listing all the "things" in the domain, broadly defined, just for the sake of listing them. In fact, I'd argue the sole point would be to prove to some reader of this blog down the road that I in fact know how to do it. For my time and money (both very limited!) I think that would be better proven with the more detailed, iteration-based diagrams and ultimately a complete project.

The initial domain class diagram and entity relationship diagrams to me are like outlines you do before a rough draft--really useful if you're groping in the dark trying to find words but a painful, derailing distraction if you already know enough to string sentences together. In my CSCI-1275 class, our project was to build a system that allowed realtors and buyers to list and view houses--not a subject that I was familiar with at all. In that case, brainstorming use cases and domain objects and how they related was not just helpful but crucial to making sense of what our system had to do.

We didn't know the problems that needed to be solved, until we talked it out and mapped it. We found we had to make decisions--realtors could have multiple listings, but could a listing have multiple realtors? Could a seller or buyer have multiple realtors? Until we laid it out visually, these questions seemed to all have "Maybe?" as the answer. We didn't know enough to start defining class structures or activity flows until those had been completed.

I'm not doing a research paper that needs an outline to organize a bunch of disparate facts I looked up. I'm writing an opinion piece on a topic I've felt passionate about for some time. I don't need to puzzle out what I'm thinking, I just need to organize concepts in the most effective way possible. Don't have to go back to "See Jane run" and build complexity piece by piece in order to say "Jane outran every boy in her class, shouting 'Who wants to run like a girl now?'" do we?

Comments

Popular posts from this blog

Use Cases: The Theory

They told me in my CSCI-1275 Systems Analysis and Design course there's a tendency for programmers to just start coding stuff without thinking, and this was nigh on tantamount to total catastrophe. I didn't fully understand this until a little later in the semester. We had just learned about arrays and collections in my CSCI-1630 C# Programming I course, and I found this to be a perfect excuse to write a little application that would synthetically divide polynomials . (That's a really great way to master synthetic division, actually, if you're interested in brushing up on that skill. Although my wife still insists the time would have been better spent putting more time into my algebra homework. Two types of people...). At any rate, long story short: I made the program work perfectly, for 3rd degree polynomials that divided evenly. Then I realized it broke when I tried a polynomial of the 4th degree. And then again when the 3rd degree polynomial had a remainder. ...

Activity Diagram: Theory

So I've got use cases figured out. Not all of them--only a fool or a genius thinks he can sit at a desk away from the end user and think he's got all the use cases figured out (and a genius would never truly believe it). But you can't sit around trying to anticipate every possible use case before you start, so once we have enough to cobble together a complete program or part of one we can move on for a bit. Side note, this is the beauty of the agile approach: "Yeah, we know we gotta go to the moon. But we have to do it in 10 years, so we can't spend 5 years thinking up every problem we might need to solve before we start solving them. How about we start with 'design a rocket that reaches orbit without killing anyone' and build on that when we finish?" That's called an iteration, but more on that later. Fleshing out what that use case needs is the next step, and there are a couple tools I remember being taught. One of them is the activity diagra...

Activity Diagrams: Pertaining to the Project

I don't think I'll be posting about every diagram I do--they're not great works of art the world must see, and if you really wanna see them they'll be in the Github repo. But I did want to post something project specific for each piece of theory here. Thus, please see below. I think this is pretty self explanatory, even to the uninitiated. Black dot with no ring is the start point, black dot with a ring is the end of the use case. In this case, we can end the use case by just...stopping, or by going on to the "create course" use case. Which will be a diagram I can link to, hence that weird symbol after the Create Course block. As an aside, I'm using a program called Violet to do my diagrams, and have been for about a year now. It may not be as fancy as Visio or several online subscription options, but I'm honestly more interested in being able to get something on paper (so to speak) quickly, so I can start messing with it. I need to understand...