F*An Anti-Pattern for Sustainable Software Development持续性软件开发的反模式<br />Perl Workshop Beijing 2009<br />Thibaud de Souza, L...
Agile & Architecture敏捷软件开发 & 架构<br />Agile is a software development methodology. There are few recognized or proposed way...
Layering & Stories分层 & 故事<br />Layering is a well known separation principle in software architecture - e.g. MVC meta-patt...
Problems with Layering分层带来的问题<br />Sooner (development) or later (maintenance), the business perspective hits the developm...
Problems with Layering分层带来的问题 <br />Refactoring and slack are agile remedies used to safeguard architectural integrity aga...
F*<br />Features (‘value increments’) are recognizable elements of functionality that users value and understand.<br />功能特...
F* RequirementsF*必备要素<br />An application that instantiates F* is such that:<br />运用F* 的应用程序必须是:<br />1.   Each top level ...
Instantiating F* - Case StudyF*运用实例 <br />F* is a separation model or meta-pattern. It can be instantiated in various ways...
Features, then...功能,然后是…<br />Examples of what counts as a feature:<br />功能块的示例 (目前共40个):open-app, help, open-as-text, und...
Anti-Pattern?反模式?<br />Strong separation allows a ‘rough and ready’ implementation style: maximise work not done.<br />重度分...
Technical Benefits技术好处<br />Fast and fun. Features are easy to write. You can literally hack them away.<br />高效有趣。功能块容易编写。...
Business Benefits商业好处<br />Mix and match. Features are easy to add, remove and replace. A feature set can be used to gener...
Conclusion & Further Work结论 & 未来<br />ee-ide and ee-docs are freely available from oogtech.org. Another application, ee-xm...
Upcoming SlideShare
Loading in …5
×

2009 F Star Perl Workshop Beijing

1,484 views

Published on

