个人开发流程PSP(Personal Software Process)特点:不局限于某一种软件技术,而是着眼于软件开发的流程。不依赖于考试,而主要靠工程师自己收集数据,然后分析、提高。PSP依赖于数据(工程师输入数据的时间代价、数据可能遗失或者不准确的风险、可能会出现一些数据不利于工程师本人的情况)。PSP目的是记录工程师如何实现需求的效率,而不是记录顾客对产品的满意度。
要想成为一个合格的软件工程师,就要对自己的个人能力有一个准确的估算,能规划个人能力的衡量与发展。
初级软件工程师的成长包括以下几种:积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)。例如:对JAVA、C/C++、C#的掌握,诊断/提高效能的技术,对设备驱动程序、内核调试器的掌握,对于某一开发平台的掌握;积累问题领域的知识和经验(例如对医疗或金融行业的了解);对通用的软件设计思想和软件工程思想的理解;提升职业技能(区别于技术技能),包括:自我管理的能力、表达交流的能力、与人合作的能力、按质按量完成任务的执行力;实际成果——最重要的评价标准
软件团队的模式:主治医师模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐团模式、爵士乐模式、功能团队模式、官僚模式
开发流程:①写了再改模式;②瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。瀑布模型的适用范围:产品的定义非常稳定但正确性非常重要、产品模块之间的接口能很好地定性定义和验证、使用的技术很成熟、子团队不能做到频繁的交流;③瀑布模型的变形:生鱼片模型(各个相邻模块像生鱼片那样部分重叠)以及大瀑布带着小瀑布(各个子系统统一到最后进行系统测试)
需求分析:软件需求;软件产品的利益相关者;获取用户需求——用户调查;竞争性需求分析的框架——NABCD模型(1. N(Need,需求)2. A(Approach,做法) 3. B(Benefit,好处) 4. C(Competitors,竞争)5. D(Delivery,推广) );功能的定位和优先级;分而治之。
个人感受:团队协作是一个需要分工明确的工作,在之前我们很少有过团队作业的情况,顶多只有小组作业,而且那个分工也不是很明确,看到这之后让我对团队有了更加深入的了解,团队不仅是各有分工,而且是牵一发而动全身,各个成员的任务不仅关系到团队现阶段的进度,还会对团队下阶段的安排产生重大影响。这倒是一个提醒,在即将到来的团队作业中,一定要开一个谨慎的会议来安排后面的工作,甚至还要有一些监督工作进度的安排以及对一些特殊情况的处理安排。