<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Engineering blog &#187; Week 3</title>
	<atom:link href="http://softwareengineeringblog.com/http:/softwareengineeringblog.com/tag/week-3/feed" rel="self" type="application/rss+xml" />
	<link>http://softwareengineeringblog.com</link>
	<description>Software - Art</description>
	<lastBuildDate>Fri, 03 Feb 2012 14:43:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Liability or reality?</title>
		<link>http://softwareengineeringblog.com/http:/softwareengineeringblog.com/software_engineering/liability-or-reality/52</link>
		<comments>http://softwareengineeringblog.com/http:/softwareengineeringblog.com/software_engineering/liability-or-reality/52#comments</comments>
		<pubDate>Sun, 29 Nov 2009 06:57:44 +0000</pubDate>
		<dc:creator>Laszlo</dc:creator>
				<category><![CDATA[Academic work]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Discussion question]]></category>
		<category><![CDATA[Module: Computer structures]]></category>
		<category><![CDATA[University of Liverpool]]></category>
		<category><![CDATA[Week 3]]></category>

		<guid isPermaLink="false">http://softwareengineeringblog.com/?p=52</guid>
		<description><![CDATA[I chose this question one because of my personal experience. My company made a website for a client who was our partner for many years. It was more than a partnership, near to a friendship. We were near to the end of the project (two days before the handover) when one of our partner&#8217;s employees made [...]]]></description>
			<content:encoded><![CDATA[<p>I chose this question one because of my personal experience. My company made a website for a client who was our partner for many years. It was more than a partnership, near to a friendship.<span id="more-52"></span> We were near to the end of the project (two days before the handover) when one of our partner&#8217;s employees made an error, our partner thought that we made it and because his life in those times was very stressful he got mad.  He decided to sue us to pay back all his money and refused to pay our remaining fee. It&#8217;s a four year old story and we&#8217;re still fighting on the court. I not just can imagine, but I know exactly how difficult is to define the limits of liability.<br />
Theoretically it is possible to make error free programs. <span>Francez Nissim</span><span>(1993) thinks that using discrete maths and formal logic it is possible to make error free algorithms. But programs are the implementation of the algorithms. Programs are made by engineers and not mathematicans. Nowadays applications are running on the top of many layers, eg.  operating system, code frameworks, they are using device drivers to handle hardware devices. </span><span>For software development we use editors, compilers, IDEs. </span><span>All mentioned layers and tools are programs themselves, too and they are made by a lot of programmers. Sometimes hundreds of programmers are working on one of those programs. We know, the man is not perfect. Practically even if our software is perfect, it has to run on thoose layers and it has to be made by the mentioned tools. Since any of them can contain errors what affects our software, we cannot guarantee that our software will work perfectly.<br />
On the other side, software is a key factor in our life now. We can find them even in some washing machines or refrigerators. </span>Charlie White (2006) <span>wrote about an existing  smart refrigerator in 2006, years ago! Softwares participate in flight control and airplane driving. They do almost all calculations instead of engineers who build skyscrapers or malls. It&#8217;s obvious for me, that developers need to be responsible for their work. The ethical liability is obvious. The hard part is the legal liability. </span><span style="FONT-WEIGHT: normal">Glyn Moody (</span>2009) writes about several possible solutions. EU proposes a regulation, what says that software should work perfectly in normal conditions. They say it&#8217;s the customers&#8217; right &#8211; which sounds right. He cites Bruce Schneider, who wrote: &#8220;Computers are the only mass-market consumer item that pushes this burden onto the consumer, requiring him to have a high level of technical sophistication just to survive.&#8221; What makes this question even more difficult is Open Source software. Who can find the guilty amongst hundreds of contributors, who many times just use nicknames to sign the code?</p>
<p><span><br />
Reference list:<br />
</span>Charlie White (2006) Samsung Smart Zipel Refrigerator [Online] Available from: http://gizmodo.com/156257/samsung-smart-zipel-refrigerator (Accessed: 15 October 2009)<br />
Glyn Moody (2009) Should Software Developers Be Liable for their Code? [Online] Available from: http://www.linuxjournal.com/content/should-software-developers-be-liable-their-code (Accessed: 15. October 2009)<br />
<span>Francez Nissim</span> (1993) Program Verification (International Computer Science Series) Boston: Addison-Wesley.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fliability-or-reality%2F52&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fliability-or-reality%2F52&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fliability-or-reality%2F52&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fliability-or-reality%2F52&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fliability-or-reality%2F52&amp;counturl=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fliability-or-reality%2F52&amp;count=none&amp;text=Liability%20or%20reality%3F" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fliability-or-reality%2F52&amp;counturl=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fliability-or-reality%2F52&amp;count=none&amp;text=Liability%20or%20reality%3F" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fliability-or-reality%2F52&amp;title=Liability%20or%20reality%3F" id="wpa2a_2"><img src="http://softwareengineeringblog.com/wp-content/plugins/add-to-any/share_16_16.png" width="16" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareengineeringblog.com/http:/softwareengineeringblog.com/software_engineering/liability-or-reality/52/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Different ways of thinking</title>
		<link>http://softwareengineeringblog.com/http:/softwareengineeringblog.com/software_engineering/different-ways-of-thinking/48</link>
		<comments>http://softwareengineeringblog.com/http:/softwareengineeringblog.com/software_engineering/different-ways-of-thinking/48#comments</comments>
		<pubDate>Wed, 25 Nov 2009 23:56:12 +0000</pubDate>
		<dc:creator>Laszlo</dc:creator>
				<category><![CDATA[Academic work]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Discussion question]]></category>
		<category><![CDATA[Module: Computer structures]]></category>
		<category><![CDATA[University of Liverpool]]></category>
		<category><![CDATA[Week 3]]></category>

		<guid isPermaLink="false">http://softwareengineeringblog.com/?p=48</guid>
		<description><![CDATA[A program is a list of tasks to be performed by definition. But it can also be defined as a way of mapping a large task to shorter tasks. A computer always performs a program as a list of tasks. I take this question as a theoretical one. In my opinion the difference is the [...]]]></description>
			<content:encoded><![CDATA[<p>A program is a list of tasks to be performed by definition. But it can also be defined as a way of mapping a large task to shorter tasks. A computer always performs a program as a list of tasks. I take this question as a theoretical one. In my opinion the difference is the problem solver&#8217;s way of thinking. Let&#8217;s see a real world example. <span id="more-48"></span>Assume, we have to sort a set of values. In case we try to solve it as a list of tasks, we probably come to a result, similar to the bubble sort algorithm. Paul E. Black (2009) gives a definition of bubble sort algorithm: &#8220;Sort by comparing each adjacent pair of items in a list in turn, swapping the items if necessary, and repeating the pass through the list until no swaps are done.&#8221;. This algorithm is an iterative way of solving the given problem. What happens when we try to map the large task to shorter tasks? Although there are a lot of sources where I can find this algorithm, I chose the same source because I think this dictionary is very useful. Conrado Martinez (2009) gave a definition of Quicksort algorithm: &#8221; Pick an element from the array (the pivot), partition the remaining elements into those greater than and less than this pivot, and recursively sort the partitions.&#8221;. Divide et impera. Nice and elegant solution of the same problem. We can see the difference in the way of thinking. Both of them can give us a solution and both ways have it&#8217;s pros and cons. Recursion&#8217;s main drawback is the intensive memory usage. It is especially important in Java, my favourite programing language. Although Shawn Bayern (2001) writes about a very nice method of reducing the size of needed memory while keeping the code nice. I also have to mention another practical aspect. Although recursive algorithms are usually more elegant and many times it&#8217;s more easy to solve problem using them, they are usually slower as shiman (2008) wrote in his blog with some nice examples. He also summarizes the main cause of using the recursion: &#8220;Q: Then why use recursion?? A: It makes the code beautiful – recursion is a beauty of programming. Sometimes it is much simpler to write the recursive version.&#8221; Reference list: Conrado Martinez (2009) quicksort in Dictionary of Algorithms and Data Structures [Online]. Available from: http://www.itl.nist.gov/div897/sqg/dads/HTML/quicksort.html (Accessed: 15 October 2009) Paul E. Black (2009) bubble sort in Dictionary of Algorithms and Data Structures [Online]. Available from: http://www.itl.nist.gov/div897/sqg/dads/HTML/bubblesort.html (Accessed: 15 October 2009) Shawn Bayern (2001) Synchronized Recursion [Online]. Available from: http://www.ddj.com/architect/184404657 (Accessed: 15 October 2009) shiman (2008) Recursion VS Iteration (Looping) : Speed &amp; Memory Comparison [Online]. Available from: http://shiman.wordpress.com/2008/05/28/recursion-vs-iteration/ (Accessed: 15 October 2009)</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fdifferent-ways-of-thinking%2F48&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fdifferent-ways-of-thinking%2F48&amp;size=medium&amp;count=false" scrolling="no" style="border:none;overflow:hidden;width:32px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fdifferent-ways-of-thinking%2F48&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service facebook_like" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fdifferent-ways-of-thinking%2F48&amp;layout=button_count&amp;show_faces=false&amp;width=75&amp;action=like&amp;colorscheme=light&amp;height=20&amp;ref=addtoany" scrolling="no" style="border:none;overflow:hidden;width:90px;height:21px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fdifferent-ways-of-thinking%2F48&amp;counturl=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fdifferent-ways-of-thinking%2F48&amp;count=none&amp;text=Different%20ways%20of%20thinking" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fdifferent-ways-of-thinking%2F48&amp;counturl=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fdifferent-ways-of-thinking%2F48&amp;count=none&amp;text=Different%20ways%20of%20thinking" scrolling="no" style="border:none;overflow:hidden;width:55px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsoftwareengineeringblog.com%2Fhttp%3A%2Fsoftwareengineeringblog.com%2Fsoftware_engineering%2Fdifferent-ways-of-thinking%2F48&amp;title=Different%20ways%20of%20thinking" id="wpa2a_4"><img src="http://softwareengineeringblog.com/wp-content/plugins/add-to-any/share_16_16.png" width="16" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareengineeringblog.com/http:/softwareengineeringblog.com/software_engineering/different-ways-of-thinking/48/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

