Showing posts with label class discussion. Show all posts
Showing posts with label class discussion. Show all posts

Friday, November 4, 2005

Resource sources

Charles "Chuck"  Lutz presents a host of great resources on the web in this discussion group entry.  In particular he provides a reference to a Parnas paper and that is fantastic.  As you recall, I encourage any aspiring software engineer to get the Parnas' book of collected papers, Software fundamentals: Collected papers by David L. Parnas, D.M. Hoffman and D.M. Weiss(Eds.), Addison Wesley, 2001, ISBN: 0-201-70369-6.  Especially since the gift giving season is upon us, you might give yourself this book.  It will serve you well.  Highly recommended.



Mary Shaw's paper that Chuck refers to in van Vliet is "Some patterns for software architectures."  Mary Shaw and David Garlan also wrote a book on software architecture, Software architecture: Perspectives on an emerging discipline, Prentice Hall, 1996, ISBN:0-13-182957-2.  One of the few rigorous books on software architectures.



Attached is Chuck's log, entry, thanks Chuck.  Later!



I've got a bunch of stuff to share that I've accumulated over the years which I believe 
has relevance to this course. I'll send them along as time permits (I've already got a
backlog...!)

FYI: Mary Shaw's paper that van Vliet refers to on p. 273 can be found here.

Parnas' paper "On the Criteria to be Used in Decomposing Systems into Modules" is an
absolute classic of software engineering. It pours a lot of timeless wisdom into just six
pages. A web search yields many sources (I would not be surprised if it is in the top ten
of most referenced papers). Here is the first that Yahoo yielded me.

A few weeks ago Prof. Vesonder mentioned in his notes a review technique of posting
information on a wall. This is a very interesting area to explore, especially in trying to
solve the problem of establishing a common vocabulary and understanding - to "get
everyone on the same page" so-to-speak.

Here are two sources I think you might find interesting:

I'm an "information design" nerd and enjoy following the work of people in the ID and
information architecture fields (IA). I've always enjoyed the work of Marc Rettig. Here is
one take
on the "wall" process as applied to product design.


For a more formal take on the "wall" process, including aspects that computer scientists
can relate to, I recommend David Straker's excellent book on getting maximum
collectively derived information using quite cheap materials.


In the future we will have wall-sized displays and software support that maximizes this
resource. I expect such techniques will become increasingly popular as the cost of
making changes decreases in these models as a result of this support.


Thursday, July 29, 2004

Invasion of the Genetically Altered Mutant Test Cases!

In my lectures on Software Testing I remark that there is not nearly enough research done on software testing. This summer, in my web based software engineering course we were discussing mutation testing and one of my students mentioned the potential application of Genetic Algorithms to mutation testing. After a bit of web searching I came across two articles that explore Genetic Algorithms for testing (pdf of article 1, pdf of article 2). Please share any comments you have on these articles or additional articles on this topic. Please also share any additional resources, pointers to research on software testing. Thanks.



In doing the research for this post, I came across yet another source for free educational material on the web. Samizdat Press has an eclectic collection of articles including a tutorial on LaTex and pointers to other free educational material sites. In the near future I hope to list most of these resources on my homepage.



My summer posting has been light. Hopefully you will see increasing frequency in the next few weeks. Later!



Thursday, April 8, 2004

Dissonant Music

On almost every college campus and most place where music lovers congregate the issue of music piracy on the web is being discussed. Illegal distribution of music on the web has cost the music industry billions. There are numerous sides to this issue. Sean Brady in his post provides his provocative, well-researched view.



I am sure many of you have comments and views on this one. Later!



Sean Brady's post:



In Lecture 4, Professor Vesonder discussed with us many ways to ruin a project, including pushing a new technology to market too quickly. One of the sub-issues raised was whether the market/environment was ready for the new technology.



Professor Vesonder recalled a project that was impacted by this issue, AT&T's a2b music service (launched in 1997) which delivered songs to users via the Internet . At the time, the market/environment was not ready because this service was forced to compete with other services that offered the same product at no cost. AT&T's business model was therefore not viable. Today, under different market conditions, the leading legal music download service is iTunes, selling more than 50 million tracks since last April, easily outdistancing all other download services. A discussion followed on the fairness of iTune's current price scheme. After further consideration of this issue, I would like to share the following thoughts:



