Editing User:KeshaSShah/GSoC13/Priority2
From BRL-CAD
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
==Project Title:== | ==Project Title:== | ||
::STEP LIBRARIES | ::STEP LIBRARIES | ||
− | + | ||
=Detailed project description= | =Detailed project description= | ||
*Most of my fellow participants are working on how important it is to keep your code in working order and adding functionalities to it, but hardly anyone ever really cares about keeping the container for your code in working order. | *Most of my fellow participants are working on how important it is to keep your code in working order and adding functionalities to it, but hardly anyone ever really cares about keeping the container for your code in working order. | ||
*STEP is the current standard for exchange of CAD data between different software packages. BRL-CAD makes use of the NIST STEP Class Libraries code to support its step-g converter, but this source code was written before many current C++ standard practices and libraries were finalized. As a consequence, it needs both cleanup and performance enhancements. | *STEP is the current standard for exchange of CAD data between different software packages. BRL-CAD makes use of the NIST STEP Class Libraries code to support its step-g converter, but this source code was written before many current C++ standard practices and libraries were finalized. As a consequence, it needs both cleanup and performance enhancements. | ||
− | *There is already an existing STEPcode repo at https://github.com/stepcode/stepcode which needs to be modernized and improved. | + | *There is already an existing STEPcode repo at https://github.com/stepcode/stepcode which needs to be modernized and improved. Improvement is needed for library performance, code maintainability, and better document the STEP libraries. |
− | + | *BRL-CAD's step-g converter will serve as a test for the functionality of the library and compiler will be set to strict flags. | |
− | + | * Right now, I am learning about STEP libraries and studing the directory. I will be updating this proposal as and how I understand and get directions. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | * | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | * | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
*Poorly designed code usually takes more code to do the same things, often because the code quite literally does the same thing in several places. By eliminating this duplicates, we ensure that the code says everything once and only once, which is the essence of good design. | *Poorly designed code usually takes more code to do the same things, often because the code quite literally does the same thing in several places. By eliminating this duplicates, we ensure that the code says everything once and only once, which is the essence of good design. | ||
− | *Mostly, when the developers are trying to get the program to work, they are not thinking about that future developer. It takes a change of rhythm to make changes that make the code easier to understand. Refactoring helps to make the code more readable. A little time spent refactoring can make the code better communicate its purpose. | + | *Mostly, when the developers are trying to get the program to work, they are not thinking about that future developer. It takes a change of rhythm to make changes that make the code easier to understand. Refactoring helps to make the code more readable. A little time spent refactoring can make the code better communicate its purpose. |
− | *As the code gets clearer, one can see things about the design that he could not see before because its difficult to visualize all this in head. Thus, refactoring is just wiping the dirt off a window so you can see beyond. | + | *As the code gets clearer, one can see things about the design that he could not see before because its difficult to visualize all this in head. Thus, refactoring is just wiping the dirt off a window so you can see beyond. |
*When I myself did some projects on making my own shell, implementing malloc and some data structure projects, I realized, while I’m studying code I find refactoring leads me to higher levels of understanding that otherwise I would miss out. | *When I myself did some projects on making my own shell, implementing malloc and some data structure projects, I realized, while I’m studying code I find refactoring leads me to higher levels of understanding that otherwise I would miss out. | ||
− | *Reducing | + | *Reducing the amount of code does, however, make a big difference in modification of the code. The more code there is, the harder it is to modify correctly. Hence, this needs to be done as early as possible as everyday developers are working and adding new and new code to it. |
− | + | ||
*The above is what I intend to do as part of GSoC. | *The above is what I intend to do as part of GSoC. | ||
− | *It is not just about 3 months of GSoC, I want to be committed with this code for years. I will keep contributing even after that as thing is an endless job-new codes are definitely going to be added and that in-turn would also require code reducing and refactoring. Moreover, by the end of 3 months, I believe, I would have hacked the entire source code so well that I can work on other projects also and contribute in making BRD-CAL more awesome! | + | *It is not just about 3 months of GSoC, I want to be committed with this code for years. I will keep contributing even after that as thing is an endless job-new codes are definitely going to be added and that in-turn would also require code reducing and refactoring. Moreover, by the end of 3 months, I believe, I would have hacked the entire source code so well that I can work on other projects also and contribute in making BRD-CAL more awesome! |
− | |||
− | |||
− | |||
=Links to any code or algorithms you intend to use= | =Links to any code or algorithms you intend to use= | ||
− | + | TOOLS : | |
+ | *The shell script to find duplication and grep command will help me fetch many pointers. | ||
+ | *Moreover, I am planning to use the Simian tool, but if the need arises or mentor suggests, I will learn new tool and use that. | ||
+ | |||
ALGORITHM I intend to use: | ALGORITHM I intend to use: | ||
*Step1:Select one or more defect to review. | *Step1:Select one or more defect to review. | ||
Line 119: | Line 45: | ||
=Problems I would encounter and how will I solve them ?= | =Problems I would encounter and how will I solve them ?= | ||
*The task of code refactoring and reducing is very critical as it play around with most of the folders and files present in the source folder and will modify and delete and add some new lines as per the requirements. There is huge possibility of changing the functionality of the program and make it behave in a bad manner. | *The task of code refactoring and reducing is very critical as it play around with most of the folders and files present in the source folder and will modify and delete and add some new lines as per the requirements. There is huge possibility of changing the functionality of the program and make it behave in a bad manner. | ||
− | *So, what I have though is I would compile after every change. | + | *So, what I have though is I would compile after every change. The complier will scream out if there is syntactical errors and missing definitions. |
− | |||
*Moreover, I will run unit test and test with that there is no run time error also and the behavior of code remains the same. | *Moreover, I will run unit test and test with that there is no run time error also and the behavior of code remains the same. | ||
*Rest, Google, my best friend who knows everything is always with me and will help me in every situation. | *Rest, Google, my best friend who knows everything is always with me and will help me in every situation. | ||
Line 138: | Line 63: | ||
=Time availability:= | =Time availability:= | ||
*My availability for the project would be possible for the specific GSoC period as I would be having my summer break from 1st May to last week of July. Since in August the new semester would have just begun, I would be able to spare enough time to work on the project as I am not involved in anything else which would be a hindrance. | *My availability for the project would be possible for the specific GSoC period as I would be having my summer break from 1st May to last week of July. Since in August the new semester would have just begun, I would be able to spare enough time to work on the project as I am not involved in anything else which would be a hindrance. | ||
− | |||
*I will also work on Sundays if needed needed to cope-up in-case if I am unable to meet with my development schedule due to unavoidable circumstances. | *I will also work on Sundays if needed needed to cope-up in-case if I am unable to meet with my development schedule due to unavoidable circumstances. | ||
− | + | Even after GSoC period I will get enough time to continue contributing to BRD-CAL. | |
=Development schedule:= | =Development schedule:= | ||
Line 152: | Line 76: | ||
/* GSoC period Starts */ | /* GSoC period Starts */ | ||
− | + | *May 21- June 14 : (PHASE I: Analysis and Design Period) | |
− | |||
− | |||
** Getting familiar with the code | ** Getting familiar with the code | ||
** Examine the existing STEPcode repo at https://github.com/stepcode/stepcode and create a list of tasks that need to be done. | ** Examine the existing STEPcode repo at https://github.com/stepcode/stepcode and create a list of tasks that need to be done. | ||
− | |||
** At the end of this period : A finalized plan to proceed for the development of the library. | ** At the end of this period : A finalized plan to proceed for the development of the library. | ||
− | + | *June 15 – August 15 (PHASE II: Development Phase) | |
− | + | ** June 15 – July 7 - Refactoring and Coding begins and testing it with step-g convertor. | |
− | ** June | + | ** July 7 – July 14 - bugs fixing, review to be ready for submitting. |
− | ** July | + | ** July 15 -July 21 -Organizing source code documentation in the step libraries to work well with doxygen. |
− | ** July | + | ** July 15 –24 - submitting and some more review and updating if it is necessary and making mid-term report. |
− | + | ** July 25 – August 15 - modifying other files in the source code that gets afftected due to changes in STEP library. | |
− | ** | + | ** At the end of this period : A complete library with all functionalities and all of them having been tested at unit level. |
− | |||
− | ** | ||
− | ** At the end of this period : | ||
− | + | *August 16- September 27 (PHASE III :Testing, Cleaning and Wrapping Up) | |
− | + | ** August 16 – August 20 - System Level testing for library at multiple platforms. | |
− | ** August | + | ** August 21-September 9 - bugs fixing, review to be ready for submitting the final result. |
− | ** September 9 | ||
** September 10- 22 -Pencils down ,Code clean up , Documentation (wiki pages) | ** September 10- 22 -Pencils down ,Code clean up , Documentation (wiki pages) | ||
** Sept. 23 – 27- Final evaluation and Submit code to Google | ** Sept. 23 – 27- Final evaluation and Submit code to Google | ||
** At the end of this period: Deliverable mentioned would be successfully be completed. | ** At the end of this period: Deliverable mentioned would be successfully be completed. | ||
− | |||
=My preparation for the Project:= | =My preparation for the Project:= | ||
*Joined IRC channel #brlcad | *Joined IRC channel #brlcad |