<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-16995381</id><updated>2011-04-21T16:37:55.527-07:00</updated><title type='text'>This is Chan Tai Sing</title><subtitle type='html'>all about me</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chantaising.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://chantaising.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sing's Blog</name><uri>http://www.blogger.com/profile/17101752614498284938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://home.netvigator.com/~kai1556/P05-07-05_21.05.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-16995381.post-114553508192714573</id><published>2006-04-20T04:56:00.000-07:00</published><updated>2006-04-20T06:13:47.216-07:00</updated><title type='text'>Software Design Patterns: How much do you understand?</title><content type='html'>&lt;span style="font-size:100%;"&gt;Um.. i think design patterns is the most tough topic to me.But i will try  to say something abount it. For me , i understand the adapter pattern and  composite pattern among the other pattern coverd on the textbook.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The adapter design pattern'adapts' one interface for a class into one that a client expects. An adapter allows classes to work together that normally could not because of incompatible interfaces by wrapping its own interface around that of an already existing class.&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;The adapter pattern is useful in situations where an already existing class provides some or all of the services you need but does not use the interface you need. A good real life example is an adapter that converts the interface of a Document Object Model of an XML document into a tree structure that can be displayed.&lt;br /&gt;&lt;br /&gt;In object-oriented programming, a Composite is an object designed as a composition of one-or-more similar objects (other kinds of shapes/geometries), all exhibiting similar functionality. This is known as a "has-a" relationship between objects. The key concept is that you can manipulate a single instance of the object just as you would a group of them. The operations you can perform on all the composite objects often have a least common denominator relationship. For example, when resizing a single shape to fill the screen, surely you would expect/desire that resizing a group of shapes would have the same effect.&lt;br /&gt;&lt;br /&gt;You find that you are using multiple objects in the same way, and often have nearly identical code to handle each of them -- the only differences being that you are manipulating an instance of a 'circle' versus a 'square', for instance. Useful if differentiation doesn't need to exist, and it would be easier to think of them as homogeneous&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995381-114553508192714573?l=chantaising.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chantaising.blogspot.com/feeds/114553508192714573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995381&amp;postID=114553508192714573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114553508192714573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114553508192714573'/><link rel='alternate' type='text/html' href='http://chantaising.blogspot.com/2006/04/software-design-patterns-how-much-do.html' title='Software Design Patterns: How much do you understand?'/><author><name>Sing's Blog</name><uri>http://www.blogger.com/profile/17101752614498284938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://home.netvigator.com/~kai1556/P05-07-05_21.05.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995381.post-114440448739741308</id><published>2006-04-07T02:58:00.000-07:00</published><updated>2006-04-20T06:14:13.956-07:00</updated><title type='text'>Software Engineering Certification Programs: What Can You Learn from Them?</title><content type='html'>Compare the CSDP body of knowledge with our current Software Engineering course. knowledges areas are not included in your textbook are :&lt;br /&gt;&lt;br /&gt;1. Engineering Economics&lt;br /&gt;2. Professional Practices&lt;br /&gt;3. Specialized Software Design Approaches&lt;br /&gt;4. Code Design, Organization, Documentation, Tuning, Defect Identification and Correction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995381-114440448739741308?l=chantaising.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chantaising.blogspot.com/feeds/114440448739741308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995381&amp;postID=114440448739741308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114440448739741308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114440448739741308'/><link rel='alternate' type='text/html' href='http://chantaising.blogspot.com/2006/04/software-engineering-certification.html' title='Software Engineering Certification Programs: What Can You Learn from Them?'/><author><name>Sing's Blog</name><uri>http://www.blogger.com/profile/17101752614498284938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://home.netvigator.com/~kai1556/P05-07-05_21.05.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995381.post-114440350631703190</id><published>2006-04-07T02:46:00.000-07:00</published><updated>2006-04-07T02:55:22.163-07:00</updated><title type='text'>Why do software projects fail so often?</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Here are the main reason:&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Not Enough Time&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;Often the deadline date is decided prior to the project starting and is non-negotiable. This results in a headlong rush to get started on the assumption that the sooner you begin coding the sooner you'll be finished.&lt;/p&gt;     &lt;p&gt;This is almost always the wrong approach. It is vital to spend time to create a good design. Not having a good design leads to ongoing changes throughout the development phase. When this happens time and budget are consumed at a very rapid rate.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Insufficient Budget&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;Many projects have a "lowest price most successful candidate" policy, or an unrealistically low budget, not based on the true requirements. When this happens everything tends to slow down. Resources are slow to arrive or never arrive, corners are cut and quality suffers.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Poor Communication&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;There's an old saying, "never assume anything" and this is especially true for software projects. Good communication is vital for project success with the customer, users and especially the development team. Does everyone in the team understand you? Do they know exactly what's expected of them or have you assumed they know? Do they communicate well with each other, with users and with other departments?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Never Reviewing Project Progress&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;As a project progresses things change and these changes can have a significant impact. It is important to monitor progress on a regular basis so that challenges can be overcome early and stakeholders warned of possible delays and changes to the product.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Inadequate Testing&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;When the pressure to deliver is on, it is often testing that suffers. All the testing is left until the end of the development cycle and only lip service paid to it. The result is often a product filled with bugs and unhappy customers.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Testing in the Production Environment&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;It's surprising how many organisations test products in the production environment. This is a high-risk strategy that can lead to security breaches and release without testing that can disrupt the production environment.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Lack of Quality Assurance&lt;/b&gt;&lt;/p&gt;     Often in the haste to get software delivered quality assurance suffers. Code changes are not documented, the design contains fatal flaws and implementations can be incomplete. These all lead to rework, lost time and ultimately unhappy customers&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Not Conforming to Industry Standards&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;Conforming to industry standards in your software projects can prove effective by ensuring accessibility, portability, usability, robustness and reducing problems now and in the future. Bodies such as International Organisation for Standardisation (ISO) and World Wide Web Consortium (W3C) have developed open standards that when used are hard to challenge.&lt;/p&gt;&lt;a href="http://www.projectsmart.co.uk/why_software_projects_fail.html"&gt;http://www.projectsmart.co.uk/why_software_projects_fail.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995381-114440350631703190?l=chantaising.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chantaising.blogspot.com/feeds/114440350631703190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995381&amp;postID=114440350631703190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114440350631703190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114440350631703190'/><link rel='alternate' type='text/html' href='http://chantaising.blogspot.com/2006/04/why-do-software-projects-fail-so-often.html' title='Why do software projects fail so often?'/><author><name>Sing's Blog</name><uri>http://www.blogger.com/profile/17101752614498284938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://home.netvigator.com/~kai1556/P05-07-05_21.05.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995381.post-114440293501000135</id><published>2006-04-07T02:35:00.000-07:00</published><updated>2006-04-07T02:42:15.030-07:00</updated><title type='text'>Software quality: What makes a program code good?</title><content type='html'>&lt;p&gt;A good program works flawlessly and has no bugs. But what internal qualities produce such perfection? It's no mystery, we just need some occasional reminding. Whether you code in C/C++, C#, Java, Basic, Perl, COBOL, or ASM, all good programming exhibits the same time-honored qualities: simplicity, readability, modularity, layering, design, efficiency, elegance, and clarity.&lt;/p&gt;&lt;img src="http://msdn.microsoft.com/msdnmag/issues/04/07/EndBracket/fig01.gif" align="right" height="121" width="131" /&gt;&lt;p class="clsNoIndent"&gt;&lt;span style="font-weight: bold;" class="clsGloss"&gt;Simplicity&lt;/span&gt;  means you don't do in ten lines what you can do in five. It means you make extra effort to be concise, but not to the point of obfuscation. It means you abhor open coding and functions that span pages. Simplicity—of organization, implementation, design—makes your code more reliable and bug free. There's less to go wrong.&lt;/p&gt;&lt;p class="clsNoIndent"&gt;&lt;span style="font-weight: bold;" class="clsGloss"&gt;Readability&lt;/span&gt;  means what it says: that others can read your code. Readability means you bother to write comments, to follow conventions, and pause to name your variables wisely. Like choosing "taxrate" instead of "tr".&lt;/p&gt;&lt;p class="clsNoIndent"&gt;&lt;span style="font-weight: bold;" class="clsGloss"&gt;Modularity&lt;/span&gt;  means your program is built like the universe. The world is made of molecules, which are made of atoms, electrons, nucleons, quarks, and (if you believe in them) strings. Likewise, good programs erect large systems from smaller ones, which are built from even smaller building blocks. You can write a text editor with three primitives: move, insert, and delete. And just as atoms combine in novel ways, software components should be reusable.&lt;/p&gt;&lt;p class="clsNoIndent"&gt;&lt;span style="font-weight: bold;" class="clsGloss"&gt;Layering&lt;/span&gt;  means that internally, your program resembles a layer cake. The app sits on the framework sits on the OS sits on the hardware. Even within your app, you need layers, like file-document-view-frame. Higher layers call ones below, which raise events back up. (Calls go down; events go up.) Lower layers should never know what higher ones are up to. The essence of an event/callback is to provide blind upward notification. If your doc calls the frame directly, something stinks. Modules and layers are defined by APIs, which delineate their boundaries. Thus, design is critical.&lt;/p&gt;&lt;p class="clsNoIndent"&gt;&lt;span style="font-weight: bold;" class="clsGloss"&gt;Design&lt;/span&gt;  means you take time to plan your program before you build it. Thoughts are cheaper than debugging. A good rule of thumb is to spend half your time on design. You need a functional spec (what the programs does) and an internal blueprint. APIs should be codified in writing.&lt;/p&gt;&lt;p class="clsNoIndent"&gt;&lt;span style="font-weight: bold;" class="clsGloss"&gt;Efficiency&lt;/span&gt;  means your program is fast and economical. It doesn't hog files, data connections, or anything else. It does what it should, but no more. It loads and departs without fuss. At the function level, you can always optimize later, during testing. But at high levels, you must plan for performance. If the design requires a million trips to the server, expect a dog.&lt;/p&gt;&lt;p class="clsNoIndent"&gt;&lt;span style="font-weight: bold;" class="clsGloss"&gt;Elegance&lt;/span&gt;  is like beauty: hard to describe but easy to recognize. Elegance combines simplicity, efficiency, and brilliance, and produces a feeling of pride. Elegance is when you replace a procedure with a table, or realize that you can use recursion—which is almost always elegant: &lt;/p&gt;&lt;pre class="clsCode"&gt;int factorial(int n)&lt;br /&gt;{&lt;br /&gt;   return n==0 ? 1 : n * factorial(n-1);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p class="clsNoIndent"&gt;&lt;span style="font-weight: bold;" class="clsGloss"&gt;Clarity&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;  &lt;/span&gt;is the granddaddy of good programming, the platinum quality all the others serve. Computers make it possible to create systems that are vastly more complex than physical machines. The fundamental challenge of programming is managing complexity. Simplicity, readability, modularity, layering, design, efficiency, and elegance are all time-honored ways to achieve clarity, which is the antidote to complexity.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Clarity of code&lt;/span&gt;. Clarity of design. Clarity of purpose. You must understand—really understand—what you're doing at every level. Otherwise you're lost. Bad programs are less often a failure of coding skill than of having a clear goal. That's why design is key. It keeps you honest. If you can't write it down, if you can't explain it to others, you don't really know what you're doing.&lt;/p&gt;&lt;p&gt;There's so much I've left out, but there's one more thing I hesitate to add. Use it sparingly and only in desperation: the clever hack. The clever hack is when you sacrifice your principles to expedience. When you hardcode some condition or make a call up the layer cake—or commit some other embarrassment—because it works and there's no time to do it right. But remember: it must be clever! It's the cleverness that redeems the hack and gives it a kind of perverse elegance. And if the hack doesn't work, don't blame me! Happy programming!&lt;/p&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/04/07/EndBracket/"&gt; http://msdn.microsoft.com/msdnmag/issues/04/07/EndBracket/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995381-114440293501000135?l=chantaising.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chantaising.blogspot.com/feeds/114440293501000135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995381&amp;postID=114440293501000135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114440293501000135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114440293501000135'/><link rel='alternate' type='text/html' href='http://chantaising.blogspot.com/2006/04/software-quality-what-makes-program.html' title='Software quality: What makes a program code good?'/><author><name>Sing's Blog</name><uri>http://www.blogger.com/profile/17101752614498284938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://home.netvigator.com/~kai1556/P05-07-05_21.05.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995381.post-114439789143586583</id><published>2006-04-07T00:52:00.000-07:00</published><updated>2006-04-07T02:42:51.123-07:00</updated><title type='text'>Stuff that lets agile software developers show off what they believe in</title><content type='html'>"YAGNI"&lt;br /&gt;   Extreme programming speak for You Aren't Going to Need It. XP promotes the idea that you do the simplest thing that works. You don't add additional capability to handle things that you might need in the future until you know that you do need it, because we are lousy at predicting the future and if we never need it we have wasted resources.&lt;br /&gt;&lt;br /&gt;   You can obviously take this notion to extreme. Some things you should routinely build in for the future especially when they would be awkward to add later. If you come back to complex code to make a minor modification later, there is a more chance you will introduce an error than if you provide the functionality at the start. Further you have to come up to speed again on how it all works before you can safely make your modification.&lt;br /&gt;&lt;br /&gt;"Do The Simplest Thing That Could Possibly Work"&lt;br /&gt;Do the simplest thing that could possibly work (DTSTTCPW) means you implement the first idea that comes to mind. This can be scary. Rely on your courage to try out the idea. Remember that failure is an important part of creation. It is unlikely the simplest idea is what you will end up with. However, it's also unlikely you can anticipate what's wrong with your simple solution until you try it out. Let the feedback system guide your implementation. DTSTTCPW is simplicity as in fast and easy.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://http://www.extremeperl.org/bk/extreme-programming"&gt;http://www.extremeperl.org/bk/extreme-programming&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995381-114439789143586583?l=chantaising.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chantaising.blogspot.com/feeds/114439789143586583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995381&amp;postID=114439789143586583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114439789143586583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114439789143586583'/><link rel='alternate' type='text/html' href='http://chantaising.blogspot.com/2006/04/stuff-that-lets-agile-software.html' title='Stuff that lets agile software developers show off what they believe in'/><author><name>Sing's Blog</name><uri>http://www.blogger.com/profile/17101752614498284938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://home.netvigator.com/~kai1556/P05-07-05_21.05.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995381.post-114439593771448875</id><published>2006-04-07T00:38:00.000-07:00</published><updated>2006-04-20T04:30:43.383-07:00</updated><title type='text'>What is test-driven development?</title><content type='html'>What is test-driven development?&lt;br /&gt;&lt;br /&gt;Test-Driven Development (TDD) is a computer programming technique that involves writing test cases first and then implementing the code necessary to pass the tests. The goal of test-driven development is to achieve rapid feedback and implements the "illustrate the main line" approach to constructing a program. This technique is heavily emphasized in Extreme Programming.&lt;br /&gt;&lt;br /&gt;Practitioners emphasize that test-driven development is primarily a method of designing software, not just a method of testing. The method is also used for removal of software defects.&lt;br /&gt;&lt;br /&gt;Requirements&lt;br /&gt;&lt;br /&gt;For test-driven development to work, the system must be flexible enough to allow for automated testing of code, using test cases that return a simple true or false evaluation of correctness. These properties allow for rapid feedback of correctness and design. Unit testing frameworks such as JUnit, NUnit or CPPUnit provide a mechanism for managing and running sets of automated test cases.&lt;br /&gt;&lt;br /&gt;Test-Driven Development Cycle&lt;br /&gt;&lt;br /&gt;1. Write the test&lt;br /&gt;&lt;br /&gt;It begins with writing a test. In order to write a test, the developer must understand the specification and the requirements clearly. This is accomplished through use cases and user stories. The design document covers all the test scenarios and exception conditions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Write the code&lt;br /&gt;&lt;br /&gt;The next step is to make the test pass by writing the code. This step forces the programmer to take the perspective of a client by seeing the code through its interfaces. This is the design driven part of test-driven development. As part of test calibration, your code should fail the test meaningfully the first time around.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Run the automated tests&lt;br /&gt;&lt;br /&gt;The next step is to run the automated test cases and observe if they pass or fail. If they pass, the programmer can be more confident that the code meets the test cases as written. If there are failures, the code did not meet the test cases..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Refactor&lt;br /&gt;&lt;br /&gt;The final step is the refactoring step and any code clean-up necessary will occur here. The test cases are then re-run and observed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. Repeat&lt;br /&gt;&lt;br /&gt;The cycle will then repeat itself and start with either adding additional functionality or fixing any errors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995381-114439593771448875?l=chantaising.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chantaising.blogspot.com/feeds/114439593771448875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995381&amp;postID=114439593771448875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114439593771448875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/114439593771448875'/><link rel='alternate' type='text/html' href='http://chantaising.blogspot.com/2006/04/what-is-test-driven-development.html' title='What is test-driven development?'/><author><name>Sing's Blog</name><uri>http://www.blogger.com/profile/17101752614498284938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://home.netvigator.com/~kai1556/P05-07-05_21.05.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995381.post-113066764083408638</id><published>2005-10-30T01:50:00.000-08:00</published><updated>2005-10-30T02:26:51.656-08:00</updated><title type='text'>About the UML tools</title><content type='html'>After i try out the three different UML tools , i found out the Poseidon For UML is my favorite one. It is because the interface of Poseidon is clear out and simply(i hatesomething that wordy and too colorful).Also it is the most user-friendly tools that it works like a MS office application , you don't need to spend extra time to know how it works. It is so suitable for me!!&lt;br /&gt;&lt;br /&gt;But no matter you  are using  which set of  UML tools , you must know the UML standard well in order to draw the diagram. So learn the concept is the most important thing to you and me~&lt;br /&gt;&lt;br /&gt;See you next time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995381-113066764083408638?l=chantaising.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chantaising.blogspot.com/feeds/113066764083408638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995381&amp;postID=113066764083408638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/113066764083408638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/113066764083408638'/><link rel='alternate' type='text/html' href='http://chantaising.blogspot.com/2005/10/about-uml-tools.html' title='About the UML tools'/><author><name>Sing's Blog</name><uri>http://www.blogger.com/profile/17101752614498284938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://home.netvigator.com/~kai1556/P05-07-05_21.05.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995381.post-112825008633514414</id><published>2005-10-02T02:12:00.000-07:00</published><updated>2005-10-02T07:22:24.596-07:00</updated><title type='text'>Some Reflection of the basic skills for software engineers</title><content type='html'>Hi all~&lt;br /&gt;Finally i just take up my mind to write something on the blog , hope it will not be too late~&lt;br /&gt;&lt;br /&gt;From this issue about, i will take up some points that i think (or say i have experienced) to share with everyone.&lt;br /&gt;&lt;br /&gt;1.To know how to break down the problem and giving solution is a big issue for the all programmer. Since programming is a kind of problem solving skill, you should able to know the facts inside you program or project in order to solve it. For example what function should be build or should be ignore to do for the program. And you should know the requests and constraints well in order to satisfy the program goal.&lt;br /&gt;&lt;br /&gt;2.Have a better time /task management to achevie the goal , don't just do things before deadline. In my experience if you finish your program in a hurry , it will have more bug that you have expect. Then you will spend more time in the debug....So scheduling task and state are important for a good programmer and the crew.&lt;br /&gt;&lt;br /&gt;3.Have a better communication between client, your crew and also your boss! To know what's the clinet wants. Keep track to communication with them to prevent misunderstanding problem. knows the problems of your crew in order to have a better working relationship. And you should communication well to your boss to know what's his/her expection.&lt;br /&gt;&lt;br /&gt;4.At last , you should have a good programming skill in order to survive ~ Also you should be able to work under pressure!!!&lt;br /&gt;&lt;br /&gt;ok~&lt;br /&gt;see you next time&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995381-112825008633514414?l=chantaising.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chantaising.blogspot.com/feeds/112825008633514414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995381&amp;postID=112825008633514414' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/112825008633514414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/112825008633514414'/><link rel='alternate' type='text/html' href='http://chantaising.blogspot.com/2005/10/some-reflection-of-basic-skills-for.html' title='Some Reflection of the basic skills for software engineers'/><author><name>Sing's Blog</name><uri>http://www.blogger.com/profile/17101752614498284938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://home.netvigator.com/~kai1556/P05-07-05_21.05.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16995381.post-112737104007642330</id><published>2005-09-21T23:35:00.000-07:00</published><updated>2005-09-29T04:27:28.583-07:00</updated><title type='text'>Testing  1 2 3 4</title><content type='html'>this post just for test&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16995381-112737104007642330?l=chantaising.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chantaising.blogspot.com/feeds/112737104007642330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16995381&amp;postID=112737104007642330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/112737104007642330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16995381/posts/default/112737104007642330'/><link rel='alternate' type='text/html' href='http://chantaising.blogspot.com/2005/09/testing-1-2-3-4.html' title='Testing  1 2 3 4'/><author><name>Sing's Blog</name><uri>http://www.blogger.com/profile/17101752614498284938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://home.netvigator.com/~kai1556/P05-07-05_21.05.jpg'/></author><thr:total>0</thr:total></entry></feed>
