Software Engineering: Analysis and Design

CSE3308




Program Specifications

0 comments

Song Browser
Users can move songs around the system by clicking and dragging them from the song lists to the buttons which display the other sections of the display. What happens depends on the button.
Recording Studio: Adds the song to 'To Record' list in that window.
Karaoke Box: Adds the song to the queue under your name.

The Karaoke Box Window
This is kept separate from the main window - one window for each open Karaoke box (should this be limited to one or two? Should people be allowed to join more than one box at a time? Bandwidth alone might limit this, but some 'power' users might like to join more than one.) We're saying for now that the user can only join one Karaoke box at a time. Which is displayed in a separate window?
it would be nice to keep it in the one window though. Could the Song chooser be one half (slider bar divided) of the Karaoke Box window, and the other half be the video display and the other box specific stuff itself? Including the all important song queue.
Anyway why am I restricting myself to the desktop metaphor anyway? Familiar controls and user interface are one reason.

Users can click 'view this song in ITMS to purchase the artist's original song if they so wish.

Preferences Menu
Users can edit their profile information in the preferences pane under the 'Profile' tab.


The Karaoke Box view
In this view, when there is no-one singing, everyone's faces are shown in the video window- an aggregation video of everyone's current feeds.


KTV User Interface

0 comments

SingleWindowKTVMockup.jpg
This is a single window version of what KTV might be.

Why not have the Song chooser as some kinf of central screen, and then the other screens whoosh off to the right, left top and bottom for the other sections. This could be wasting already strained cycles.

Here are some preliminary and VERY CRUDE layouts. Well actually the layout is all wrong, but it provides a foundation of what is achievable.
OnlineKaraokeView.jpg
Shows how the main online karaoke view may look. The left hand side shows the song library browser, common to most views, that can wrap all the way into the left.
OnlineKaraokeBoxViewer.jpg
This is kind of what the box chooser would look like. You choose a 'venue' from the left, and then an actual box on the right. From here users can also 'create a new box' and edit its attributes, and then join it. Although the button is hidden, it reads 'join this box'.
StudioView.jpg
Showing where a user is recording to disk (as opposed to live online broadcast) a karaoke song.



Have to examine whether need to have more than one view on screen at any time.

Sovereign Posture:
Will be designed for mostly full screen use - but could be resized to a small extent.

http://www.wormseyefilms.com/quicktimes/kb_sybg.mov
This is an example of the ghastly effects that that this software could have!


Karaoke Boxes: Use Cases

0 comments

<<These must come later on - I have accidentally slipped into the design mode too soon. Let's finish analysing first!>>
Use Cases
Join A Karaoke Room
Choose Karaoke Room to Join
Select the Karaoke Room
Select Join Room

Choosing A Karaoke Room
Display the list of available karaoke rooms in the main window.
Select the room entry from the list and select it.


KTV Functional Specs

0 comments

What the Mac needs is Karaoke. Sure, Garageband is great: for people who can play instruments, but for the rest of us uncultured swine, we need something that anyone can belt out a tune into, with idiot sheets, to the equal disturbance of our neighbours. What with all Macs shipping with a mic and camera these days, it makes for a perfect environment for Karaoke (KTV). This page hosts the Functional Specifications for KTV. So this is what is should do:

Program Description
The software will be a socially networked system which co-ordinates and manages an online karaoke experience through a desktop application. Broadly, it will co-ordinate online karaoke boxes, which users can join and sing their favourite songs in, and will also allow for the recording of karaoke, which can be entered in a potentially global karaoke contest. (Think Karaoke Idol). Ghastly - yes, I know, that's the point.

Functional Specifications
This is a list of features that the software should implement. It is probably dynamic, and will grow and shrink as I think of more cool stuff this beast could do. Implementation complexity to the wind! This is a creative space.

Recording Studio
Use their computer's multimedia capabilities (iSight / microphone) to record AV material as a song.
Participate as a group at one computer ('band' style), all entering their usernames to 'gain credit' for their performances.
Submit their recordings for review and viewing by other users.
Recorded songs can be posted as an entry into the online singing contest, which is rated and voted for by other users.
When there is more than one recording, the user can choose which recording of should be uploaded.


