软件产品架构师手记
第一部分介绍软件产品特点与一般软件的不同之处,并阐述了目前软件产品发展的前沿动态。
第二部分介绍软件产品架构师的主要责任和工作任务,包括对各项任务的描述以及基本的工作方法。成功完成各项任务除了要具备深厚的软件开发技术基础,还要综合平衡产品、市场和团队特性等各类因素。
第三部分介绍软件产品架构师需要参与的产品管理的内容,在基本软件开发的基础上如何从产品角度确定软件开发的目标和计划。
第四部分介绍常见的软件产品架构设计问题。
第五部分介绍产品架构师如何与企业内部和外部的各种人员和组织交流协作,以实现成功的软件产品。
第六部分介绍软件产品涉及的知识产权工作,以及产品架构师应该发挥的作用。
第七部分介绍软件产品架构师应该具有的知识和能力,制定学习计划。
第八部分介绍软件产品架构师需要参与 会活动——这是国内许多技术人员所欠缺的实践。
第九部分介绍一些职业发展问题,这也是软件产品架构师和其他高级技术人员遇到的常见问题。
—————————————————————————————————————–
Part1
—————————————————————————————————————– 如何估计开发工作量p> 工作量指按一定质量要求开发和测试软件产品所需要的人力、物力和时间。细化具体项目的工作量估计是验证工作的重要方法,架构师可以要求开发团队将工作量细化到具体模块和开发过程的具体工作。开发团队对工作量的估计一般由主任程序员汇总和 告,产品架构师对开发团队工作量估计的准确性与主任程序员的信任和关系密切相关。估计工作量的本质是根据历史数据用统计方法评估未来的工作量,根据历史数据和经验准确评估开发的效率和质量是保证产品开发成功的关键。 如何评价和设计产品质量p> 软件产品质量需要明确需求、设计、实现和验证。软件产品质量广义指产品能够使用户顺利完成指定功能的能力,包括在使用中出现问题的数量,出现问题时的处理提示,自动恢复能力,性能,对环境、操作和数据变化的适应能力等 多方面的指标。高质量的软件产品需要高水平的设计、编码、测试工作综合作用。功能和架构设计是高质量产品的基础,高质量产品需要为用户提供方便易懂的界面显示、简洁的操作、清楚的结果和操作提示信息、快速的响应。高质量的功能和架构设计需要仔细的市场调查、原型开发、反馈和技术积累,并需要高水平的开发能力来实现。 质量评价是软件产品开发和销售计划的重要部分,包括与市场上相关产品质量的对比、产品质量需求的定义、本产品质量标准制定、根据开发和测试结果对产品质量的 告、根据质量目标和结果对产品质量对销售和支持的影响等工作。 如何将非产品软件产品化p> 非产品软件包括为某个客户开发的软件项目、企业内部和外部的软件研究成果和原型、开源软件、软件辅助工具、员工 会活动成果、与其他公司的协作成果等。将非软件产品转为软件产品或者产品的一部分是产品架构师的常见任务,也是架构师职业发展的机会,产品架构师在软件转化中一般负责对软件功能的分析和定义、架构分析和改进设计、改进工作任务设计,并与相关团队讨论确认。 ——————————————————————————————————————————————————————————————————————————- Part3 产品管理 如何为产品指明方向p> 产品的方向指未来若干年产品的目标市场、销售收入计划、产品功能和技术架构计划等前景。产品方向是产品管理中首要确定的内容,是产品开发销售等具体计划的指导。路线图是产品技术方向的常见表示方式,比较形象地论述一个或相关几个产品涉及的技术及发展方向,一般列出时间轴上的各个里程碑上的重点。产品方向代表企业销售与产品开发部门达成的总体产品策略,可以用来确定产品是否符合企业发展战略要求,保证产品的开发销售可以实现企业对产品的要求,检验高级技术和销售人员对市场的理解和工作水平。产品方向是开发团队的发展方向和技术储备的指导,需要根据产品方向鼓励开发人员学习相关行业知识和软件开发技术,进行相关改进和创新,更好地实现产品战略。产品方向的确定是前瞻性和可行性思维的结合。 架构师作为高级技术人员代表产品开发团队参与产品方向的讨论和决策,提出相关产品技术的发展方向和选择可能性,根据业务和销售人员的反馈和评价,制定可行的产品技术架构方向。架构师还需要参与产品方向的传播和实现,向客户、销售、开发和售后服务人员介绍产品方向的美好前景。在确定产品方向之后,产品架构师与相关技术人员讨论编写总体和个别模块的技术路线图,进行相应的传达、修改和实施,使开发人员了解产品设计及其背后的原因,从而更好地实现产品的架构和功能。产品的具体功能可能与产品方向描述有所区别,具体功能可能随时间发布的多个版本中随着客户的要求、问题处理等因素的影响而逐步变化,并反过来影响产品方向。 好产品需要好的商业模式 产品商业模式指产品销售的地域、市场和方式。常见市场包括消费市场、企业市场、服务市场。销售方式包括销售渠道(如直销、分销、OEM)、定价方法(如按装机数量、并发用户、注册用户、使用时间、CPU
Part4
与产品经理的关系 架构师需要深入了解行业和客户,并努力在产品设计上满足当前客户各种功能性或非功能性的需求,同时考虑到客户未来业务拓展及产品可扩展性的需要。产品经理则负责定义客户需求并向开发团队解释其应用场景。从一定程度上来说,产品经理是开发团队与客户之间的桥梁,架构师则是开发团队的首席代表。在需求分析阶段,架构师与产品经理同力合作,准确理解客户需求;在设计开发阶段,架构师设计软件整体架构,审查开发方案,与产品经理及时沟通以保证产品的功能与客户需求一致,并及时通过产品经理获取需求变更信息,调整开发方案。 与项目经理的关系 项目经理负责监督项目进度及管理团队的资源,架构师从技术层面上协助项目经理一起进行决策,保证项目的正常实施。 与开发团队的关系 架构师应该是整个开发团队的技术权威,把握产品开发的技术路线,同时对产品实现过程中各项具体的方案设计进行评审及指导。架构师需要定期跟踪和监控系统的开发,确保架构思想和既定问题的解决方案得到正确的执行,避免架构设计在实施阶段的偏离。架构师应该协助项目经理和整个团队一起进行技术攻关,解决代码实现中的关键问题,对已实现部分的代码,尤其是核心部分的代码进行全面审查,确保架构实现的循序渐进和准确性。 与主任程序员的关系 主任程序员负责确定软件开发环境和方法、软件模块、算法的设计、软件源代码组织、软件编译连接的结构和过程、编码规范等具体产品实现技术。产品架构师需要与主任程序员协调架构设计与程序设计层次的工作交点,保证产品功能和非功能要求在整个设计层次中正确传递和实现。 与测试经理的合作 架构设计的不同往往会对软件的性能造成较大的影响,因此架构师需要及早和项目经理一起拟定性能测试计划,选择合适的性能测试工具,根据产品运行软硬件环境的不同,确定相应的测试策略。通过迭代式的开发模式测试团队可以在早期拿到软件的原型系统或可工作的关键模块,通过阶段性的测试验证架构设计的合理性和可行性。 与研究部门合作 产品架构师应该与研究部门密切合作使企业的研究经费得到充分利用,促进研究成果的发展和向产品转化。一方面了解前沿技术和想法,及时发现提高产品能力的机会,另一方面根据产品的问题和市场需求,对研究课题提出建议,引导研究更多地为产品开发做出贡献,同时调动更多的资源帮助产品解决技术问题。 与客户合作 作为一个产品架构师,尤其是行业应用软件的产品架构师,一定要对产品的目标客户有深入的了解,同时与关键客户建立良好的合作关系,确保自己设计并开发的产品是客户想要的产品,能真正地解决客户的业务需求。架构师不仅要对当前所服务客户的业务需求有清晰的了解,也需要对整个行业里一些好的、先进的工作理念和业务流程了如指掌,再结合自己在其他客户项目中的实施经验,才能向客户提出最优的解决方案。如果单纯地将客户的需求解释并映射成软件系统的不同功能并据此进行设计,很可能最终得到的产品无法得到客户的认可。在与客户沟通的过程中,架构师应该时刻关注主要矛盾,紧紧抓住关键需求。对于成本较高的需求应努力说服客户放弃该需求或提供替代方案,可以从对系统整体架构设计或性能的影响方面入手,引导客户用全局的观念来看问题。 与外包公司合作 外包的好处包括:简化企业劳动力管理,方便调度资源,快速开发产品,快速得到产品需要的特别技术,降低前沿技术开发的风险。潜在的问题是外包员工的责任心管理,关键技术的丧失,外包公司成为市场竞争对手,产品支持不能延续等。产品架构师应对外包公司及其员工的能力和特点由正确的评价,以供自己在工作中觉得如何与其合作,在开发过程中注意外包的进度质量,根据质量状态及时作出应对方案,保证最终产品的功能和质量满足产品计划要求。 与技术公司(合作伙伴)合作 与技术合作伙伴之间的合作活动主要围绕产品的设计和开发过程。设计方面包括需求定义、架构设计、模块的接口设计;开发过程方面主要是进度、代码管理、测试项目和结果的跟踪、开发成功评估和过程改进计划。在合作过程中,软件架构师需要随时跟踪进度,及时发现和解决技术问题,及时给相关部门和管理人员反馈,与各个方面一起讨论解决。还要考虑合作伙伴的工作对未来产品总体功能和其他管对的影响,及时沟通保证产品的整体功能和开发进度按计划完成。 与产品经理合作 产品经理是负责并保证高质量的软件产品按时完成和发布的专职管理人员,工作任务包括获取客户需求、产品概念设计、产品市场定位、产品发布等。软件产品架构师需要经常和产品经理进行合作。一方面把客户的业务需求转化成具体的产品功能,然后和开发人员一起对产品功能进行设计和实现;另一方面架构师需要把产品的新功能和技术介绍给产品经理,并通过产品经理或者产品经理一起把信息传递给最终用户。 与高级经理合作 高级经理一般负责企业某个方面或者某个大部门的全面工作,比较关注高层业务指标和重点客户。高级经理依靠产品架构师提供技术方案,架构师经常与其他高级技术人员和项目开发经理一起向高级经理汇 开发市场计划,通过交流影响高级经理对产品开发的资源分配、进度计划的决策。架构师应该及时向高级经理反映产品开发和技术支持中的重大问题,并提出改进建议和实施计划。产品架构师还应该向高级经理提出在组织管理、降低开发成本、提高开发效率、技术发展方向、人员评价、 会和客户活动等多方面的 告和建议。 与界面设计师合作 界面设计包括整体风格设计、功能导航设计、功能点设计等内容。通常来说,界面设计会在产品的概要设计阶段开始进行,并在详细设计阶段随着功能详细定义而结束,这是传统瀑布开发模式下的情形。在敏捷开发和迭代开发的模式下,由于没有明确的详细设计阶段,而对于每个具体的功能点实现可能被拆分到几个迭代中,界面设计相应地也会贯穿整个迭代开发的全过程,在不同迭代中实现对不同功能点的界面设计。 ——————————————————————————————————————————————————————————————————————————– Part6
? 框架可以用代码表示,也能直接执行或复用,而对设计模式而言只有实例才能用代码表示; ? 设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式缺可适用于各种应用。 框架可分为白盒和黑盒两种框架,白盒即具备可视性,被继承父类的内部实现细节对子类而言都是可知的。基于对象构件组装的框架就是黑盒框架。框架的一个重要特征就是用户定义的 方法经常被框架自身调用而不是从用户的应用代码中调用。 信息系统是由计算机硬件、 络和通信设备、计算机软件、信息资源、信息用户组成的以处理信息流为目的的集成系统。面对杂乱无章的数据,架构师必须利用自己的逻辑思维能力和抽象思维能力,设计出定义良好的数据模型,这是信息系统成功的关键。 Rational Team Concert勤能补拙,加油吧!!! 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!