1.What exactly does 'agile' mean?
1)Agile software development does not means a invariable mode of progeramming, rather, it plays a directing and guiding role during programming. There is a bunch of conceptions that is intimatedly realated to Agile software development. Such are Extreme progranmming, Pair programming, TDD, etc. Thus, i would regard ASD as a general target of progreamming instead of a concrete method. ASD has its own features from which derives different method of programming.
2)ASD has two deeply rooted principle:
a.Agile methods are adaptive rather than predictive
b.Agile methods are people-oriented rather than process-oriented.
Those are two very important principle of ASD .which yeilds huge advantages when compared to conventional programming idea. In conventional software developing, plans are made extremely detailed. Consequently, those constraints made the plan itself very hard to follow, and thus we need to revise the plan again and again. And so we don't make big blueprints, we use the WBS(work break-down structure), we make small plans, we holds the agility to revise it at anytime.
2.Recruiting new members in an already delayed projuct won't help anything but make the project even slower.
Can't find idealize answer the internet:(. This statement generally holds true, but what if the new member is Bill Gate or David A. Patterson or some ingeneous guys from Starford University? Can't they help a little?
3.Why we don't need details in description files while doing WBS
The answer is in question 1. Because the more detailed our plan is, the harder we are able to follow it, and the more possible we break the rules to rewrite the description file. We need to think in Agility.
4.Does there exist a project that is motivated by Source?(There exist project that is motivated by time\function)
I think yes. Source is the most fundamental factor in a project—you can't run a project without any recruit or without any money.Thus it can cast influence on the speed of a project, like time. While having only one member in the team cost you 2 years to finish the project, having 10 people may fasten your project to 3 months.
5.How can we perform a perfect encapsulation?
First, minimize accessibility of classes and members, avoid friend class.Then, don't make assumptions about the class's users. I think this is useful to me because I often assume that I'm the user. Contemplate all features and functions of your class.