你说的QA/QC和加拿大的不是很一致,其实应该是software architect或re-engineer. 这种工作一般要求10年以上的工作经验,要有大公司或大项目的经验.
下面随便谈谈我对加拿大的QA/QC的理解,说的不对的请批评指正.
我在上学时,我的导师讲过CMM还是不成熟的, 还不能用科学的方法定义,只是开发经验的总结, 缺少理论基础和普遍适用性. 而软件工程是计算机科学和数学的基础上,以需求,设计,开发,测试为循环的生产过程. 开发各种软件,无论是通讯或办公软件,都可以按照这个过程进行,是普遍适用的.但是,即使是在普遍适用的软件工程中, 测试的方法和理论还是以测试人员的个人经验为基础,目前没有科学的定义和方法能适合任何软件产品的测试. 当前在加拿大的IT公司中QA/QC的工作主要是测试,主要分为FUNCTION和PERFORMANCE两种. 而如何确保软件开发过程的质量还是空白. CMM没有给出清晰的定义,针对不同的产品没有通用的方法和尺度. 因此,大多数IT企业都还是观望,很少应用. 现在大的IT公司设有专门的部门,叫RE-ENGINEERING, 是专门负责REVIEW软件产品的系统设计, PERFORMANCE的优劣,代码和算法的优化和规范的等问题. 我个人认为其实这是产品优化工作.如果能在RE-ENGINEERING的基础上提高到理论基础上,再增加一些实际的应用,应该比CMM要实际些. 如果你要干QA/QC, 测试还是基础.我个人认为CMM侧重于依靠标准的开发过程,象ISO标准一样来开发软件,但是当前的软件工程还是依靠开发人员的个人经验为基础,而不能象 汽车流水线一样,每个部件都可以标准化. 而且软件产品的特点是可变性极强,同时软件产品涉及的领域太广,任何产品的局部或产品的性质的变化都会影响产品的质量.此外,产品设计的标准也会影响产品 的质量. 总的来说,虽然软件工程是指导软件开发的科学方法,但是,还有太多的空白等待弥补,因此,软件开发的标准化还太早.另外, 即使将来CMM被推广, 软件产品的质量还是要依靠测试来保证.在我的经历中,现在代码测试的方法已经很多,而且被证明很有效,但是如何让测试人员早期介入软件的需求和设计过程是 当前的一个课题,很新颖,但是,问题还很多,方案还不通用.还有,如何测试软件的系统结构,可扩展性和安全性等还是很困难的, 比如,如何用USE CASE 或USE CASE MAP自动产生TEST CASE, 是否能在DESIGN阶段就产生NON-FUNCTIONAL TEST CASE都是很前沿的课题,都值一个PHD. 能否解决这些问题也是当前QA/QC的一个重要课题.