PlumJournals
c_plum
read my profile
sign my guestbook

Visit c_plum's Xanga Site!

Country: Hong Kong
Metro: Hong Kong


Occupation: Student


Message: message me
Website: visit my website


Member Since: 9/22/2005

SubscriptionsSites I Read

Posting Calendar

|<< oldest | newest >>|
view all weblog archives

Get Involved!

Suggest a link

Recommend to friend

Create a site

Thursday, April 06, 2006

I think Software Project Fail so often because.....

Summary from: http://www.codeproject.com/books/SoftwareProjectSecrets2.asp

 

Software is unique in that its most significant issue is its complexity.

  1. Software is the most abstract product that can be created in a project.
  2. It is uniquely difficult to define a complete set of requirements for software before beginning development.
  3. Software development technologies change faster than other construction technologies.
  4. Most software development technologies are not mature enough to have a set of proven best practices.
  5. Software development has far more technologies, and its technologies have far more complexity than a single individual can hope to gain expertise with.
  6. Expertise with particular software development technologies is very quickly outdated, and therefore most specific skills are learned on the job.
  7. Software development isn't just a process of creating software; it's also a process of learning how to create the software that is best suited for its purpose.
  8. Software development has been automated to a greater degree than other project-based activities.
  9. Unlike other products, software is not constructed, but rather designed into existence.
  10. Software can be modified rapidly, and this pace is expected, but it's better to implement the changes properly.
  11. No software is perfect as first envisioned; it will always require changes to make it best suit its role.

 

What do you think about the importance of software project management in this aspect?

The importances of Software project management are communication and changes on techology.

Through communication, no matter client or programmer would know there procces of the project and what they need to concert. From programmer, programmer would know the client do not think the project requirement on practical way sometimes, programmer need to use their knowledge to duel with it. From client, client woud know what are the technology limit to their project requirement. If a new technology appear, client would like to use it on the project. However, programmer would tell client that technology cannot implement to the project.


"What is test-driven development?" that I find...

  • What is the main idea of test-driven development?
  • What is the goal of test-driven development?
  • How does a test-driven development cycle look like?

http://en.wikipedia.org/wiki/Test-driven_development

http://www.agiledata.org/essays/tdd.html

1. What is TDD?

The steps of test first development (TFD) are overviewed in the UML activity diagram of Figure 1.  The first step is to quickly add a test, basically just enough code to fail.  Next you run your tests, often the complete test suite although for sake of speed you may decide to run only a subset, to ensure that the new test does in fact fail.  You then update your functional code to make it pass the new tests.  The fourth step is to run your tests again.  If they fail you need to update your functional code and retest.  Once the tests pass the next step is to start over (you may first need to refactor any duplication out of your design as needed, turning TFD into TDD).

Figure 1. The Steps of test-first development (TFD).

 

What is the primary goal of TDD?One view is the goal of TDD is specification and not validation (Martin, Newkirk, and Kess 2003).In other words, it¡¦s one way to think through your design before your write your functional code.Another view is that TDD is a programming technique.As Ron Jeffries likes to say, the goal of TDD is to write clean code that works.


Software Design Patterns: How much do "I" understand?

To me design patterns are successful cases for designing coding with proven on efficiency. I just remember the observer pattern in behavioral patterns because I just know the concept of how it operates such as if a interface has change, interface will notice observer to update the changes, but I don¡¦t know how to convert this pattern in to coding.

On other patterns, I just remember the name of them.


I think "Software quality: What makes a program code good?"

Clear naming of variable and writing comment for the program code would make good program code.

These two factors would let the reader easy to catch up the control flow of the program code and modify the coding more easily.


I think "Stuff that lets agile software developers show off what they believe in..."

DTSTTCPW

Do The Simplest Thing That Could Possibly Work

Ref: http://xp.c2.com/DoTheSimplestThingThatCouldPossiblyWork.html

Implement a new capability in the simplest way you can think of that "could possibly work". Make the code pass the UnitTests for the new feature (and all features, as always). Follow the rule of OnceAndOnlyOnce and the other code quality rules to make the system as clean as it can possibly be. With each increment of an IterativeDevelopment one should do the simplest thing that could possibly work. To do this, you have to know at least two ways to do the thing. That way, you can at least pick the simpler, if not the simplest. You need to be pretty sure it will work, but you don't have to prove it. Why? Because when you try to implement it, your implementation will tell you whether it does work. Your tests will run, or they won't. It will feel good, or it won't.

 

JsUnit

Ref: http://www.edwardh.com/jsunit/

        http://sourceforge.net/projects/jsunit

JsUnit is a Unit Testing framework for client-side (in-browser) JavaScript. It is essentially a port of JUnit to JavaScript. Also included is a platform for automating the execution of tests on multiple browsers and multiple machines running different OSs.



Next 5 >>

Cocoa Counter