A Fractal Model of the Lifecycle of Reusable Objects

本文介绍了一种称为分形模型的软件过程视角,该模型专注于可复用对象的生命周期,强调迭代过程的重要性,并详细阐述了原型、扩展和巩固三个阶段。此模型有助于理解如何通过迭代改进达到组件复用的目的。

A Fractal Model of the Lifecycle of Reusable Objects


Reusable object-oriented abstract classes, frameworks, and components have lifecycles of their own that are separate and distinct from those of the applications in which they are incubated. They are the product of an evolutionary process that unfolds simultaneously within and beyond individual applications. Because this process can be characterized as a pattern that is repeatedly replicated at all levels of a system, I call this lifecycle perspective the  Fractal Model  [Foote 1988b] [Foote 1991b]. It represents an attempt to formulate a software process perspective  indigenous  to the object-oriented community.

Most researchers who have explored objects have observed that they emerged as the result of a highly iterative process. Not unsurprisingly, the notion of iteration inspires visions of wheels spinning, and programmers going around in circles in the minds of many who must manage and pay for this activity. The Fractal Model tries to more precisely characterize the phases of this iterative activity, and describe how mature, reusable components result from it. The Fractal Model refines iterative notions developed in the Waterfall Model, Evolutionary Development Model, and (in particular) the Spiral process model.

Objects, in and of themselves, have a greater potential for reuse than do conventional software components. Each of the characteristics that distinguish objects from conventional components contributes to this potential. Polymorphism increases the likelihood that a family of related objects will operate correctly in a variety of different contexts. Inheritance allows a class to spawn an entourage of related subclasses that do not undermine the integrity of the original class, and promotes the emergence ofabstract classes and frameworksEncapsulation insulates an evolving part of a system from the rest of the system, and promotes the emergence of components with identities distinct from the systems in which they are embedded. Successful reuse requires not only a commitment to new languages and tools, but a complete change in one's outlook on the software development process as well. An organization with a commitment to reuse seeks, at the completion of a given development effort, to produce two distinct products. The first is a deliverable application. The second is an enhanced legacy of reusable abstract classes, components, and frameworks that can serve as the foundation for similar future efforts.

The Fractal Model distinguishes three distinct stages, or phases, in the evolution of object-oriented abstract classes, frameworks, and components. The first is a Prototype, or Initial Design Phase. The prototype is a quick first pass that may be quite loosely structured, and make use of expedient, inheritance-based code borrowing. During the prototype phase, the designer should concentrate on the problem at hand. Reuse should be a secondary concern. Expedient, first pass designs should never be mistaken for good designs (though we all hit a hole-in-one occasionally). Note that prototypes are not produced in a vacuum, but depend instead on pre-existing libraries of reusable components.

An object that proves successful enters an Expansionary, or Exploratory Design Phase. There is a distinctly Darwinian quality about this(2). An object's demonstrated utility inspires attempts to reuse it for purposes that differ from its original purpose to varying degrees. In conventional systems, such reuse might be undertaken byscavenging copies of the original component, or by introducing flags and conditionals into the original code. Such activity tends to destroy the system's structure, and increase the entropy and disorder the system. There is a risk during this phase that the component may suffer from "mid-life" generality loss.

Object-oriented systems can retain the integrity of the original code by placing new code in subclasses. As a result, broad, shallow white-box class hierarchies can develop. The subclasses added during the exploratory phase preserve the integrity and identity of the requirements that inspired them, but are not yet truly general.

During the Consolidation, or Design Generalization Phase, experience accrued during successive reapplications of an object is used to increase its generality and structural integrity. As is the case everywhere else in the universe, there can be no entropy reduction without an expenditure of energy. During this phase, the programmer reorganizes the class hierarchy, and abstract classes that reflect the structural regularities in the system (and the problem domain) emerge. It comes to reflect the way you would like to be able to tell people you arrived at the design. The informal, inheritance-based, white-box relationships that may be present in the system can be recast usingblack-box components. Consolidation is undertaken in an opportunistic fashion, when the insight to justify refactoring has been developed. Hence, I call the Fractal Model anopportunity driven model, as opposed to the Spiral Model, which is risk driven.

At each level, the model moves from the prototype phase through the expansionary phase, into the consolidation phase. From there, an element may expand further, or serve as the basis for a new prototype. As objects evolve, the breadth of class hierarchies decreases as the depth increases, and discrete, black-box components emerge from ill-defined inheritance hierarchies. Both progressions enhance this system's generality and reusability. The same pattern is repeated at every level: within individual classes and applications, up into the elements of the frameworks that can encompass a family of related applications.

