Labels: c++ (6) scripting (4) the perfect project (3) coding (1) firefox (1) idea (1)

Friday, July 27, 2007

Requirements for TPP

This is the first part of requirements for the perfect project. It turns out they are "level 0", i.e. the most essential ones. More requirements shall be published later and specify user-generated content features, internationalization and maybe some insights about further functions evolution.

Glossary

TPP, the perfect project = code name for this program I want to develop. Later this can be changed by other name.

Program, Software = in most cases any 3rd party software which shall be shipped and managed with the help of TPP. This doesn't include any system libraries, video codecs or anything like that. Note: This may include some scripts which actually only configure existing software, update some settings or change behavior of the programs already installed. Note: The program means separate functionality unit which can be independently installed or uninstalled. This shall not be a module extending the functionality of the existing program, because it will introduce dependencies between modules if main program is being uninstalled and dependant module wasn't. User shall not know or decide about these dependencies during install or uninstall (however she can select packages of software to install as single program using TPP). Alternatively, for some add-ons, we could have them installable to "main" host program, but still consider uninstall as atomic operation for host program with all its add-ons altogether. More examples are needed to think this all through.

Installation, Program installation = Installation and configuration any program, the process which includes downloading and copying all necessary program files, registering the software within operating system and existing software environment and configuring all program settings which are required for user to work with the program.

Rebooting, operation system rebooting = The actions which are needed to be performed during program installation which assume giving all control from TPP back to operating system. Usually this means shutting down the operating system and starting it again automatically and TPP taking control again after some moment. During rebooting, the user may be asked to log in to operating system before TPP activates. User can also postpone the installation for any time simply by shutting down the computer during rebooting, or by logging in the operating system using account other than he used to work with TPP.

Safe rebooting, rebooting safely = shall be defined later and depend whether the user have opened programs which cannot close automatically without losing the user data.

TPP Requirements (F = functional, NF = non-functional)

Browsing programs

  1. (F) TPP shall allow the user to browse available programs.
    1. (NF) User shall be required to have an internet connection to browse and install programs with help of TPP.
    2. (F) TPP shall allow the user to select and clarify his selection of category of the program he is looking for from the pre-defined catalog.
    3. (F) The catalog of programs should allow the user to find the program:
      1. (F) Using keywords describing desired functionality. For example: graphics editor, photo editor, antivirus software etc.
      2. (F) Using keywords describing the program's description or name as provided by author.
      3. (F) Using keywords describing the program as given by other users.
      4. (F) Using keywords describing desired task that should be accomplished with the help of the program. For example: write CD, copy DVD, print book, draw picture, record movie, copy movie, protect from viruses etc.

Installing programs

  1. (F) TPP shall allow the user to install the selected program automatically.
    1. (F) User shall not be asked for any parameters during program installation.
      1. (F) User shall not be asked for the permission to download the program from internet or any other resource.
      2. (F) User shall not be asked the path where to install the program.
      3. (F) User shall not be asked to remove older version of the software being installed.
      4. (F) User shall not be asked to install other prerequisite libraries or programs required by software being installed.
      5. (F) User shall not be asked to accept any license agreements.
      6. (F) User shall not be asked to customize functionality package for the software being installed.
      7. (F) User shall not be asked the language of the program interface.
      8. (F) If the program user selected to install already installed, the program shall be re-installed as it was a newer version of the software, without any confirmations (see req. 2.1.2).
    2. (F) If the program installation required rebooting the computer, the user shall be notified about that before installation starts.
      1. (F) If rebooting can be done safely, the user shall not be asked for any permission to do it.
      2. (F) If rebooting cannot be done safely, the user shall be asked the permission for it before installation starts.
    3. (F) At any point during installation except the time when operating system is being rebooted, the user shall be able to cancel the installation.
      1. (F) When installation is cancelled, all the changes made during the installation shall be rolled back to the state as they were before installation started.
        1. (F) User shall not be asked to confirm the rollback.
        2. (F) If rollback requires rebooting again and it can be done safely, it should be done without asking the user for permission. Otherwise the user shall be asked for the permission to reboot.

Browsing installed programs

  1. (F) TPP shall allow the user to browse installed programs on his computer using the same functionality as described in requirements 1.
    1. (NF) User shall not be required to have internet connection to browse and view existing installed software.

Uninstalling programs

  1. (F) TPP shall allow the user to uninstall any program installed using TPP automatically.
    1. (F) Uninstalling the program shall not leave any files or folders created as the part of its work unless those files are documents created by user and manually saved by him at location where the program was installed. For example: program uninstall shall not leave custom setting files, shared libraries, shared plug-ins, game save files etc.
    2. (F) User shall not be asked for any parameters during program uninstall.
      1. (F) User shall not be asked for confirmation to uninstall the program.
      2. (F) User shall not be asked for confirmation to remove some files or libraries, shared or not shared by other applications.
      3. (F) User shall not be asked to rollback to older version of the software after uninstalling the selected one, if the selected one was installed over older version.
      4. (F) User shall not be asked for any feedbacks to the creators of the program or anybody else.
      5. (F) User shall not be asked to remove only some components of software instead of uninstall.
    3. (F) If program uninstall requires rebooting the computer, the user shall be notified about that before uninstall starts.
      1. (F) If rebooting can be done safely, the user shall not be asked for any permission to do it.
      2. (F) If rebooting cannot be done safely, the user shall be asked the permission for it before uninstall starts.
    4. (F) At any point during uninstall except the time when operating system is being rebooted, the user shall be able to cancel uninstall.
      1. (F) When uninstall is cancelled, all the changes made during uninstall shall be rolled back to the state as they were before uninstall started.
        1. (F) User shall not be asked to confirm the rollback.
        2. (F) If rollback requires rebooting again and it can be done safely, it should be done without asking the user for permission. Otherwise the user shall be asked for the permission to reboot.

No comments: