Chapter One: Introduction




  1. Sommerville makes the assertion that "elegant theories of computer science cannot always be applied to real, complex problems which require a software solution." Do you agree or disagree with this assertion? Furthermore, provide an example of a type of software system where the theory of computer science might not prove to be beneficial and one type of software system where theory could be quite beneficial.

  2. Sommerville enumerates three different challenges that face software engineering. Do you think that he has correctly listed all of the challenges that face this discipline? Are these challenges irreducible in the sense that all others really "boil down" to these three?

  3. Several prominent software engineering and software testing researchers have recently argued for "good enough" software. This type of software meets most of the needs of most users and generally works in an acceptable fashion. Is it ethical to produce "good enough" software?



Solutions:


1)

(a) I agree with this assertion. Although it would be nice to approach each piece of software using the formal approaches of computer science, these approaches are time and resource consuming. In the business world where time and money are the most important priority, more thought is put on producing software quickly instead of ideally. By creating software that is superior you create a product which lasts longer which eliminates the need for new software which eliminates additional profits. An example of a software system where this is relevant is in commercial software like Microsoft Windows. If Microsoft made a version of Windows that always worked and had every feature a user would ever need then there would be no need for the consumer to ever buy new software and thus there would be no need to make it thus resulting in less profits for Microsoft. Now a system that would need software developed through an intricate system is say software for the space program. This type of software needs to be carefully created, because millions of dollars and peoples lives could be on the line. One minor bug could cause a space shuttle to crash or worse.
Brian McAlister

Do you think that the field of operating systems has produced some elegant theories and algorithms? For example, can't Microsoft Windows benefit from the CPU and disk scheduling algorithms that have been developed by researchers? Also, must research has gone into the development of operating system protection schemes. Isn't is possible for Microsoft Windows to leverage this research? I agree that a flight critical system needs to have some body of theory that undergirds it's development; but, what would that theory be? Greg


(b) I also agree with the above statement. The "elegant theories of computer science " that Summerville refers to are the fundamentals that software engineers are introduced to initially in their discipline. Like a good artist or athlete, a better programmer is one who takes their talent above and beyond the basics and create solutions to complex problems by simply solving them the way they found easiest. Tim Berners-Lee went beyond formal computer science theories and created HTML, HTTP, as the backbone to our internet.
Michael Mong

Are the elegant theories of computer science really "the basics" in the sense that they are "basic" or "simple." I agree that it is important to eventually transition a theory into a tool suite or a prototype (if this is possible). However, my assertion is that it is not possible to develop some applications without having a firm theoretical basis. I don't think that any examples have been provided so far; anyone willing to give an example of a software system that could not be created without some elegant theories? Greg

2)
a) I think Sommerville has correctly listed all the challenges that face software engineering. People could dispute that there are other challenges, but these all basically go back to the three listed. These may be just specific examples of the general ideas he presents. Although in my opinion ‘The delivery challenge’ should be the first and most significant challenge. The time constraints in which to produce the software affect the quality of the other challenges. These other challenges tend to pile on top of ‘The delivery challenge’ making the production of quality software even harder.
Brian McAlister

I believe that you are making a point that will emerge more fully when we read the second segment of articles. Kent Beck asserts that a software developer cannot control everything. But, if a customer states that he has a certain deadline, the software developer can give a level of quality that can be attained by this deadline. Greg

b) Summerville probably "hit the nail on the head" with his proposal of the three challenges for the upcoming century. As Brian stated the Delivery Challenge may be the most burdensome challenge. The pressure to radpidly produce software will continue to amount in the future. Could it become so fast we will begin seeing Microsoft produce Windows 2005 Summer and Windows 2005 Winter editions? I can only imagine. I feel a close second in priority to the Delivery Challenge would be the Legacy Challenge. We nearly dodged a possible disaster with the Y2K scare. Have we forgotten how many other pieces of our system will become out of date? Summerville does make a reader anxious for the upcoming years in software developement.
Michael Mong

3)

a) Making “good enough” software is better associated with words like profitable, efficient, or satisfactory. This software may not be the best it could be, but it still works relatively well and takes less time to make. This opens up a lot of possibilities for software upgrades or releases of newer versions where old bugs and errors are corrected and new features are added. This gives the software engineers more time to produce better software since there is less pressure from time constraints. This also in turn produces more profit for the company. In this sense “good enough” software is ethical. Now it would be ideal to produce perfect software, but this of course is idealistic. Software will always have bugs and with new and better hardware being created and used everyday software must in turn adapt to the needs of the consumer. So to strive to make the ultimate piece of software is a pipe dream, but the closer we come to it the higher the standards of “good enough” must rise. Thus “good enough” software in this sense is also ethical.
Brian McAlister

If you know that there are defects in a software system and you do not fix them, is this really ethical behavior? Is it alright to decide not to fix defects in the name of profitability? Yes, bug fixes create a stream of future revenues, but don't they do this at a cost to the consumer? Should a software development firm (like Microsoft) be required to release descriptions of defects that users have not yet detected? I do agree that the standards for "good enough" rise as a greater number of software products hit the marketplace. Greg

b) Until the software testing researchers get laws passed or come up with a credited set of standards, I feel they have no right questioning software manufacturers on their ethics and whether or not certain software is "good enough". All software has been tested thoroughly before it hits the shelves. The manufacturer has hired similiar testing researchers that have given the software a passing grade. The software serves some purpose if it is being produced and whether or not it is "good enough", it must be "better than" whatever other software is being used.
Michael Mong

Okay, so you are asserting that we cannot have ethics without having some kind of standard or absolute truth. What kinds of points might be included in the standard to which you are alluding? You assert that "all software has been tested thoroughly before it hits the shelves"; why do you think that this is true? Do you really think that manufactureres will be willing to higher "software testing researchers" to test their software. If we set aside the point concerning whether or not they should hire "researchers", I have seen cycles like this in the past: company hires outside quality assurance consultants to make sure that they produce high quality software, manager sees that software is a higher quality, manager stops using services of consulting company, software quality goes down, cycle repeats itself. Greg



Link to this Page