Sunday, August 15, 2004

Catch-22

The following entry from Kaylon Daniels begins a series of entries from my summer software engineering class. It seems that every semester, outsourcing becomes a larger issue with the graduating generation of computer scientists. Kaylon's entry discusses the effect it is having in this country and speculates on the long term effects. A later entry in this series will discuss some other aspects of outsourcing and its effect on quality. I would appreciate any comments on this post or your views on outsourcing, its effect and potential opportunites outsourcing may provide.



Here's Kaylon's Logbook entry.



Most of my log book entries have been relatively short. But this one will be one of my longer posts. I just wanted to write some of my thoughts and discoveries about outsourcing. This is an important topic to me because I am unemployed at the moment and have been wondering how much of the credit I can assign my employment status to this phenomenon. I’ve read some articles in Business 2.0 and Business Weekly and I’m unsure which opinion to believe. Biz 2.0 states that outsourcing is going to have long term positive impacts on the U.S. economy. The middle class in other countries can afford to purchase our goods; this will produce more jobs in the U.S. They also feel that it frees Americans to pursue more advanced technologies while low level maintenance work is passed on to the third world. Now, Business Weekly states that outsourcing has nothing to do with the low level of tech jobs available. They state that the U.S. worker has been undone by his/her own productivity. Because the American worker can do more with less, there is less of a need for skilled workers. Maybe they are both correct to some extent, but I am sure of one fact. The last job fair I attended, I waited in a line that went around an entire city block. I couldn’t believe what I was seeing. This country is beginning to resemble Brazil more every month. Outsourcing is just another blow to the middle class which is already starting to disappear. Personally, I haven’t seen another tech industry pop up to replace dot-com businesses. There has been talk about nanotech and commercial space goods, but how can we capitalize on these markets when very few Americans are actually studying sciences. Most students in these fields are from nations we are currently outsourcing to. These emerging countries should be able to produce enough capital (thanks to a growing middle class) to research these new tech fields; why would one assume that the U.S. will have any real influence on the next generation of technology. It seems to be a catch-22 situation.



End of logbook entry. Before I end this post, a brief interlude on the phrase Catch-22, which defines a can't win situation. Catch-22 was written by Joseph Heller and Alan Arkin starred in the movie in 1970. It concerned World War II bomber pilots. Orr was pilot who was trying to get grounded by reason of insanity. The defining moment in the book is captured in this quote:



There was only one catch and that was Catch-22, which specified that a concern for one's safety in the face of dangers that were real and immediate was the process of a rational mind. Orr was crazy and could be grounded. All he had to do was ask; and as soon as he did, he would no longer be crazy and would have to fly more missions. Orr would be crazy to fly more missions and sane if he didn't, but if he was sane he had to fly them. If he flew them he was crazy and didn't have to; but if he didn't want to he was sane and had to. Yossarian was moved very deeply by the absolute simplicity of this clause of Catch-22 and let out a respectful whistle.
"That's some catch, that Catch-22," he observed.
"It's the best there is," Doc Daneeka agreed.


If you would like to discover more about Catch-22, check out this site, where I refamilliarized myself with the book. It is a great book that was very popular in courses when I was in college in the late 60's, early 70's.



Later.



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, June 24, 2004

Estimation is the point

Estimating the effort necessary for a software project is always difficult but is always necessary. As the project progresses your estimate should converge on what is actually occurring in the project. However, often initial estimates are needed immediately after the project is conceived, to determine whether it is affordable/doable. At that early point you have to draw on your experience and analogy to produce an estimate, noting places where the dragons (unknowns/traps) are.



If you do have more time or after those initial "back of the envelope" estimates, there are tools that can help you estimate the effort. NASA has a great site on software estimation that includes an informative, downloadable handbook on estimation techniques and it can be found here.



Function points are one of the more popular software estimation technologies and Stevens teaches the methodology. IFPUG (International Function Point Users Group) is the society that promotes function points and its web site can be found here. However in order to obtain the full benefits of the organization, you must join it and there is a membership fee of $50 for students and $185 for professionals (plus an additional $75 first year fee).



Any experiences/data on software estimation techniques that you could provide in comments to this post would be appreciated and useful, Thanks!



Finally my web site is undergoing fairly significant upgrading of information. In particular I am creating resource pages for software engineering, rule-based programming and languages. If you have any additions to those pages send me some mail. Hope you are enjoying your summer. Later!



Thursday, June 17, 2004

Creative Engineering

An ongoing discussion in my Software Engineering classes is what is engineering and what is science. Often students will express the opinion that science is creative and engineering follows rules. Most engineers and scientists would contest such strong distinctions. For example, the University of Oxford has this remark in their Engineering Science description, "The qualities of a good engineer include not only a high degree of technical competence but also imagination, strength of purpose, commonsense - and a social conscience." This is a terrific description.



I would be interested in your opinion. What is your definition of Engineering Science? Is it the science of: design, build, test? What differentiates science and engineering? I realize these are cosmic questions but the discussion arises in almost every class I teach in Software Engineering in the Computer Science Department, so it is clear that many are wresling with these concepts and any insight on the topic would be appreciated.



Thanks and later!



Monday, June 14, 2004

Rules Redux

In the halcyon days of expert systems (1980's and early 90's), rule based programming was very popular since it was a straightforward way of representing user knowledge. Rule base programming environments also provide the opportunity to do data driven programming -- a technique that deserves to be used much more than it is currently used. Since I think rules are under represented in current development -- I will periodically discuss it in this blog hoping to at least increase awareness of it. I also am creating a section on my web page that will support folks interested in rule based programming. I would be interested in comments from anyone who is considering or is use the rule base technique.



If you want to get involved in rule based programming one of the best ways to get started is to use CLIPS. CLIPS is a rule based environment that originated at NASA and is quite good. It also is free and you can get information on how to download it and the excellent supporting documentation here. You can do quite a bit with CLIPS it is very impressive and highly recommended.



