Thursday, August 31, 2006

Free Security Engineering Book

Ross Anderson has just released his classic security book for free (as in beer). Have a look. Security is a seriously hot issue these days, and likely to continue into the foreseeable future. This is a whole other aspect of software engineering that is often overlooked.

UML Cheatsheet

Lou Franco has produced a nice, short UML Cheatsheet under the Creative Commons licence. Have a look and use it to keep your diagrams straight!

Journal Entry 2: Modeling and Rationale

Now that you are working on a more detailed proposal, I would like you to pick one aspect of your project and sketch a UML model of it. I want the journal entry to record how this model changed as you completed the sketch, and how it changed the proposal that you are writing. Refer to Chapter 12, Rationale, for some things to think about when discussing the changes that happened; what were the issues, alternatives, criteria, arguments, and decisions you made? Aspects of the project that you can model include, tasks (timeline), the user interface, the data model, etc. If this approach is helpful in the creation of your proposal, consider modeling multiple aspects; think about how these models interact.

Due Thursday Sept 7.

Tuesday, August 29, 2006

Ajax Demystified

"Ajax, shorthand for Asynchronous JavaScript and XML, is a web development technique for creating interactive web applications. The intent is to make web pages feel more responsive by exchanging small amounts of data with the server behind the scenes, so that the entire web page does not have to be reloaded each time the user makes a change. This is meant to increase the web page's interactivity, speed, and usability."
-
from Wikipedia

Here is a nice article by Drew McLellan at xml.com about the design methodology. Article includes basic code examples!

Monday, August 28, 2006

Assignment 2: The Proposal

This assignment asks you to develop a full proposal for the project that you identified in the concept paragraph. You will end up doing two revisions in the course of two weeks, with a presentation at the end. Together, we will determine which of these proposals will become class projects. There will also be a special award for those who's project is chosen! Please start early, writing isn't easy, and you will have other work to do during that time.

Timing is Everything

Robert Martin contrasts traditional and agile project management and timeline methods in a nice article from 2003.

"Project plans are afflicted by uncertainties that turn schedules into random variables. Fortunately we can measure that randomness and use it to determine the probabilities that certain tasks will be complete by certain dates. Once we know the probabilities, we can manage the project by adjusting scope, manpower, and schedule so that the probability of a desirable outcome remains high."

Not to my surprise, Wikipedia has a concise but comprehensive description of Project Management from a number of perspectives.

Thursday, August 24, 2006

Educators from CMU discuss rapid game prototyping

Kyle Gabler, Kyle Gray, Matt Kucic, and Shalin Shodhan from CMU have a delightful Gamasutra article on ultra fast Game Prototyping. This article discusses a methodology for quickly exploring and developing new ideas. This methodology will be revisited later in the course, when we discuss development strategies like Agile XP.

Journal Entry 1: A Process Summary.

Your first required journal entry will be a one page description of the software engineering process, as you see it now. What steps, tools, and skills are involved? How do you predict the project will be managed?

Due Thursday Aug 31.

Nice, Short Proposal Writing Guide

Alice Reid covers general Proposal Writing concisely.

"The general purpose of any proposal is to persuade the readers to do something -- whether it is to persuade a potential customer to purchase goods and/or services, or to persuade your employer to fund a project or to implement a program that you would like to launch."

Wednesday, August 23, 2006

An excelent article on the (engineering) process

Gary Pollice discusses various issues related to the project development process.

Gary Pollice is a professor of practice at Worcester Polytechnic Institute, in Worcester, MA. He teaches software engineering, design, testing, and other computer science courses, and also directs student projects. Before entering the academic world, he spent more than thirty-five years developing various kinds of software, from business applications to compilers and tools. His last industry job was with IBM Rational software, where he was known as "the RUP Curmudgeon" and was also a member of the original Rational Suite team. He is the primary author of Software Development for Small Teams: A RUP-Centric Approach, published by Addison-Wesley in 2004. He holds a BA in mathematics and an MS in computer science.

Assignment 1: Concept Paragraph

Your task is twofold: 1) identify a "novel" idea suitable for a small group project, and 2) write a short, high-level overview of the project. Item 1 can involve picking up an unfinished project from a previous class, a pet project that has captured your interest but never made it to the top of the heap, or some other creative idea that you feel has some value or demand. I want you to identify something that has marketability, and doesn't directly copy some other, existing idea. For item 2, you should imagine a non-technical target audience. What is the thing you propose? What does it do, and who will use it? Consider previous work, and how this project differs from that. I want a clean, executive summary; no spelling or grammar errors please.

This assignment will be the introduction for Assignment 2, the project proposal, due a week later.

Welcome

Welcome to cs460: Software Engineering. Is it art, architecture, or bureaucracy? A bit of each, I guess. Mostly, it's a required, core cs class. Another hoop to jump through. For me, it's a bit more. Software Engineering encapsulates some of the most challenging aspects of "real" software design. While much of the course deals with formal methods for specification and project management, the real take-away is experience communicating about software design at multiple levels of abstraction.

The class syllabus is here.