







                           Graduation software Project
			   ---------------------------	
                                 Spreadsheet

                                ABACUS (97/98)
			
                             15 of January 1998

  



   "ABACUS" is software project that is being developed in conformance with the 
   Software Engineering graduation course at Instituto Superior Técnico 
   (http://www.ist.utl.pt) in Portugal - Lisbon. 
   The team is composed by two finalists who are working at INESC (http://www.inesc.pt) 
   under the co-ordination of the teacher Arlindo Oliveira. We will next present some
   technical details so that you may have a main picture of what is being made.



	o Introduction

	o Project Description and Development methodology

	o Task List 

	o Bibliography 



   Introduction
   ------------

   This project aims for the creation of a spreadsheet with full functionality similar 
   to the already existing software in the marketplace.

   We can consider that this software project is composed by two components: the first 
   one is interpreted code which is responsible for the user interface and lighter 
   processing components; the second is compiled code which is responsible for the "hard" 
   calculation work. 

   The development will have the following stages:

       o  Evolution of an initial prototype. 
       o  Generation of an a version, that has an initial functionality for 
		future development. 
       o  INTERNET distribution of this version in order to get some feedback so 
		that we can improve ABACUS to better serve the final user. 
       o  Creation of new features (suggested by the users or already planed ones), 
		and correction of some problems that may have occurred. 
       o  Code evolution to a multiplatform version specially to the most popular 
		ones. 



   Project Description and Development methodology
   -----------------------------------------------

	Since this project is composed by a sequence of stages until the last 
	version,which may be considered as being an evolutionary process, and 
	simultaneously it needs a strict control so that it wont slip in time 
	needs, we chose to develop this project with the typical "spiral model" 
	for the software engineering. 

       	This model produces a precise time planning of the work to be made,
	which will contribute to a higher quality level. 

	This model encompasses the best features of both the classical life 
	cycle and prototyping,at the same time it adds the new element of risk 
	analysis. 
	
	The model defines four major activities represented by the four quadrants 
	of the spyral.

		o Planning- Determination of objectives, alternatives and 
		constraints;

		o Risk analysis- Analysis of the alternatives and identification/
			resolution risks;

		o Engineering- development of the "next" level product;

		o Customer evaluation- assessment of the results of engineering.

	The main idea is that the project begins at the centre and works 
	outwards in a sequence of iterations around the spiral. Each iteration in 
	the model means	that there is a progressively more complete version of the 
	software.

	The culmination of the risk analysis results in the "go,no-go" decision 
	where it is weighted the risks of continuing or not the project. If the risks 
	are to great the project should be terminated.

 	So, the main advantages of this model confronting with others are: 

        	o It is the most realistic model; 
         	o It adds risk analysis; 
         	o It is an evolutionary and iterative process ,which is a more 
			natural project life cycle; 



   Task List
   ---------

         o Initial analise of the already existing prototype and familiarisation 
		with the functionality and development methodology already existent. 

         o Prototype actualisation with the new versions of TCL/TK inclusion of 
		some new basic functionality. 
	 o It supposed to engineer the Prototype in order to become a more robust 
		application so that we can prevent future complications. 
         o Develop function Cell order . 
         o Initial version of spreadsheet graphics. 
         o Functional Toolbar. 
         o Select Columns and rows . 
         o CSV file format import/export. 
         o Undo/Redo. 
         o Distribute an a version through INTERNET, get some user feedback about 
		the performed work, Incorporation of user suggestions and
         o problem correction. 
         o Project optimisation (rewrite the existing objects so that they will 
		perform the same goals but with greater functionality and efficiency.
         o Interactive graphics edition, through a mini-editor which is able to 
		produce direct manipulation of the graphics. 
         o Image introduction in the spreadsheet, (they will not be editable). 
         o Add cell colours. 
         o Import/Export of other formats. 
         o Macro support, using the same interpreted language used for the 
		construction of this software project. 
         o Help system, context sensible to the user needs. 
         o Investigate the possibility of the evolution of ABACUS to other platforms. 



   Bibliography
   ------------

	Planning: 
	--------

   Carapuça, Prof. Rogério - Metodologia MESoft 

   Pressman, Roger S. - Software Engineering, a Practitioner's Approach 

   Projecto de Engenharia da Programaçäo 96/97 - Grupo 14 

  	
	Tcl/Tk:
	------ 

   Welch, Brent - Practical Programming in Tcl and Tk 2nd Edition 
		- Prentice-Hall PTR 

   Ousterhout, John K. - Tcl and the Tk Toolkit - Addison Wesley 

	Linux/Xwindows/Graphical Interfaces: 
	-----------------------------------

   The X Window System in a Nutshell - O’ Reilly & Associates 

   Douglas A. Young - The X Window System Programming with Applications and XT 
		2nd Edition - Prentice-Hall PTR 

   Foley; van Dam; Feiner; Hughes - Computer Graphics Principles and Practice 
		- Addison-Wesley 

	C/C++:
	-----

   Kernighan, Brian ; Ritchie, Dennis - The C Programming Language 2nd Edition 
		- Prentice-Hall Software Series 

   Lippman, Stanley - C++ Primer, 2nd Edition - Addison Wesley 

   Stroustrup, Bjorn – The C++ Programming Language, 2nd Edition - Addison Wesley 