Have you heard "Bad Moon Rising" played on the radio lately? How about "Proud Mary" or "Born on the Bayou?" The answer is probably yes. These songs, and others from the Creedence Clearwater Revival catalog, have been played continuously, on one station or another, and under one programming format or another, in every market since they were released thirty five years ago.



Earning untold tens of millions of dollars in royalties in the process. But not for the person who wrote them, CCR frontman John Fogerty. He hasn't realized a cent from those songs for over thirty years. To escape his contract, his record label forced him to sign over the rights to his own music.



Fogerty's situation is by no means unique. In fact, this industry has left many of rock and roll's pioneers poor and forgotten, after having built its fortunes on their talents. But Fogerty's case has always struck me as the most glaring. I unavoidably think of it when the record labels and their umbrella organization, the RIAA, invoke "fairness" when discussing their policies and practices.



Nonetheless, let me make the RIAA's case, in terms its socially-conscious, politically-sensitive membership may be uncomfortable stating (if not the association itself):

-- We live in a society which recognizes intellectual property rights, and for good reason

-- Those who hold the rights to intellectual property, like any other property, are free to dictate the price at which it may be purchased

-- Those who obtain intellectual property without the consent of its rightful owner are guilty of theft, and stand to be prosecuted



Note that these stipulations are entirely consistent with the following time-honored American principles, respectively:

-- The right to private property

-- Our commitment to a free market

-- The rule of law



Using such arguments, along with the aforementioned appeal to our sense of fairness, the RIAA has embarked upon an aggressive campaign to stop file sharing, culminating, most famously, in the shutdown of the original Napster. It has also filed suit against a number of file-sharing software developers and most infamously, individual downloaders. This, in turn, has paved the way for the launch of several new for-profit download services, such as Apple's iTunes.



So, how do these services determine their pricing? No differently from the companies found in any other industry. It is extraordinarily simple:



The potential provider determines the cost that will be incurred producing or performing the good or service, and the price a consumer would be willing to pay for said good or service. If the former is greater than the latter, the good or service is not likely to be produced or performed. However, if the latter is greater than the former, the good or service is likely to be produced or performed, and at a price a lot closer to the latter than the former.



As you may have noticed, the above calculus is entirely indifferent to "fairness". And yet, the RIAA, the download services, and their defenders insist upon appealing to us on ethical grounds. So, is it fair, as they contend, to charge consumers a dollar per downloaded song?



For example, they often remind us of all the album sales the industry stands to lose with such a business model. By making this argument, the defenders seem to concede the longstanding charge that most albums contain a lot more in the way of filler than hits. Why, otherwise, would album sales drop so precipitously? Then again, why wouldn't this new option have the exact-opposite -- or at the very least, a mixed -- effect? Think of all the additional tracks the companies stand to sell, now that consumers are freed from the obligation to purchase entire albums -- heretofore a major disincentive! (Young MC, anyone? How about Crash Test Dummies?)



But in the end, if we are to gauge fairness, the issue of album sales only serves as a distraction. No, we need to concern ourselves with the actual costs incurred by the online services to deliver music to consumers, and compare it with the conventional means of production and distribution. We also must examine, in close detail, the intrinsic value of the product delivered.



Until relatively recently, we received hard copies -- on vinyl, cassette, or compact disc -- and in shrink-wrapped packaging. Artwork, lyrics, and liner notes. In short, tangible objects, which could be shared with our friends, displayed on our shelves, even autographed by the recording artists.



Regardless of the format, production required light manufacturing. Distribution was achieved in stages, involving warehouses, and the loading and unloading of trucks, until the product arrived at our local record shops. Our selections were purchased with the assistance of clerks, stationed behind counters and cash registers, and then slipped into clean, crisp bags, for the journey home.



Imagine the costs -- indeed, the sheer overhead -- associated with such a system of production and distribution. Now contrast that with the recording industry's latest business model.



It proposes to sell us music as data -- zeroes and ones. Highly-compressed, low-bit-rate files, to be specific. An inherently fragile form, really, subject to corruption, deletion, infection with malicious code, or even obsolescence. Indeed, imagine the issues which will be raised following the sudden catastrophic loss of one's entire music collection -- amassed at a cost of hundreds, if not thousands of dollars -- upon the inevitable failure of the hard disk drive.



But wait, there's more! Proprietary codecs and formats. Copy-protection schemes and digital-rights management. Limited, even device-specific transferability of files. All to be stored on computers we are expected to purchase and maintain, of course.