This is the first public presentation of F*, A meta-pattern for developping maintainable, extensible software.
Bilingual English/Mandarin Chinese

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,484
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
20
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • 2009 F Star Perl Workshop Beijing

    1. 1. F*An Anti-Pattern for Sustainable Software Development持续性软件开发的反模式<br />Perl Workshop Beijing 2009<br />Thibaud de Souza, London, UKtea.desouza@gmail.com<br />http://www.oogtech.org<br />
    2. 2. Agile & Architecture敏捷软件开发 & 架构<br />Agile is a software development methodology. There are few recognized or proposed ways in which agile interacts with software architecture.敏捷软件开发是一种流行方法,但敏捷性软件开发与架构建设交互的方法寥寥无几。<br />Architecture is an emergent property of medium to large scale software. This property is affected by design and process, and in turn affects maintainability and extensibility.架构是中到大型软件的突显特性, 受到设计和开发程序的影响, 并反过来影响软件的维护和延展性。<br />9/19/2009<br />2<br />tea.desouza@gmail.com<br />
    3. 3. Layering & Stories分层 & 故事<br />Layering is a well known separation principle in software architecture - e.g. MVC meta-pattern.<br />分层是广为人知的软件架构分离原则 – 例如 MVC元模式。 <br />End users and business stakeholders perceive software as a bunch of features. Agile uses iterations and stories to keep development focused on business needs.<br /> Stories and features cut across application layers. <br /> 终端用户和商业控股者视软件为功能的集合体。而敏捷开发利用循环和故事满足商业需求。故事和功能穿透应用程序的层次。<br />9/19/2009<br />3<br />tea.desouza@gmail.com<br />
    4. 4. Problems with Layering分层带来的问题<br />Sooner (development) or later (maintenance), the business perspective hits the development process. At this point, layering mostly gets in the way of ‘making it work’.<br />无论是开发或维护阶段,或早或晚商业视角会涉足软件开发过程。这时,分层往往是阻挡实际运行的障碍。<br />Typically, pressure manifests itself as growing pains, hacks and patches - ultimately leading to corrupted software and mounting maintenance costs.<br />大多时候,压力显示为不断增长的麻烦,重新编写或修修补补 – 最终导致软件无法运行或堆积如山的维护问题。<br />9/19/2009<br />4<br />tea.desouza@gmail.com<br />
    5. 5. Problems with Layering分层带来的问题 <br />Refactoring and slack are agile remedies used to safeguard architectural integrity againstbusiness pressure. <br />敏捷开发通过重构和slack来对抗商业压力保护架构健全性<br />Unfortunately, many organisations are unwilling to allocate time to fixing stuff that already works.<br />不幸的是,很多机构不愿意分配时间来修补已经运行的东西<br />Could business pressure be channelled and used to shape software architecture, rather than working against it?<br /> 商业压力可不可以被导向来塑造软件架构,而不是摧毁它呢?<br />9/19/2009<br />5<br />tea.desouza@gmail.com<br />
    6. 6. F*<br />Features (‘value increments’) are recognizable elements of functionality that users value and understand.<br />功能特性(价值增量)是用户重视并理解的<br />F* is a meta-pattern using ‘strong feature separation’ (not directly related to feature driven development)<br />F*是重度运用功能分离的元模式 (与以功能为导向的开发模式并不直接相关)<br />F* has been tested by using it to create a critically small application (200 files / 350 kb)<br />F*已通过一个小至中型的应用程序的开发测试(200个文件/ 350kb)<br />9/19/2009<br />6<br />tea.desouza@gmail.com<br />
    7. 7. F* RequirementsF*必备要素<br />An application that instantiates F* is such that:<br />运用F* 的应用程序必须是:<br />1. Each top level package realises a unique feature. <br />每个最高层模块具备独特功能特性<br />2. All source code for a given feature can be removed in a single step.<br />某个功能特性的源代码必须可以一步消除<br />3. After a feature has been removed, the application must compile and run correctly.<br />某项功能被消除后,程序依然正常运行<br />Strong separation is achieved by ensuring that features are both logically and physically separated.<br />功能特性通过逻辑上和物理上的分离实现重度分离 <br />9/19/2009<br />7<br />tea.desouza@gmail.com<br />
    8. 8. Instantiating F* - Case StudyF*运用实例 <br />F* is a separation model or meta-pattern. It can be instantiated in various ways and is open to some interpretation.<br />F*是一种分离模式或元模式。可以通过多种方式甚至衍生方式运用<br />In this case, I am creating an IDE using a weightless application framework. <br />在这个例子中,我通过一个并不重要的应用程序框架制作了一个IDE(集成开发环境)。<br />As framework actors, features communicate using heavyweight, typed notifications: features import events and sometimes interfaces.<br />由于框架的作用,功能块通过功能强大并分类成型的通报来交流:功能块会引进事件有时甚至是界面<br />Features are listed in a text file. Any feature can be removed or replaced.<br />功能块都列在一个文本文件里。所有的功能都可以被剔除或取代。<br />9/19/2009<br />8<br />tea.desouza@gmail.com<br />
    9. 9. Features, then...功能,然后是…<br />Examples of what counts as a feature:<br />功能块的示例 (目前共40个):open-app, help, open-as-text, undo, undo-text-actions, usage-data, auto-update, new-file-or-directory, command-wizard, outline, coloured-syntax, ee-docs-skin, ...(currently 40)<br />On average, each releasable feature used 4 classes and requires 3 man hours.<br />平均来说,每个成形的功能块有4个层次,需要3个工时 <br />1/3 of the code consists in standalone utility classes.<br />1/3的代码由独立的工具类组成<br />Maybe 5 features are ‘support features’ that do not contribute a value increment.<br />约有5个功能块是支持性功能,并不贡献任何价值增量<br />9/19/2009<br />9<br />tea.desouza@gmail.com<br />
    10. 10. Anti-Pattern?反模式?<br />Strong separation allows a ‘rough and ready’ implementation style: maximise work not done.<br />重度分离使‘粗略’的开发模式成为可能:最大化未完成的工作<br />Some features create runtime components, other features collaboratively act upon such components.<br /> There is no structured application model or view. Some features are MVC, some are not. <br />有些功能产生runtime组件,其他的功能集体对这些组件产生影响。 <br />没有成形的程序结构模型或概览。一些功能块是MVC, 其他的不是。<br />Features begin as spikes. Many features are plugged ‘as is’ without concern for internal elegance or structure. 功能块以实验的形式开始。许多功能块插入时好像没有考虑内部结构或其简明优雅性。<br />‘Ad-hoc’ notifications. <br />临时通报 <br />9/19/2009<br />10<br />tea.desouza@gmail.com<br />
    11. 11. Technical Benefits技术好处<br />Fast and fun. Features are easy to write. You can literally hack them away.<br />高效有趣。功能块容易编写。<br />Maintainable. It’s easy to find bugs and easy to fix them. No fumbling across application layers.<br />易维护。容易发现并修补bug,不用在几个层次间一通瞎忙<br />Extensible. The pattern of connectivity between actors is scale-free; the number of notifications grows linearly.<br />延展性。各因素间的连接模式不受规模限制;连接模块的通报成线性增长。<br />9/19/2009<br />11<br />tea.desouza@gmail.com<br />
    12. 12. Business Benefits商业好处<br />Mix and match. Features are easy to add, remove and replace. A feature set can be used to generate several applications.&gt;&gt; In this project, there are 3 products released and 2 products pending.<br />混搭。功能特性实现简单增加,消除和取代。一套功能块可产生多个应用程序。<br /> &gt;&gt;就这个项目来说,已发布3个产品,2个产品即将完工<br />Short release cycle. 1 to 2 release per day if desirable (I release weekly). <br />发布周期短。最多一天可以发布2个产品。<br />Transparent, dynamic process. Progress with confidence; spot and seize opportunities.<br />透明,充满活力的开发过程。充满信心的开发过程,随时迎接机遇与变化。<br />9/19/2009<br />12<br />tea.desouza@gmail.com<br />
    13. 13. Conclusion & Further Work结论 & 未来<br />ee-ide and ee-docs are freely available from oogtech.org. Another application, ee-xml has been released as freeware.<br /> ee-ide和ee-docs可在oogtech.org免费下载,ee-xml已作为共享软件发布。<br />The underlying platform, Kippu,supports external plugins. This allows decentralised, collaborative development using F*.<br />后台Kippu支持外部插件,运用F*分散协作开发成为现实。<br />Last, but not least, I am planning on using F* in game development and AI research.<br />未来,我计划运用F*进行游戏开发和人工智能研究。<br />9/19/2009<br />13<br />tea.desouza@gmail.com<br />

    ×