Thursday, April 20, 2006

Why do software projects fail so often?

In my opinion, construction project is a serious project type. Little mistake may bring people a harmful result. Therefore, a perfect project planning is very important.

Software project is also important but it doesn't bring very harmful if error occur. It doesn't cause harmful effect of human life, just cause economical loss.

I think that software projects fail because of these reasons:
1. Lack of time management. Actual time length is longer than the estimated time. Therefore, time extension is need.
2. Wrong planning of the project budget.
3. Underestimation of difficulty.

How to deal with these problems?? Please give me some opinions and share with me. Thanks.

What is test-driven development?

The main idea of test-driven development(TDD) is a creation of test cases before implementation of code which is necessory for passing the tests. The goal of TDD is to achieve fast feedback and implements the "illustrate main line" approach to construct a program.

Test-Driven Development Cycle is divided into five steps.
1. Write the test
2. Write the code
3. Run the automated tests
4. Refactor
5. Repeat

For more details about TDD, please visit http://en.wikipedia.org/wiki/Test_driven_development#Test-Driven_Development_Cycle

Wednesday, April 19, 2006

Software Design Patterns: How much do you understand?

There are five types of design pattern, Adapter, Proxy, Composite, Facade and Bridge respectively. Design pattern is a general repeatable solution to a commonly-occurring problem in software design. Using design pattern can speed up the development process by providing tested, proven development paradigms.

I just know more about adapter design pattern because assignment contain a question about it. About other design patterns, I will revise more about them.

Software quality: What makes a program code good?

In my opinion, I think coding is a critical factor of software quality.

There are the points of good coding skill.
1. Use simpler code as possible, don't use too complicated code to perform the same function.
2. Add suitable comment between lines of source code. It can increase the readability.
3. Use code or method which can decrease execution time and enhance performance.
4. Make a program simpler in order to save system resources.

Do you agree with me?? Welcome to share your opinion with me.

Stuff that lets agile software developers show off what they believe in

"Born in refactor" - In software engineering, it means keeping an existing body of code, modifing its internal structure without changing its external behaviour.

"DTST TCPW" - This is an abbreviation. The full name is "Do The Simplest Thing That Could Possibly Work". It means using simple program code as possible. Don't use more complicated code when it is not needed.

"YAGNI" - It means not any functionaliy is implemented if user don't need it now.

"Duplication Is Forbidden" = Do not copy source code from others directly. Copyright must be respected.

There are many other slogans such as "Will You Pair With Me?", "Don’t Get Stressed", "Write A Test", "Got Test?", and "JsUnit". They are very funny. I will briefly describe their real meaning if possible.

Sources of reference:
1. http://www.cafepress.com/agilestuff
2. http://istpub.berkeley.edu:4201/bcc/Fall2004/refactoring.html
3. http://xp.c2.com/DoTheSimplestThingThatCouldPossiblyWork.html
4. http://martinus.geekisp.com/2006/01/25/software-design-principles/

Friday, March 24, 2006

Students Mini-project: Developing applications using the Web APIs

Dear Steven,

Thanks for your suggestion about the mini-project. However, I still have no idea about it. Just remain three weeks. What can I do??? HELP~

Regards

CK.

Software Engineering Certification Programs: What Can You Learn from Them?

After browsing the website, I found a page about the course outline. It shows the content of each module. Some topics are not included in my textbook of current course.

Compare with my course, project management is not included in CSDP body of knowledge. It just includes software engineering skill only.

p.s.: I apologize for the late submission of this article.

Thursday, February 16, 2006

Software Engineering Skills: Students’ Opinions

To become a software enginner, I think good analysis skill and programming skill are necessary.

I hope I can build up the basic of software enginnering through the course. When I face many difficulties about the course, it makes me become frustrated gradually. So...... How to study this course efficiently?? Especially, my mind is very bad. Anything is easily to lose from my brain...... Can you give me some suggestions??

Thanks~ Steven~

There are the recruitment advertisements related to software engineering

1. http://www.jobsdb.com/HK/EN/Job.asp?R=JDB079433521&48154
2. http://www.jobsdb.com/HK/EN/Job.asp?R=JDB079707321&57410
3. http://www.jobsdb.com/HK/EN/Job.asp?R=JDB079735921&57833
4. http://www.jobsdb.com/HK/EN/Job.asp?R=JDB079726321&1133
5. http://www.jobsdb.com/HK/EN/Job.asp?R=JDB079714621&32898

Monday, October 31, 2005

UML Tools: What is my favorite?

This is the second article in this blog. I don't post any article in this blog for a long time. I am so sorry about that. It is becasue I am a lazy student...... ._.

After the lesson, I tried to use the three applications which are introduced by Steven Choy to draw some UML diagrams. I found that Poseidon for UML Community Edition is suitable for me. I can draw UML diagram easily by this software. Compare with other tools, it can be installed easily and the interface is user-friendly. Conversely, Omondo EclipseUML Free Edition is difficult to setup and the interface is not friendly.

I have a question. Can I use Microsoft Visio to draw UML diagram?? I used to draw DFD and ERD by means of it. I can use it skilfully and smoothly.

Happy Halloween.^_^

Wednesday, January 01, 2003

Hello, this is my first message here.

Good afternoon, nice to meet you~~