Recorded Video Browser

Be able to view other user's recorded video from a central repository (using google video's service?).
Be able to browse other user's video by ranking, popularity, song, language, country, karaoke-room.
"View other people who sang this song"

Online Karaoke Box
'Join a room' and take turns at singing songs of their choices (from their or their friends' library)
Rate other people's performances after they've given them.
Enable voice communication between performances.
Sing a song by themselves, or with friends, remotely as well as from the same computer.
Add songs to a queue.
Reorder the songs in the queue.
Stop a song you're currently singing.
Fast forward through the boring bits in a song (the instrumental part).

Be able to search for songs to sing via the on screen catalogue, and add it to the 'song queue' for that karaoke room

Box Management

Create an online Karaoke box.
Set the options for that Karaoke Box
Limit the number of users allowed in one box.
Invite users to that karaoke box (from their friend list, or let anyone join)
Request other users to sing a song (song requests)

Karaoke boxes (rooms) can be set to themes that reflect the songs that are sung. These would usually reflect the genre of music.
Rooms can be selective about who can enter a room (Ie, elite singers! Professional etc).
Optionally allow other users to connect to a steaming feed of a karaoke box.

Managing Songs
Be able to drag a song from the song directory into their own library to download it (and have it marked as unsung)

Displaying Lyrics
The lyrics for the song should come up on the screen to sing the song along to (as per karaoke).
When the lyrics are in another language, the translated lyrics can be shown to other listeners as subtitles so that other users know what they are looking at (this will require some centralised lyric database with translations).

Comments and Managing Spam
Comment on other people's recordings / performances.
Manage Comments and other user feedback by flagging inappropriate and therefore for possible deletion.


Managing identities
Register themselves.
Edit their profile
Add custom user generated fields to their profiles


Additional Features

Users who are popular can become 'featured' singers.
Can view all users according to their ranking.
Schedule karaoke-time with their friends.
Add karaoke time to iCal.
Keep a list of their karaoke friends.
Be able to subscribe to other people's recordings.
Subscribe to the 'best-of' and 'worst-of' KTV through a vidcast available via iTunes

Lyric Database

Songs will come from a centralised database of songs which have the lyrics attached and possibly certain themes attached to them.

Use an open user generated Lyric Database.
May need to set the lyric transition timing themselves if they have not already been set.


Audio Controls
Adjust the audio levels

Effects
A library of effects will be available to the user to put on top of the video stream or recording in real time or post recording / Have interactive layers that the user can play with via the iSight.
Be able to theme the colour of the fonts. (through a NNW style theme selector).

Uploading
The audio and video quality can be adjusted to meet bandwidth requirements in the live karaoke, but will be set to a set of standards for the recorded submissions. Use a skype API (if available) for A/V communications. For online storage, outsourcing storage to Youtube or google video might be good.

The system should
Disable networked features when no network is available (The system will facilitate all of the above requirements from within the application whether the computer is connected to the internet or not.)

Possible ideas
If a user finds a video clip online, they could do 'reverse-drag-from-home' by singing in place of the singer in the video, and the Karaoke goes over the top. Could be fun.

//These are the strings that documented the original brain wave //
Wouldn't it be fun to have the whole world in a great big online singing contest!
nettokara!
It could be an online Idol competition hosted through iTunes.
Language specific competitions.
Global Idol kind of thing!
--
Also - I don't pertain that this is by any means an original idea!

So that's basically at a high level what I think the system should do. Sound exciting? You only have to take a casual glance at any of the major video sharing services out there to see that people are already making fools of themselves as it is! We should make it easy and fun for them to do it and at least a bit socially acceptable.


ToDo List: KTV

0 comments

I'm going to go about my exam study by doing some actual software speccing and designing.
Topics to cover (this is also like a list of things to do for the project design)
Analysis
User Interface Design
Requirements Analysis / Specification analysis
Affordances, etc
Design
Object Oriented Design techniques
UML diagrams -
Class Diagrams
Expanded Use Cases
State Diagrams
Interaction Diagrams
Structured Analysis stuff too
DataFlowDiagrams, DataDictioanries, Process Specifications
Will also have to look at the post production stuff too that is important, like testing, documentation, the of SE stuff in the lecture notes I think.
Faults, failures
Metrics


Some Extra Notes

0 comments

What is risk?
Risk Areas in Software Development
Risk Analysis
Portfolio Risk Management
Techniques for managing risks.

Why do systems fail?
Types of failure
Resource
Requirements

Reverse engineer the exam!!
What do I want people to know after the exam? What hasn't been covered in the projects and assignments?

For each lecture, what is the important idea? There might be three or four.

Reliability metrics



An affordance is something that shows you how it is meant to be used via something about the way it looks.
Being aware of the mental models in the system.


Quips and Quotes

0 comments

Programming is easy, design is hard.

Why don't you visit my bog?
Do you read my bog?



Also, start using design concepts of the software engineering course to design Words (for the second semester project) and document it in a useable way too.
This way, at the end of the study, I'll also have a deliverable ready for next semester!

So by the looks of things, I'm not really going to have much time to work on those extra little projects such as the noodletimer and the nook uploader, because, well, I have bigger fish to fry, and better ones! Sure, I can learn something from doing them, and I have, but one of those lessons has been to prioritise my tasks.


Software Metrics.

0 comments

Measurement of some aspect of the software product or the software process.
We do this for a variety of reasons.
-Measure the quality of a product
If we find that a customer is doing better than another because of our software, we CAN use that as a metric in our advertising campaigns etc.

We need metrics because it looks like a lot of programmers get very much done at all.
A good programmer can get a whole lot more done than a bad programmer.


Risk Management

0 comments

Assignment Due Wednesday 10th.

Risk Management - remember the 80/20 Rule. 80% of the impact will come from 20% of the risks.
Monitor the risks as the project progresses.

McFarlan's risk assessment method

Three factors:
Project Size
larger the project, the greater the risk.
Experience with the Technology
The difficulty is knowing which program you should be writing.
Project Structure

Organisations can't go on building low risk projects.
They should have a portfolio of risks in their system development.
But you have to take risks, or your competitors will get ahead.

So you have four main categories of techniques to manage risk.
External integration tools
Internal
Formal planning tools
... (see the slide)

Formal Planning Tools
PERT (Program Eval and Review Technique) and CPA (critical path analysis)
Formal Control Tools
Status reports, etc.

Reliability
IT Boom is over! But still possible to come up with killer apps :-D
What is reliability, failures and faults.

Reliability is how long a program will run for before it falls over.
How well do the users think it works?

You can't define reliability absolutely, only in relation to a particular operational context. Hell, people might deliberately try to break the system!

Faults cause failures to occur, they're static software characteristics. But faults don't necessarily cause failures.
A failure corresponds ti unexpected run-time behaviour observed by the user of the system.

Reliability is related to the probability that a fault will cause a failure while in operational use. Obvious statement huh

Reliability is desirable, but it's only one of many desirable characteristics. Besides, it costs a whole lot of cash. So you have to, as usual, weigh up how much more you want to increase costs by redundant hardware, additional design, additional implementation work etc. Even the product can become sluggish and a behemoth because of extra code to handle exceptions.

So what's the GOOD thing about reliability?
Unreliable software isn't used by anyone. No one updates them either. System failure costs can be very high (re. Wespac debacle). Don't optimise! (The rules of optimisation).

Good enough software. Microsoft might be able to get away with this more (!)
It's an old concept though, recently especially promulgated in the software industry.

So how do we measure reliability?
Most of the techniques are derived from hardware reliability metrics.
How many times a day will the mainframe fall over?
This is very important in any continuously running system.

誰のことも気にしない!集中
勉強する方法。簡単な言葉で同じ事を言う。シェアできるし、勉強にはなる。


Last posts

Archives

Links