If you are interested in sampling the latest in rule based technology, then I suggest Production Systems Technologies and their RETE-II technology. Charles Forgy is the Chief Scientist of PST and the inventor of the RETE algorithm (used in CLIPS and many other rule based environments. Quite simply RETE made rule based technology commercially viable. I have known Charles Forgy for decades and have used everything from OPS4 to his newest stuff and it is great. PST's environments are commercial products, they are not free but they are worth it if you need to build high performance products. (BTW I am not involved with PST in any way other than using and liking their products and knowing Charles (Lanny) Forgy.)



I will have more on rule based systems and data driven programming in the next few months. Check here and on my web page for further information. Later!



Monday, May 24, 2004

Out Sourced

One of the more controversial topics in my Software Engineering classes is outsourcing. Ankita Parikh was the author of this entry and makes some great points -- My comment in Ankita's logbook was - " Outsourcing is a difficult issue and as you correctly stated it has been happening for centuries. The response for us has to be is there an opportunity here? Even with outsourcing folks, still are not satisfied with the state of software development and maintenance – outsourcing does not cure all the issues, it mainly reduces the cost."



Ankita's entry and my response reminded me of an article by Herbert A. Simon, Nobel Prize winner in Economics, titled, "Prometheus or Pandora: The influence of automation on society." It was in the November 1981 issue of IEEE Computer. Although not spot on the topic he does discuss how automation affects employment and it is a great read. Unfortunately, it is in no electronic archive, so you are going to have to walk to the library to get a copy. Some gems from the article: "... the level of employment in a society has nothing to do with that society's level of productivity"... "In a very obvious way a society is capable of making use of the human resources it displaces by increasing productivity." ... "We have seen no large disturbances in our society over the last 35 years that were caused by worker displacement through automation."



Since I believe that outsourcing is a technological twist (caused in part by cheap, high quality communication), the article does bear on the current issue. The key is to see what opportunities outsourcing provides. Concentrate on improving the lot of software not simply making it cheaper to produce. Making software that is more reliable, flexible, human engineered, ... the software industry has lots to improve on that adds value and that outsourcing wouldn't fix.



So read the rest of this post and read Simon's article and think about the opportunities. It would be great if you would add comments to this post. I am sure this will not be our last post on outsourcing! Later.



“Exporting America”



I just read an article in TIME about “Exporting America” and the concern it rises. Is outsourcing going to be taking away more jobs than it already has? According to article, by the end of the year 588, 000 jobs will have left the country and 1.6 million by 2010. Should we all be worried? I am really not sure how I feel about this current uproar. I guess because I know I will have a job once I graduate. But I am a little worried that if more and more jobs in Information Technology are being sent overseas; I may be at risk of losing my job in another 3 – 4 years. Many of the big power houses don’t see a problem with outsourcing because for them it’s saving money. It’s all about making money huh? It tough for me to take sides for the reason that I understand both point of views. I have never been a selfish person and I won’t be starting now. I won’t deny it’s a problem nonetheless. It’s ironic that outsourcing has become such a big issue recently, when we’ve had outsourcing since the start of our country. Everything from clothing to electronics to cars has been coming from other countries. So why the big uproar now? It’s finally hit our professional job market. Before the jobs that were being sent off shore were labor job – manufacturing. Now, it’s more alarming because we may actually lose the jobs that we spent the last four years preparing for.



Monday, May 10, 2004

On Performance

After an inter semester hiatus, this blog should show activity again. This post is again from one of the logbook entries of a student last semester, Aagmik Parikh, and is being posted with his permission. It deals with computational and theatrical performance (see my slashed. "//" comments at the end of the posting). I offer it because there does not seem to be enough attention given to performance in the early stages of a project yet there are many instances where we still hit the wall on performance.



Even when performance is considered, the assumption is that the user will upgrade to match the needs of the software. For esoteric applications that is reasonable but it should be the exception not the rule. An extreme example of this cavalier approach to cycles is the rumored requirements of Microsoft's next generation operating system codenamed "Longhorn." According to slashdot,

Longhorn will require dual 4-6Ghz processors, 2 Gigabytes of RAM, new graphics processors, a Terabyte of disk and an extremely fast network. Be prepared to upgrade even your newest PC in a few years if you would like to keep up to the latest Microsoft operating system. I hope the rumor turns out to be unfounded. We need to stop the disposable computer attitude, regardless of the price drops. New PCs cause lost productivity during the transition (not to mention the costs of transition), the old PCs choke landfills and expenditure for supporting software tax corporate budgets. At the very least we should all petition for upgradeable machines! Flame off! Enjoy Aagmik's excellent and entertaining post. Later!





A true Masterpiece .....Lord of the Rings…….making of Gollum



This week we were shown a video of the making of the Lord of the Rings, emphasizing creation of the character Gollum. There are no doubts that the digital team involved broke all barriers in CG, but the creation of this character was really interesting. Initially they had implemented a methodology called key frame animation for creation of this character. I don’t want to go to the detail of the working of this method , but in short it revolves around the making an initial frame based on a model of the character and then working on the frame to produce motion. But with the talent of the actor Andy Serkis (voice of Gollum), and the digital team they redesigned the whole project to produce a new version , which became a spectacular hit. In their new approach they used Andy’s motion capture (another method used in animation) to produce Gollum’s movements. Hence their new approach used key frame animation along with motion capture. This concept was implemented for the first time and it became an instant success.



Analyzing their work, the first think that comes to mind is….anything for performance!!. In fact I am sure their animation success is going to be a benchmark for others. They redesigned their whole approach to strive ultimate performance. It can be also related to prototyping and throw away prototyping. Their initial model lacked the energy and performance present in their later models. I also think that this is a classic example of Business Process Redesign (BPR) as they redesigned the whole process, making changes in their approach.



//I do not know if it was Business Process Redesign as much as it was technical process redesign. They really did do a great job. It is interesting that you mention performance since performance in this instance takes on two meanings: the theatrical performance which was enhanced by th emotion capture and the skill of the actor and the animation performance/speed which was enhanced by their technology. When we build systems we do not pay enough attention to either brand of performance --- our systems are in front of an audience “our users” all the time.