And as for the distribution system itself? An entirely automated process, really: a few servers utilizing off-the-shelf operating systems and running not-particularly-complicated software. Bandwidth purchased in volume. A chief site administrator, a small technical staff (maybe they can be outsourced!) and a few hundred CSRs, (they will be outsourced) and the operation is more or less complete. We log onto our accounts, make our selections, authorize payment, and -- just like that -- our purchases are digitally transferred over the Internet. With exactly half of said transfer on our dime, utilizing our broadband connections.



To summarize, never before has an industry been in a position to realize such cost efficiencies in so short a period of time. It is historically unprecedented -- far, far beyond the simple elimination of bricks-and-mortar outlets (a business model exploited long before the advent of e-commerce by catalog companies.) And at a dollar per downloaded song -- roughly comparable to the rate we have grown accustomed to paying over the past fifteen years, at twelve tracks to a conventional album, priced around $15 -- it's obvious the record labels have no intention of passing any of those savings along.



Wait, maybe they've decided to offer the artists a bigger cut instead.

(Pause.)

Okay, everyone can stop laughing now.

"FAIRNESS?" The record labels don't know the meaning of the word. Just ask John Fogerty.



But then again, "fairness" has nothing to do with it.



The only question I have is, how long before we start to see e-S&H? After all, bandwidth don't grow on trees, you know.



Thursday, January 8, 2004

Proto Spasms

In our CS540 class Monday we discussed prototyping. One recurring issue is how members of the team can prevent promotion of the prototype to a product. Recall that most prototype schemes are designed to support requirements elicitation and after the prototype is completed the appropriate course is to formalize requirements and then begin design. Unfortunately prototypes often take on a life of their own and sometimes the developers contribute to it.



So the question is how can we insure that prototyping is not misused. My answer in class was a strategic one involving architects and architectural reviews. However, in organizations where reviews are not in place (and may never be in place) what can teams do to prevent misuse?



For the contrarians out there, do you know of instances where promoting a prototype (excluding evolutionary prototypes) to a product was a good thing? I appreciate your input! Later.



Wednesday, December 3, 2003

Universal Access

Universal Access is the category in Apple's OS X operating system to tune the system for the hearing and vision impaired. Designing and developing software that can be used by the maximum number of people not only is the right thing to do but also makes good business sense.



A great web site to familiarize yourself with what is available is http://www.abilityhub.com/.



Do you regularly design and develop software and systems that takes into account Universal Access? Do you know of other resources for folks interested in Universal Access? Please share your thoughts with the group!



Later.



Thursday, November 13, 2003

Programs as Literature

Given our recent discussions on Open Source, I just wanted to bring to your attention a great book on reading code, "Code Reading: The Open Source Perspective" by Diomidis Spinelis, Addison-Wesley, 2003, ISBN: 0-201-79940-5. Although I am only into the 2nd chapter, it is an impressive effort and is highly recommended. The key concept is to learn by reading code and he shows us how to do it systematically using numerous examples from Open Source archives. He advocates that reading great code will make you a better developer and I agree. I read a lot of code in the late 70's at Bell Labs tutored by folks like John Mashey and Mike Bianchi who knew Unix backwards and forwards and it served me well.



So the discussion topic is simple (and not only limited to current students), do you read code? How regularly do you read it? Do you do it systematically? Is your code reading above and beyond, "I need to understand this code fragment to make my code work?" Do you read some code purely for education and fun and, if so, in what language?



If you haven't read code for fun, try it! If you do try it, we all would appreciate relating your impressions of the experience on the blog. Later!



Tuesday, October 28, 2003

Trustworthy Computing

Note this is the first class discussion post in this weblog. All class discussion posts are specifically for my current students but past students and visitors are welcome to add their comments too.



Microsoft's next operating system, code named longhorn http://msdn.microsoft.com/longhorn/, touts as one of its new initiatives trustworthy computing. Recall that trustworthy software is stable, does not crash with minor flaws and will shut down in an orderly fashion with major flaws. What does this mean when dealing with an operating system and does it mean different things to different users of the system? I suspect that a consumer, a business person, an administrator and a developer have their own concept of what trustworthy computing is and what is an acceptable result when encountering a failure.



What is your view of acceptable results in the midst of failure for each class of user? What are unacceptable results?