This model has a number of technical and managerial implications. One is that design is more than a discrete phase in the development of a component, instead, it is an activity which pervades the lifecycle. This model places emphasis not so much on the generation of single applications as on the development of the software infrastructure for solving a range of application requirements. If this perspective is correct, then perhaps current programmer deployment practices are backwards. Skilled designers may be most valuable during the design consolidation phase, which will occur quite late, during what has often be thought of as the maintenance phase in traditional process models. Recent research has found that between 60 and 85 percent of the total cost of software is incurred during maintenance. Clearly, something is amiss with models that emphasize front-loading the design process. Hence, this model might lead to a sort of gentrification of software maintenance.

The disciplined reuse of object-oriented components, abstract classes, and frameworks stands in stark contrast to the casual reuse of conventional code and program skeletons.


1991 ending:

In order for the craftmen to triumph over the scavengers, programmers and managers must commit themselves to designing for the long haul.


1993 ending:

The reuse potential of objects, classes, and frameworks is a major factor that distinguishes them from conventional software artifacts. An object-oriented process model that does not first take into account the distinctive fashion in which reusable objects evolve is likely to be an impediment to reuse.

The Fractal Model was devised using previous process models as a basis, and incorporates observations from my own work, and from many conversations with other researchers and practitioners. I've been gratified to find that this model seems to resonate with people who are really building object-oriented systems. However, it should be noted that my own observations are based on medium size projects executed by fairly small groups (<6), and that the application domain that I work in must confront requirements that change with unusual rapidity. I believe that this rapid change telescopes the evolutionary process, and has made it easier to observe and characterize. Nonetheless, the Fractal Model should be seen essentially a hypothesis until systematic attempts are made to deploy it on a larger scale.


1995 ending (followed 1993 ending):

A distinguishing feature of this model is that it postulates that there is a resemblance between the micro- and macro- level processes.

It further postulates that a methodology of sort for framework development can be derived by carefully choosing different problems from a given domain and "cultivating" the framework by successively addressing these requirements.

References


 [Apple 1984]
Apple Computer, Inc.
Lisa Toolkit 3.0 
Apple Computer, Cupertino, CA


[Balzer 1983]
R Balzer, T.E. Cheatham, and C. Green
Software Technology in the 1990s:
Using a New Paradigm
Computer, Nov. 1983, pp. 39-45


[Boehm 1988]
Barry W. Boehm
A Spiral Model of Software 
Development and Enhancement
Computer, May 1988, Volume 21, Number 5


[Brooks 1975]
Frederick P. Brooks
The Mythical Man-Month:  
Essays on Software Engineering
Addison-Wesley, Reading MA, 1975


[Brooks 1987]
Frederick P. Brooks
No Silver Bullet:  
Essence and Accidents of Software Engineering
IEEE Computer, Vol. 20, No. 4, April 1987


[Cox 1986]
Brad Cox
Object-Oriented Programming:  
An Evolutionary Approach
Addison-Wesley, 1986


[Deutsch 1983]
L. Peter Deutsch
Reusability in the Smalltalk-80 
Programming System
pp 72-76 
ITT Proceedings of the Workshop on 
Reusability in Programming
(reprinted in Tutorial on Software Reusability,
IEEE Computer Society Press, 1987)


[Foote 1988]
Brian Foote
Designing to Facilitate Change
with Object-Oriented Frameworks
Masters Thesis, 1988
University of Illinois at Urbana-Champaign


[Foote 1988b]
Brian Foote
Domain Specific Frameworks Emerge as
a System Evolves
OOPSLA '88 Workshop on Methodologies
and Object-Oriented Programming
San Diego, CA
Norman L. Kerth, organizer


[Foote 1988c]
Brian Foote
Designing Reusable Realtime Frameworks
OOPSLA '88 Workshop on 
Realtime Systems
San Diego, CA
John Gilbert, organizer


[Foote 1989a]
Brian Foote
The Craftsmen vs. the Scavengers:
The Ruminations of a Foot Soldier
on the Reuse Revolution
OOPSLA '89 Workshop on the
Reusable Component Marketplace
New Orleans, LA
John T. Mason, organizer


[Foote 1991b]
Brian Foote
A Fractal Model of the Lifecyle
of Reusable Objects
OOPSLA '91 Workshop on Reuse
Ottawa, Ontario, Canada
Rebecca Joos and John D. McGregor,
organizers


[Gould 1987]
Stephen Jay Gould, Norman L. Gilinsky,
and Rebecca Z. German
Asymmetry of Lineages and the Direction
of Evolutionary Time
Science, Volume 236, pp. 1437-1441
12 June 1987


[Johnson & Kaplan 1986]
Ralph E. Johnson and Simon Kaplan
Towards Reusable Software 
Designs and Implementations
Proceedings of the Workshop on 
Future Directions in 
Computer Architecture and Software
May 5-7, 1986, Seabrook Island, Charlston, SC
Sponsored by the Army Research Office (ARO)


[Johnson & Foote 1988]
Ralph E. Johnson and Brian Foote
Designing Reusable Classes
Journal of Object-Oriented Programming
Volume 1, Number 2, June/July 1988 
pages 22-35


[McCracken 1982]
Daniel D. McCracken and Michael A. Jackson
Life Cycle Concept Considered Harmful
Software Engineering Notes, Volume 7, Number 2, 
April 1982, pages 29-32


[McGregor & Sykes 1993]
Object-Oriented Software Development:
Engineering Software for Reuse
Van Nostrand Reinhold, 1992]


[Meyer 1988]
Ware Meyers
Interview with Wilma Osborne
IEEE Software, 5 )4):  104-105, 1988


[Parikh 1984]
Girish Parikh
What is Sofware Maintenance Really?  
What is in a Name?
Software Engineering Notes, Volume 9, Number 2, 
April 1984, pages 114-116


[Parikh 1985]
Girish Parikh
SOFTWARE MAINTENANCE NEWS
Software Engineering Notes, Volume 10, Number 2, 
April 1985, pages 58-60


[Schmucker 1986]
Kurt J. Schmucker
Object-Oriented Programming for the Macintosh
Hayden, Hasbrouck Heights, NJ, 1986


[Tracz1986]
William J. Tracz
Why Reusable Software Isn't
Proceedings of the Workshop on 
Future Directions in Computer 
Architecture and Software
May 5-7, 1986, Seabrook Island, Charleston, SC

Brian Foote   foote@cs.uiuc.edu 


来源:http://www.laputan.org/frameworks/fractal.html

【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器状态空间平均模型的建模策略。该方法通过对系统中多个相互耦合的DC-DC变换器进行统一建模,构建出整个微电网的集中状态空间模型,并在此基础上实施线性化处理,便于后续的小信号分析与稳定性研究。文中详细阐述了建模过程中的关键步骤,包括电路拓扑分析、状态变量选取、平均化处理以及雅可比矩阵的推导,最终通过Matlab代码实现模型仿真验证,展示了该方法在动态响应分析和控制器设计中的有效性。; 适合人群:具备电力电子、自动控制理论基础,熟悉Matlab/Simulink仿真工具,从事微电网、新能源系统建模与控制研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网中多变换器系统的统一建模方法;②理解状态空间平均法在非线性电力电子系统中的应用;③实现系统线性化并用于稳定性分析与控制器设计;④通过Matlab代码复现和扩展模型,服务于科研仿真与教学实践。; 阅读建议:建议读者结合Matlab代码逐步理解建模流程,重点关注状态变量的选择与平均化处理的数学推导,同时可尝试修改系统参数或拓扑结构以加深对模型通用性和适应性的理解。
### 关于 Fractal Generative Models 的研究文献 分形生成模型(Fractal Generative Models)作为一种新兴的生成模型,其核心理念在于利用递归结构构建复杂的生成框架[^1]。这种模型的设计灵感来源于自然界中的分形特性和生物神经网络的组织方式[^2]。具体而言,它通过将简单的原子级生成模块组合并递归扩展,形成能够处理高维度复杂分布的强大工具。 目前关于 Fractal Generative Models 的学术资源主要集中在以下几个方面: #### 1. **理论基础** - 文献中提到的核心思想是通过递归调用同类生成模型来创建自相似架构。这一部分的研究通常涉及概率图模型、变分推断以及深度学习的基础理论。 - 推荐阅读《Deep Learning》一书的相关章节,特别是有关生成对抗网络 (GANs) 和变分自动编码器 (VAEs) 部分的内容,这些可以作为理解分形生成模型的重要背景知识[^3]。 #### 2. **应用领域** - 分形生成模型特别适合用于高分辨率图像生成任务,因为它可以通过逐像素的方式有效减少计算开销。此外,在自然语言处理和时间序列预测等领域也有潜在的应用价值。 - 如果关注图片生成方向,可查阅最新的 CVPR 或 NeurIPS 会议论文集,寻找与 “fractal structure” 结合的生成算法相关内容[^4]。 #### 3. **下载链接建议** - 对于具体的论文 PDF 文件获取,推荐访问以下平台: - arXiv.org: 提供大量开源机器学习和技术报告预印本; - Google Scholar: 支持关键词搜索,并能快速定位目标文章; - ResearchGate/ Academia.edu: 学者个人主页可能分享相关研究成果。 ```python import requests from bs4 import BeautifulSoup def fetch_paper_links(keyword="Fractal Generative Models"): base_url = f"https://arxiv.org/search/?query={keyword}&searchtype=all" response = requests.get(base_url) soup = BeautifulSoup(response.text, 'html.parser') links = [] for result in soup.find_all('li', class_='arxiv-result'): title = result.find('p', class_='title').text.strip() pdf_link = result.find('a', title='Download PDF')['href'] links.append((title, f'https://arxiv.org{pdf_link}')) return links[:5] papers = fetch_paper_links() for idx, paper in enumerate(papers): print(f"{idx+1}. {paper[0]} ({paper[1]})") ``` 上述脚本可以帮助自动化检索最近发表在 ArXiv 上的分形生成模型相关论文及其下载地址。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值