元设计方法是一种简单有效的分析与设计的技术,元设计方法=系统设计+项目设计。
系统设计:将大系统分解为小模块/小组件的方式,可以为模块/组件的定义(结构、角色和语义)以及交互设计提供指导,输出系统的概要架构。
项目设计:针对项目进度、成本和风险进行设计,可以作为系统集成的指导,并匹配相应方案以供执行和跟踪。
当架构设计不充分或组织无法承受构建系统的压力的时候,就不应该冒险让团队启动系统的开发。设计的目标:首先满足客户的真实场景需求,同时设计必须是组织或团队能力和约束范围内。
设计并不费时,时间紧迫有助于避免设计镀金。帕金森定律表明,只要还有时间,工作就会不断扩展,知道用完所有的时间。PS:设计的关键在于专注的深入思考,而非大量的时间投入。
分析瘫痪:是一种困境状态,当一个人或者一个团队,陷入一个看似无休止的分析、设计、新发现和返回进行更多分析的循环时的状态。在这种状态实际就是一种瘫痪状态,无法取得任何有成效的结果。
清晰、明确、可比的选项是明智决策的关键。
架构师需要对如下事情负责:一是架构出错、二是未能将设计传达给开发人员,三是未能在交付之前指导好开发工作并保持架构不腐化。
架构师必须根据可用资源、资源可以产生的内容、涉及的风险和截止日期来校准项目。
客户提供伪装成需求的解决方案极为普遍。警惕。如客户建设房子时候,提出房屋需要支持烹饪的需求。
切忌根据需求而不加以抽象直接设计。
功能始终是集成的结果,而不是实现的结果。
拥抱需求变化,如果没有需求,软件工程师就失业了。处理变更的诀窍部署与之抗争、推迟变更,或者完全耽搁变更,而是在于控制他的影响。
通过项目设计到位, 可以消除常见的成本赌博,开发死亡行军,对项目一厢情愿的想法以及昂贵的试错行为。
一个好的项目设计包含:人员计划、项目范围界定、工作量估算、功能开发与集成计划、项目任务的详细时间计划、成本计算、计划的可行性分析与验证、以及建立执行与跟踪机制。
功能永远是集成的结果,而不是实现的结果
决不要急于功能来做进度报告,而是基于集成来做进度报告。
对于任何软件项目,最明智的第一步就是为项目找到合适、有能力的架构师。
架构师专注的关键目标是设计系统并防止设计在开发过程中偏离。同时还需要承担技术指导、需求评审、设计评审、系统中每个服务的代码评审、设计文档更新、对来自市场的功能需求的讨论等工作。
项目铁三角:项目经理、产品经理、架构师。开发人员和测试人员是项目必须的临时人员。
项目经理负责对外跟踪进度并将状态报告给管理层和其他项目经理,协商条款并处理跨组织约束;对内项目经理分配工作任务、计划活动,并确保项目按计划、按预算和按质量进行。项目经理前期负责项目设计和安排,后期负责项目状态汇报。
产品经理充当客户的代理,作为团队与客户沟通的桥梁,同时负责解决客户之间冲突、协商需求、定义优先级并沟通期望。产品经理前期负责收集需求,后期负责向客户演示。
架构师是技术经理,充当项目的设计主管、过程主管和技术主管。架构师与产品经理一起完成系统设计,架构师与项目经理一起完成项目设计。架构师确保团队在逐步构建系统的过程中,严格按照系统和项目设计及对质量承诺。作为技术主管必须完成技术的最佳方式,但将细节决定权留给开发人员。架构师前期是设计系统和项目,后期提供持续的技术和流程指导。
软件项目总是有很多制约因素,如时间、范围、工作量、资源、技术、遗留代码、业务环境等。