/usr/share/doc/python-gtkmvc-doc/userman/motiv.html is in python-gtkmvc-doc 1.99.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Motivations — Model-View-Controller and Observer patterns for PyGTK v1.99.1 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '1.99.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="Model-View-Controller and Observer patterns for PyGTK v1.99.1 documentation" href="index.html" />
<link rel="next" title="Architectural Overview" href="arch.html" />
<link rel="prev" title="Installation" href="install.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="arch.html" title="Architectural Overview"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="install.html" title="Installation"
accesskey="P">previous</a> |</li>
<li><a href="index.html">Model-View-Controller and Observer patterns for PyGTK v1.99.1 documentation</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="motivations">
<h1>Motivations<a class="headerlink" href="#motivations" title="Permalink to this headline">ΒΆ</a></h1>
<p>One major effort of Software Engineering has been to provide a way of
optimally separating the logical parts that constitute a software.
This issue becomes a question of outstanding importance in
middle/large interactive software, where an agent like an human user
interacts with the software, likely through a Graphic User Interface
(<em>GUI</em>).
To separate the logic (data) of an application from the representation
of those data, several Architectural Patterns <a class="footnote-reference" href="#archipat" id="id1">[1]</a>
have been studied; one is the Model–View–Controller (MVC) pattern
that splits the application into three separate parts, the <em>Model</em>,
the <em>View</em> and the <em>Controller</em>. The level of mutual knowledge
among these three entities is kept as minimal as possible, and this
results in:</p>
<ul class="simple">
<li>Reduced wrong dependencies.</li>
<li>Software architecture forced to be better designed.</li>
<li>Minimized propagation of changes/modifications.</li>
<li>Higher costs of startup, but potential lower costs of
maintenance.</li>
</ul>
<p>To improve re-usability and robustness of software, the <em>Observer</em> pattern is used
as well. This pattern identifies two entities: the
<em>Observable data</em> and the <em>Observer</em> over those data.</p>
<p>The implementation of the <em>Observer</em> pattern is intended to make the Observer take
some action when the Observable data change. This triggering mechanism
is a further abstraction layer that helps to
design and implement robust software.</p>
<p>A possible use of the <em>Observer</em> pattern is in combination with the <em>MVC</em> pattern, where the
model communicates indirectly with the presentation side through the
observer pattern.</p>
<p><em>gtkmvc</em> is a framework that implements both the MVC and Observer
patterns to be used to produce middle/large applications in Python and
<em>PyGTK</em>.</p>
<p>The main goal is to provide a minimal (but not trivial)
implementation, where practical aspects are taken into serious
consideration, and complexity is kept behind the scene. This makes the
users able to mainly focus their attention on the application they
need to produce, instead of dealing with the underlying framework.</p>
<p>Pointless to say that goals are clear and likely easy to
share by anyone. It is quite a different thing to prove that those
goals are reached by the proposed framework. Frankly, this is up to
the reader to decide.</p>
<p class="rubric">Footnotes</p>
<table class="docutils footnote" frame="void" id="archipat" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td><a class="reference external" href="http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science%29">http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science%29</a></td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="install.html"
title="previous chapter">Installation</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="arch.html"
title="next chapter">Architectural Overview</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/motiv.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" size="18" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="arch.html" title="Architectural Overview"
>next</a> |</li>
<li class="right" >
<a href="install.html" title="Installation"
>previous</a> |</li>
<li><a href="index.html">Model-View-Controller and Observer patterns for PyGTK v1.99.1 documentation</a> »</li>
</ul>
</div>
<div class="footer">
© Copyright 2010, Roberto Cavada.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
</div>
</body>
</html>
|