Wednesday, March 29, 2006

Q5. Software quality: What makes a program code good?

I'll consider in these aspects:

1. Length of code(LOC)
It is a rather technical issue. In some ogranisation, it calculate the LOC as a figure to evaluate a program is good or not. For example, both two program have same functions, a program that have use lesser code can show that the pogrammer wrote it in a cleverer way, in some means.

2. Structure
A program that is well structurize will make it possible for reuse, understand and analysis. A program can do the job but only the author can understand is not a good program.

Friday, March 17, 2006

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

YAGNI stands for:

You Arent Gonna Need It

"Always implement things when you actually need them, never when you just foreseethat you need them."


Even if you're totally, totally, totally sure that you'll need a feature later on, don't implement it now. Usually, it'll turn out either a) you don't need it after all, or b) what you actually need is quite different from what you foresaw needing earlier.

This doesn't mean you should avoid building flexibility into your code. It means you shouldn't overengineer something based on what you think you might need later on.


DTSTTCPW stands for:

Do the simplest thing that could possibly work.


It is one of the slogan of XP(Extreme Programming)'s 12 best practices. This is something an XP coach will say when he sees an XP developer doing something that is needlessly complicated. In general, XP says don't overdesign your system.

Link: http://xp.c2.com/YouArentGonnaNeedIt.html
http://www.aka.org.cn/Docs/latest/Extreme%20Programming%20FAQ_Chinese.html

Q3 Comparation between CSDP & our course

Here are the difference between our course and CSDP thats do not coverage in our course of SW Engineering:

-Buiness Practice
-Professional Practices
-Engineering Economics
-Software Maintenance
-Software Quality Methods

Q2. UML tools, What is your favorite?

Comparation of Eclipse, Viusal Paradigm & Poseidon.

I’ve try out three UML programs. And I thought that the “Omondo EclipseUML Free Edition” is the most useful tool for me. I will compare those programs on these aspects:
-User friendliness-Number of functions-Installation.
User friendliness
I think both Poseidon and Visual Paradigm are quite user friendly because there interface is easy to understand. In Poseidon, you can understand what parameters the program ask you to enter graphically. Unlike Eclipse, once you click on an UML element icons, it just pop up a window and ask you to enter all of the parameters before you can see the icon shown on the panel. It is quite confusing for the user who are not familiar with all the parameters of Java. In this issue, Poseidon can just drag the icon out and build up the relationship first and can enter those parameters later.
Number of functions
Basically, the Poseidon and Visual Paradigm are focus on drawing UML diagrams. Compare with Eclipse, it is a program that consolidate with the IDE. That means you can write your code at the Eclipse, too. Therefore, the UML functions is quite little in Eclipse.
InstallationWith no doubt, the installation of Poseidon is the easiest one. You can select nothing except selecting which folder you want to in install in. Visual Paradigm also pack its program as a windows installer. However with the copyrights, the installer requires user to make a number of decisions. Which license user want to use, e.g. In Eclipse, the UML function is install as a plugin. Therefore after you have install the main program, you have to install the Omondo EclipseUML Free Edition in command prompt. But I think it is not a problem compare with installing Visual Paradigm.
Conclusion
As seen from above, my final decision is Eclipse. The decision is base on some factors affecting I haven’t mention above. Poseidon is too simple for me, I did not find another functions else than drawing UML diagrams.(At least I haven’t find it out yet.) Also, the alignment function of Poseidon is quite poor and the help function is inadequate. For Visual Paradigm, though the functions and UI is quite good. However, it has a vital weakness; the response time. When I run the program, lagging always occurs when I just drag an icon. It is a useless program for user even though how many functions it contains. For Eclipse, I think it is a rather professional tools, and the UI is not easy to under, compare with other two programs. However I still choose it because the UI is similar with NetBeans.

Q1. Basic Skills for a Software Engineer

I have search both on the web and in job recruitment ads, and I’ve found these skills are mostly require to be a software engineer:

- SW development expreience

This is the basic skill to be a SW engineer. In order to implement the project, you should have been in a part of the project.Then you know the routine, what problem will face during the project,etc.

- Solid software language(s) knowledge

I can’t imagine a SW engineer that without this knowledge.It just like a captain that don’t know how to operate a ship.

- Initiative

Being a SW engineer should be shelf motivate, as the sofatware development is a tough work. You should like your job.

- Problem solving skill

The present of a SW engineer is to help the clients solving problems.

- Communication skill

I think this is the key to define whether a SW engineer is good or not. As SW development is a highly Client oriented work. What the client want(so called requiement engineering) is define what will the software like.Therfore good communication skills can greatly eumlimlates fatl error cause by missunderstanding.

- Language skills(one or more)

As the trend of globalization, our clients will be come from all over the world, equipping foreign language skills(at least English skill) is important.

- Team working spirit

As SW development is not a solo work, SW engineer relies on its team during development.So working as a team is vital.