Turbogears Has a Command Line Tool with a Few Features That Will Be Touched Upon in This Tutorial

Total Page:16

File Type:pdf, Size:1020Kb

Turbogears Has a Command Line Tool with a Few Features That Will Be Touched Upon in This Tutorial The 20 Minute Wiki by Kevin Dangoor There is a printable version of this document. This is the text version of the "20 Minute Wiki" video (40MB QuickTime). (See video help for more information about viewing the videos.) To go through this tutorial, you'll want: 1. docutils 0.3.9 or later, which is used for formatting. You could get away with not having docutils, but it's not as much fun. easy_install docutils should get you what you need. 2. A web browser 3. Your favorite editor 4. Two command line windows (you only need one, but two is nicer.) 5. A database. If you don't have one, your best bet is sqlite 3.2+ with pysqlite 2.0+. This tutorial doesn't cover Python at all. Check the docs section for more coverage of Python. The Quickstart TurboGears has a command line tool with a few features that will be touched upon in this tutorial. The first is "quickstart", which will get us up and running quickly. tg-admin quickstart You'll be prompted for the name of the project (this is the pretty name that human beings would appreciate), and the name of the package (this is the less-pretty name that Python will like). For this tutorial, we'll be using these values: Enter project name: Wiki 20 Enter package name [wiki20]: wiki20 Do you need Identity (usernames/passwords) in this project? [no] no This creates a few files in a directory tree just below your current directory. Let's go in there and you can take a look around. cd Wiki-20 Now Serving: Number 1 You may have spotted a file called start-wiki20.py. This is the startup script for the built-in web server. Let's run it! python start-wiki20.py Point your browser at http://localhost:8080/, and you'll see a nice little welcome page with the current time. (If you're on a Mac and have Bonjour bookmarks turned on in Safari, you'll see your new server show up there!) That was easy! Easy indeed. And, if you take a look at the code that the quickstart created, you'll see that there isn't much involved in getting up and running. Two interesting things to look at: wiki20/controllers.py has the code that's generating the welcome page. CherryPy makes things very easy... you just write methods and expose them to the web! TurboGears adds the automatic template processing to go from a dictionary of values to HTML for the browser. wiki20/templates/welcome.kid is the template you view on the welcome screen. Did you notice that it's standard XHTML with some simple namespaced attributes? Very designer-friendly. You can even open it directly in your browser! Let's make a wiki! If you're not familiar with a Wiki, you might want to check out the Wikipedia entry. The whole idea is that it's an easily-editable web content system that makes it trivial to link to pages and create new pages. TurboGears follows the Model-View-Controller paradigm, as do most web frameworks these days. Kid templates are your view, your CherryPy classes are your controllers and basically any object can be your model. In practice, since we're in a database-driven world, your model objects will be SQLObjects. Since this is all about pages, why don't we go ahead and set up a place to store our pages. TurboGears quickstart gave us a "model.py" module with enough in it to start creating model classes. Here's our Page class: view plain | print | ? 1 class Page(SQLObject): 2 pagename = UnicodeCol(alternateID= True , length=30) 3 data = UnicodeCol() My own personal preference is to work with objects (and not SQL) as much as possible. SQLObject does support creating objects based on the database definition. I prefer to work the other way and create the database definition based on the objects. For the pagename, we specified alternateID=True, which will guarantee that the column is unique and allow us to easily do searches on pagename. Some databases require the length to be specified on columns you want indexed, we'll just use the arbitrary length of 30 here. Continue on to page 2 http://www.turbogears.org/preview/docs/tutorials/wiki20/printable.html 24.08.2006 15:39 Pointing to a database TurboGears has a minimum of required configuration. It does need to know where your database lives. The quickstart creates a couple of simple config files for you. If you have sqlite installed, you can get started in development without configuring anything (skip the rest of this section). Since we're working in a development environment and not a production deployment one, edit the "dev.cfg" file. You'll just need to uncomment the sqlobject.dburi line that corresponds to your database and provide the proper connection info. Restart the web server by hitting control-C and running the startup script again: python start-wiki20.py Creating the Database Since we've created, in Python code, the schema for our simple database and we've also told TurboGears where to look for the database, we're ready to actually create it. tg-admin sql create The "tg-admin sql" command is a wrapper around SQLObject's sqlobject-admin command. It looks in the config file to figure out where to find the database. Let's display a wiki page! Hard to believe it, but we're already ready to start displaying pages. The first step, is to rename our template. "welcome.kid" just won't do. Rename the template using whatever commands do the trick for your operating system: cd wiki20/templates mv welcome.kid page.kid cd ../.. Now, let's replace the body of the template with something more reasonable for a wiki page: view plain | print | ? 1 <div style ="float:right; width: 10em" > 2 Viewing <span py: replace ="page.pagename" >Page Name Goes Here </ span > 3 <br /> 4 You can return to the <a href ="/" >FrontPage </ a>. 5 </ div > 6 7 <div py: replace ="XML(data)" >Page text goes here. </ div > Notice that you can open page.kid in your web browser, and it is still perfectly viewable. That placeholder text can really help see a layout before it's put in action! TurboGears greatly reduces the amount of code you need to write, but it does not eliminate it. Let's add a couple of imports to the top of controllers.py: view plain | print | ? 1 from wiki20.model import Page 2 from docutils.core import publish_parts Then, we'll replace the index method with one that: 1. Sets the template to our newly named "page" (line 1) 2. Has a default pagename of "FrontPage" (line 2) 3. Retrieves the page from the database (line 3) 4. Formats the text as HTML (line 4) 5. Deals with unicode properly (always a good habit, on line 5) 6. Returns the data for the template to use (line 6) view plain | print | ? 1 @expose( "wiki20.templates.page" ) 2 def index (self , pagename= "FrontPage" ): 3 page = Page.byPagename(pagename) 4 content = publish_parts(page.data, writer_name= "html" )[ "html_body" ] 5 return dict (data=content, page=page) All that in six, very readable lines. The dictionary that we're returning at the end provides the data that populates the template and has other magical powers that we'll see later. The "." at the beginning of the template name says that this name is relative to the controller's package. In other workds, this is referring to the full name of "wiki20.templates.page". If you get a KeyError on the publish_parts line when you try to access the page, you are using an older version of docutils and should upgrade to the latest. Previous Page | Continue on to page 3 Let's check out that first page! The code is in place... Point your browser to http://localhost:8080/ and let's see what we've got! Oh, we've got an error. Since we're in development mode, CherryPy gives us the whole traceback, which is very convenient. The traceback is telling us that we got an SQLObjectNotFound exception. D'oh! We forgot to put a page in the database! Let's do that using CatWalk, the model browser tg-admin toolbox http://www.turbogears.org/preview/docs/tutorials/wiki20/printable.html 24.08.2006 15:39 A new browser window will open with the TurboGears toolbox. Click on the CatWalk model browser. You'll see "Page" listed on the left. Click on that, select the "Add Page" tab and create a page with the name "FrontPage" and with whatever text you want for the data. That's all there is to it. We just created a new page in the database. Reload your browser window, and you'll see our beautiful page. How do we make a better page? One of the hallmarks of wikis is that you can edit the page just by clicking "Edit This Page". That and the wikispam that follows... hopefully, spammers won't find your Wiki 20 before we're done with it! Let's start by creating a template for editing. Let's start with a copy of "page.kid": cd wiki20/templates cp page.kid edit.kid cd ../.. In edit.kid, change the text at the top from "Viewing" to "Editing" and replace the <div> for the data with: view plain | print | ? 1 <form action ="save" method ="post" > 2 <input type ="hidden" name ="pagename" value ="${page.pagename}" /> 3 <textarea name ="data" py: content ="page.data" rows ="10" cols ="60" /> 4 <input type ="submit" name ="submit" value ="Save" /> 5 </ form > We need something to use this template now.
Recommended publications
  • Python Programming
    Python Programming Wikibooks.org June 22, 2012 On the 28th of April 2012 the contents of the English as well as German Wikibooks and Wikipedia projects were licensed under Creative Commons Attribution-ShareAlike 3.0 Unported license. An URI to this license is given in the list of figures on page 149. If this document is a derived work from the contents of one of these projects and the content was still licensed by the project under this license at the time of derivation this document has to be licensed under the same, a similar or a compatible license, as stated in section 4b of the license. The list of contributors is included in chapter Contributors on page 143. The licenses GPL, LGPL and GFDL are included in chapter Licenses on page 153, since this book and/or parts of it may or may not be licensed under one or more of these licenses, and thus require inclusion of these licenses. The licenses of the figures are given in the list of figures on page 149. This PDF was generated by the LATEX typesetting software. The LATEX source code is included as an attachment (source.7z.txt) in this PDF file. To extract the source from the PDF file, we recommend the use of http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ utility or clicking the paper clip attachment symbol on the lower left of your PDF Viewer, selecting Save Attachment. After extracting it from the PDF file you have to rename it to source.7z. To uncompress the resulting archive we recommend the use of http://www.7-zip.org/.
    [Show full text]
  • The Turbogears Toolbox and Other Tools
    19 The TurboGears Toolbox and Other Tools In This Chapter ■ 19.1 Toolbox Overview 372 ■ 19.2 ModelDesigner 373 ■ 19.3 CatWalk 375 ■ 19.4 WebConsole 377 ■ 19.5 Widget Browser 378 ■ 19.6 Admi18n and System Info 379 ■ 19.7 The tg-admin Command 380 ■ 19.8 Other TurboGears Tools 380 ■ 19.9 Summary 381 371 226Ramm_ch19i_indd.indd6Ramm_ch19i_indd.indd 337171 110/17/060/17/06 111:50:421:50:42 AAMM urboGears includes a number of nice features to make your life as a de- Tveloper just a little bit easier. The TurboGears Toolbox provides tools for creating and charting your database model, adding data to your database with a web based GUI while you are still in development, debugging system problems, browsing all of the installed widgets, and internationalizing your application. 19.1 Toolbox Overview The TurboGears Toolbox is started with the tg-admin toolbox command. Your browser should automatically pop up when you start the Toolbox, but if it doesn’t you should still be able to browse to http://localhost:7654, where you’ll see a web page with links for each of the tools in the toolbox (as seen in Figure 19.1). FIGURE 19.1 The TurboGears Toolbox home page Each of the components in the Toolbox is also a TurboGears application, so you can also look at them as examples of how TurboGears applications are built. 372 226Ramm_ch19i_indd.indd6Ramm_ch19i_indd.indd 337272 110/17/060/17/06 111:50:431:50:43 AAMM 19.2 ModelDesigner 373 Because there isn’t anything in TurboGears that can’t be done in code or from the command line, the use of the Toolbox is entirely optional.
    [Show full text]
  • Industrialization of a Multi-Server Software Solution DEGREE FINAL WORK
    Escola Tècnica Superior d’Enginyeria Informàtica Universitat Politècnica de València Industrialization of a multi-server software solution DEGREE FINAL WORK Degree in Computer Engineering Author: Víctor Martínez Bevià Tutor: Andrés Terrasa Barrena Jaume Jordán Prunera Course 2016-2017 Acknowledgements To my tutors, Andrés and Jaume, for their care, attention and continued help through the execution of this Degree Final Work. To Encarna Maria, whose support knows no end. iii iv Resum L’objectiu del Treball de Fi de Grau és reescriure el procés de desplegament per a una solució de programari multiservidor per ser conforme amb el programari d’orquestració i automatització i redissenyar un flux de treball seguint pràctiques d’integració contínua i proves automàtiques. El projecte també inclou la implementació dels instal·ladors de ca- da component per a les arquitectures Windows i Linux emprant la infraestructura pròpia de l’empresa. Paraules clau: Industrialització, integració contínua, instal·ladors, testing, vmware orc- hestrator, jenkins, robot, gitlab Resumen El objetivo del Trabajo de Fin de Grado es reescribir el proceso de despliegue para una solución software multiservidor para estar en conformidad con el software de orquesta- ción y automatización y rediseñar un flujo de trabajo siguiendo prácticas de integración continua y pruebas automáticas. El proyecto también incluye la implementación de los instaladores de cada componente para las arquitecturas Windows y Linux usando la in- fraestructura propia de la empresa. Palabras clave: Industrialización, integración continua, instaladores, testing, vmware or- chestrator, jenkins, robot, gitlab Abstract The goal of the Final Degree Work is to rewrite the deployment process for a multi- server software solution in order to be compliant with the company’s orchestration and automation software while redesigning a development workflow following continuous integration and continuous automated testing principles.
    [Show full text]
  • Multimedia Systems
    MVC Design Pattern Introduction to MVC and compare it with others Gholamhossein Tavasoli @ ZNU Separation of Concerns o All these methods do only one thing “Separation of Concerns” or “Layered Architecture” but in their own way. o All these concepts are pretty old, like idea of MVC was tossed in 1970s. o All these patterns forces a separation of concerns, it means domain model and controller logic are decoupled from user interface (view). As a result maintenance and testing of the application become simpler and easier. MVC Pattern Architecture o MVC stands for Model-View-Controller Explanation of Modules: Model o The Model represents a set of classes that describe the business logic i.e. business model as well as data access operations i.e. data model. o It also defines business rules for data means how the data can be created, sotored, changed and manipulated. Explanation of Modules: View o The View represents the UI components like CSS, jQuery, HTML etc. o It is only responsible for displaying the data that is received from the controller as the result. o This also transforms the model(s) into UI. o Views can be nested Explanation of Modules: Controller o The Controller is responsible to process incoming requests. o It receives input from users via the View, then process the user's data with the help of Model and passing the results back to the View. o Typically, it acts as the coordinator between the View and the Model. o There is One-to-Many relationship between Controller and View, means one controller can handle many views.
    [Show full text]
  • HOWTO Use Python in the Web Release 2.7.9
    HOWTO Use Python in the web Release 2.7.9 Guido van Rossum and the Python development team December 10, 2014 Python Software Foundation Email: [email protected] Contents 1 The Low-Level View 2 1.1 Common Gateway Interface.....................................2 Simple script for testing CGI.....................................2 Setting up CGI on your own server..................................3 Common problems with CGI scripts.................................3 1.2 mod_python..............................................4 1.3 FastCGI and SCGI..........................................4 Setting up FastCGI..........................................5 1.4 mod_wsgi...............................................5 2 Step back: WSGI 5 2.1 WSGI Servers.............................................6 2.2 Case study: MoinMoin........................................6 3 Model-View-Controller 6 4 Ingredients for Websites 7 4.1 Templates...............................................7 4.2 Data persistence............................................8 5 Frameworks 8 5.1 Some notable frameworks......................................9 Django.................................................9 TurboGears..............................................9 Zope.................................................. 10 Other notable frameworks...................................... 10 Index 11 Author Marek Kubica Abstract This document shows how Python fits into the web. It presents some ways to integrate Python with a web server, and general practices useful for developing web
    [Show full text]
  • What's New in Omnis Studio 8.1.7
    What’s New in Omnis Studio 8.1.7 Omnis Software April 2019 48-042019-01a The software this document describes is furnished under a license agreement. The software may be used or copied only in accordance with the terms of the agreement. Names of persons, corporations, or products used in the tutorials and examples of this manual are fictitious. No part of this publication may be reproduced, transmitted, stored in a retrieval system or translated into any language in any form by any means without the written permission of Omnis Software. © Omnis Software, and its licensors 2019. All rights reserved. Portions © Copyright Microsoft Corporation. Regular expressions Copyright (c) 1986,1993,1995 University of Toronto. © 1999-2019 The Apache Software Foundation. All rights reserved. This product includes software developed by the Apache Software Foundation (http://www.apache.org/). Specifically, this product uses Json-smart published under Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) The iOS application wrapper uses UICKeyChainStore created by http://kishikawakatsumi.com and governed by the MIT license. Omnis® and Omnis Studio® are registered trademarks of Omnis Software. Microsoft, MS, MS-DOS, Visual Basic, Windows, Windows Vista, Windows Mobile, Win32, Win32s are registered trademarks, and Windows NT, Visual C++ are trademarks of Microsoft Corporation in the US and other countries. Apple, the Apple logo, Mac OS, Macintosh, iPhone, and iPod touch are registered trademarks and iPad is a trademark of Apple, Inc. IBM, DB2, and INFORMIX are registered trademarks of International Business Machines Corporation. ICU is Copyright © 1995-2003 International Business Machines Corporation and others.
    [Show full text]
  • The 20 Minute Wiki Turbogears Concepts and Tutorial
    The 20 Minute Wiki TurboGears concepts and tutorial Bologna, 9/5/2007 Stefano Zacchiroli [email protected] Disclaimer ● Some stuff (shamelessly) took from – the 20 minute wiki tutorial http://docs.turbogears.org/1.0/Wiki20/Page1 – Crhistopher Arndt's talk at RuPy conference 2007 http://chrisarndt.de/talks/rupy/ Part I TurboGears Concepts What is TurboGears? ● a python web framework – comparable to Django and Ruby on Rails (the latter Ruby-based) – Open Source (MIT license) – still young (1st public version autumn 2005) – buzzword compliant: MVC, REST, AJAX What can it be used for? ● “classic” web (1.0/2.0/whatever) apps ... ● http://docs.turbogears.org/1.0/SitesUsingTurboGears – aggregators – blogs – social neworking – ... ● ... i.e. database-frontends on the web! Which components? ● philosophy: reuse existing stuff for – db abstraction – application server – template engine – javascript ● other bits: – formencode, nose, simplejson Putting it all together ● the big picture of component interactions ● da http://docs.turbogears.org MVC: Model / View / Controller ● buzzword ... but – helps separating concerns ● foster reusable components ● on the web: – db / template / data manipulation Recipe 1.scaffold (i.e. tg 6.write controller quickstart) methods 2.code the model 7.write templates 3.create the db 8.bells and whistles: 4.fill db with sample CSS / JavaScript data 9.deploy 5.design your URLs 10.( shuffle and iterate over and over again ) Part II The 20 Minute Wiki Tutorial Scaffold ● create a skeleton project from scratch tg-admin quickstart Enter project name: Wiki 20 Enter package name [wiki20]: wiki20 Do you need Identity (usernames/passwords) in this project? [no] no ...output..
    [Show full text]
  • Cherrypy Documentation Release 3.2.4
    CherryPy Documentation Release 3.2.4 CherryPy Team Jun 30, 2017 Contents 1 Foreword 1 1.1 Why CherryPy?.............................................1 1.2 Success Stories..............................................2 2 Installation 5 2.1 Requirements...............................................5 2.2 Supported python version........................................6 2.3 Installing.................................................6 2.4 Run it...................................................6 3 Tutorials 9 3.1 Tutorial 1: A basic web application................................... 10 3.2 Tutorial 2: Different URLs lead to different functions.......................... 10 3.3 Tutorial 3: My URLs have parameters.................................. 11 3.4 Tutorial 4: Submit this form....................................... 12 3.5 Tutorial 5: Track my end-user’s activity................................. 13 3.6 Tutorial 6: What about my javascripts, CSS and images?........................ 14 3.7 Tutorial 7: Give us a REST....................................... 15 3.8 Tutorial 8: Make it smoother with Ajax................................. 17 3.9 Tutorial 9: Data is all my life...................................... 19 3.10 Tutorial 10: Organize my code...................................... 22 4 Basics 23 4.1 The one-minute application example.................................. 24 4.2 Hosting one or more applications.................................... 25 4.3 Logging.................................................. 26 4.4 Configuring...............................................
    [Show full text]
  • CY 2550 Foundations of Cybersecurity Exploits, Patches, Crimeware
    CY 2550 Foundations of Cybersecurity Exploits, Patches, Crimeware Alina Oprea Associate Professor, Khoury College Northeastern University April 6 2020 Announcements • Exploit project released on Friday and due on April 17 • On Thursday, review of class materials in preparation for the final exam • Final exam • Take home • Released on April 13 at 11:45am EST, due on April 14 at noon • Submitted through Gradescope • Questions on the material to test general understanding • Might include questions from the “Countdown to Zero Day” book 2 Outline • Vulnerabilities, continued • SQL Basics • SQL Injection • Patches and mitigations • Underground economy • Crimeware 3 Review • Programs are vulnerable to memory corruption • Buffer overflow attacks • Make programs crash • Run malicious code • More advanced attacks (return-to-libc) • Mitigations: stack canaries, non-executable stacks, ASLR • Cross-site scripting attacks • Inject malicious code to exfiltrate sensitive data • Stored XSS: store JavaScript code on server executed on client • Reflected XSS: store JavaScript code in malicious link; reflect code and execute it on client • Same Origin Policy (SOP) is not enough to prevent these attacks 4 Structured Query Language (SQL) CREATE, INSERT, UPDATE SELECT 5 Web Architecture circa-2015 Protocols Server Side Database FTP Network Protocols Application Code HTTP 1.0/1.1 (Java, PHP, Python, HTTP 2.0 Node, etc) SSL and TLS CGI Scripts Websocket 6 SQL • Structured Query Language • Relatively simple declarative language • Define relational data • Operations
    [Show full text]
  • A Presentation Service for Rapidly Building Interactive Collaborative Web Applications
    A Presentation Service for Rapidly Building Interactive Collaborative Web Applications SCIENTIA MANU E T MENTE A thesis submitted to the School of Computer Science University College University of New South Wales Australian Defence Force Academy for the degree of Doctor of Philosophy By Michael Joseph Sweeney 31 March 2008 c Copyright 2008 by Michael Joseph Sweeney i Certi¯cate of Originality I hereby declare that this submission is my own work and that, to the best of my knowledge and belief, it contains no material previously published or written by another person, nor material which to a substantial extent has been accepted for the award of any other degree or diploma at UNSW or any other educational institution, except where due acknowledgement is made in the thesis. Any contribution made to the research by colleagues, with whom I have worked at UNSW or elsewhere, during my candidature, is fully acknowledged. I also declare that the intellectual content of this thesis is the product of my own work, except to the extent that assistance from others in the project's design and conception or in style, presentation and linguistic expression is acknowledged. Michael Joseph Sweeney ii Abstract Web applications have become a large segment of the software development domain but their rapid rise in popularity has far exceeded the support in software engineer- ing. There are many tools and techniques for web application development, but the developer must still learn and use many complex protocols and languages. Products still closely bind data operations, business logic, and the user interface, limiting integration and interoperability.
    [Show full text]
  • Managing and Displaying User Track Data with Python
    Managing and displaying user track data with Python Walter Aprile Emanuele Ruffaldi Antonio Frisoli Massimo Bergamasco [email protected] [email protected] [email protected] [email protected] Scuola Superiore Sant'Anna, Laboratorio PERCRO Viale R. Piaggio 34, 56025 Pontedera (PI), Italy +39 050 883057 Abstract: User studies that feature user movement in the real world or in simulated environment generate datasets, usually in the form of logfiles, that need to be stored, summarized, processed and represented. Datasets must additionally include metadata that accounts for experimental conditions. We have developed a class that produces graphical displays of user travels over a regularly-spaced grid, and a set of web-controllable database management tools that allow incremental data exploration as the user experiments progress. Making sense of user movement and user commands In our research work at the PERceptual RObotics (PERCRO) laboratory of Scuola Superiore Sant'Anna we frequently work with data that describes the movement of users when performing tasks. This data can describe various types of phenomena such as: 1- end effector user-controlled movement of haptic interfaces: a user holds a haptic interface such as a force feedback joystick or a GRAB interface (Avizzano et al., 2003), and we are interested in the movement of the point where the users' fingers contact the physical interface. 2- user navigation through a virtual environment 3- hand and head motion acquired through various optical tracking techniques 4- multi-track movement
    [Show full text]
  • Strong Dependencies Between Software Components
    Specific Targeted Research Project Contract no.214898 Seventh Framework Programme: FP7-ICT-2007-1 Technical Report 0002 MANCOOSI Managing the Complexity of the Open Source Infrastructure Strong Dependencies between Software Components Pietro Abate ([email protected]) Jaap Boender ([email protected]) Roberto Di Cosmo ([email protected]) Stefano Zacchiroli ([email protected]) Universit`eParis Diderot, PPS UMR 7126, Paris, France May 24, 2009 Web site: www.mancoosi.org Contents 1 Introduction . .2 2 Strong dependencies . .3 3 Strong dependencies in Debian . .7 3.1 Strong vs direct sensitivity: exceptions . .9 3.2 Using strong dominance to cluster data . 11 3.3 Debian is a small world . 11 4 Efficient computation . 12 5 Applications . 13 6 Related works . 16 7 Conclusion and future work . 17 8 Acknowledgements . 18 A Case Study: Evaluation of debian structure . 21 Abstract Component-based systems often describe context requirements in terms of explicit inter-component dependencies. Studying large instances of such systems|such as free and open source software (FOSS) distributions|in terms of declared dependencies between packages is appealing. It is however also misleading when the language to express dependencies is as expressive as boolean formulae, which is often the case. In such settings, a more appropriate notion of component dependency exists: strong dependency. This paper introduces such notion as a first step towards modeling semantic, rather then syntactic, inter-component relationships. Furthermore, a notion of component sensitivity is derived from strong dependencies, with ap- plications to quality assurance and to the evaluation of upgrade risks. An empirical study of strong dependencies and sensitivity is presented, in the context of one of the largest, freely available, component-based system.
    [Show full text]