LOGO软件自动化生产方式探讨LOGO目录形式化方法学的启发软件自动化生产我的观点我的疑问PPT中字体颜色说明:绿色:引用观点、结论红色:我的观点,欢迎大家批评指正LOGO定义如果一个方法有良好的数学基础,特别的,是以形式化说明语言描述的,那么他是形式化的。当一种表达方式基于一种含有明确定义的形式(语法)、含义(语义)以及关于分析、推论或者证明其构造的规则的语言时,这种表达方式被称为形式化的。其语法可以是图形的或者是文本的。•形式化方法学的启发LOGO形式化规格说明的期望特性一致性无歧义性提供高层验证的手段•形式化方法学的启发LOGO形式化方法优缺点优点:使用数学方法提高一致性行避免产生歧义提供高层验证的手段能够较清晰地描述算法缺点:提高学习成本增加理解难度缺乏对UI设计的描述能力•形式化方法学的启发LOGO启发可生成形式化规格说明语言到程序设计语言的映射为软件自动化生产提供思路•形式化方法学的启发LOGO软件自动化生产没有银弹?--能否解决软件特性中固有的困难(根本困难)?错误的观点工业生产线----错误的比喻模型驱动架构与可执行UML(MDAwithxUML)MS软件生产工厂•软件自动化生产LOGO软件特性中固有的困难•软件自动化生产--没有银弹?--能否解决软件特性中固有的困难?复杂性软件内部结构复杂,这不仅导致技术产生困难,还导致沟通理解与管理变得困难。业务逻辑的复杂、技术的复杂以及两者的耦合。一致性复杂来自保持与其他接口和人为惯例的一致方面,对软件的任何再设计,都无法简化这些复杂特性。需求与系统、系统之间、开发人员与需求提供者、开发人员之间LOGO软件特性中固有的困难可变性应用、用户、自然、社会规律、计算机硬件等等的变化强迫软件随之变化。需求变更、功能扩展、同一领域不同用户对软件的要求也是可变性的表现。不可见性软件的客观存在不具有空间的体型特征。是不可见的和无法可视化的。软件需要事物进行抽象。很难抽象出准确的模型且能被完全正确地理解。•软件自动化生产--没有银弹?--能否解决软件特性中固有的困难?LOGO固有困难的解决要点返回•软件自动化生产--没有银弹?--能否解决软件特性中固有的困难?复杂性如何清楚准确地说明复杂软件的需求、设计和功能以及如何使其便于维护人员理解?一致性如何使团队中的成员能对软件具有统一的、正确的认识?可变性如何快速理解需求变更前后模型的差异从而有效的指导开发?不可见性高度抽象的模型如何清楚准确地被理解?沟通复杂性如何使复杂的软件更便于维护和更新?一致性如何使变化过的模型在整个系统中保持一致?可变性如何快速的处理来自软件生产中各阶段的各种变更?不可见性如何使抽象的模型更容易被扩展从而最好的适应未来可预见和不可预见的变化?变化LOGO错误的观点将组件比作工业零件,通过组件的组合完成流水线生产《软件生产的流水线作业模式探讨》忽略了变化,即使是最基本的函数也不能像零件一样永远一成不变。变化可以是语句级的。不考虑整个软件的总体设计,完成各个模块的设计并由模块管理系统通过调度实现系统功能《一种软件的工业化生产方式》忽略了沟通,每个模块开发者之间对于业务模型的分析与设计的一致性无法被保证,会可能导致调度模块的复杂度大大增加。•软件自动化生产—错误的观点LOGO没有被考虑的部分没有考虑需求变更在各个阶段的影响。没有考虑模块、组件之间的交互带来的影响。认为软件中的一部分是不会产生变化的。没有考虑软件开发过程中的迭代。•软件自动化生产—错误的观点LOGO错误的比喻-工业产品生产线1零件之间的耦合度。2零件可变性。3产品功能与架构。4工业产品设计。5开发过程中的迭代。•软件自动化生产—错误的比喻LOGOMDA与可执行UML复用或需求变更时进行修改•软件自动化生产—模型驱动架构与可执行UML技术变更或修改实现时进行修改LOGO初始阶段随意刻画的想法风险评估项目设想文档利益相关者列表用例和主场景初始域图初始类图初始指出估算•软件自动化生产—模型驱动架构与可执行UMLLOGO营造阶段1分析域(场景)在单个域中建模分析类域图域层次顺序图分析类的行为虽状态的变化分析类之间的交互描述了操作和状态动作类图类状态图类协作图ASL描述•软件自动化生产—模型驱动架构与可执行UMLLOGO营造阶段2定义和实现从PIM到相关实现环境当中的PSM的映射软件体系结构和代码生成器•软件自动化生产—模型驱动架构与可执行UMLLOGO构建阶段1通过迭代的方式完善模型和代码生成器2测试移交阶段•接收测试•软件自动化生产—模型驱动架构与可执行UMLLOGO优缺点优点:1将业务模型和实现技术解耦2力图使用无二义性的建模工具3能更快更简洁的处理变更的方法4复用性高(专业知识的复用,而非实现代码)缺点:1提高了学习成本2提高了技术方面的抽象程度3需要技术专家具有更强的技术修养4没有完善的代码生成器的开发框架•软件自动化生产—模型驱动架构与可执行UMLLOGO是否是银弹?•软件自动化生产—模型驱动架构与可执行UMLLOGOMS软件工厂使用DSLs(领域特定语言)BuildingaFlexibleSoftwareFactoryUsingPartialDomainSpecificModels一个单独的模型无法描述整个复杂系统。为整体模型的每一部分建立小型、局部的模型。每一个局部模型使用相同或者不同的特定领域语言描述。特定领域模型(DSM)特定领域语言(DSL)目标代码代码生成器•软件自动化生产--MS软件生产工厂LOGO我的观点1找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的部分混在一起。为可变化的部分提供良好的UI设计为可变部分设计良好的形式化表现方式通用的可变到不可变的映射•需求到PIM的映射•PIM到PSM的映射•关于软件自动化生产的观点LOGO我的观点2无二义性、易于理解的形式化模型。软件工程人机交互心理学形式化与非形式化•关于软件自动化生产的观点LOGO我的观点3可交互的动态模型,更友好的时序与协作展现方式。PPT动画效果艺术修养•关于软件自动化生产的观点LOGO我的观点4建立可行的逆向过程复用推广•关于软件自动化生产的观点LOGO我的疑问1在使用形式化规格说明的情况下是否可以使用数学方法进行简化?2形式化说明语言是否有能力成为程序设计语言?3形式化规格说明是否能成为法律依据作为合同的辅助材料?•关于软件自动化生产的疑问LOGO我的疑问4xUML是否是形式化的?5算法属于平台无关模型的一部分,但却会用到软件技术专家的知识?6xUML中不考虑UI设计?UI难道不是PIM的一部分么?•关于软件自动化生产的疑问