The purpose of this subject is to endow the Engineers in Computer Science with the necessary knowledge to develop, in a successful way, big applications, either because they are programmers, or because they carry out coordination tasks in a programmers group.
In professional programming environments there exists a "programming culture" due, among other things, to the use of a series of tools and a methodology of work that, usually, it is not know out of them and therefore, it is not used in the practice.
We can found software development companies whose operations are totally anarchic in this subject: minimal or none coordination among the programmers, deficient management of the software versions, not acquainted of the full capacities of the tools they use, etc.
In this subject we try to show all the necessary information to our students could with the aim of carrying out programming related tasks in the most appropriate and efficient way.
To attain it we raise the following objectives:
To know a whole series of tools for the management and treatment of text and binary files.
To show series of guidelines/procedures to keep in mind during the development of great scale applications and team-group tasks (identifiers nomenclature standards, calling application options standards, code source indent and comments standards, as well as, for every project, standards for the distribution of the code in tree directories).
To learn how to express dependences between files with "make" type tools. How to apply it to the management and development of applications. And to get expertise with tools for semi-automatic and portable creation of "makefiles".
Basic tools.
Use of an interpreter of commands. Specific tools for text files. Specific tools for binary files. Generic tools for files. Text Editors.
A bit of order...
Writing code standards. Correct use of comments (automatic documentation generation from them). Standards for project code organization. How to distribute it in a directory tree.
3. Compilation, link and debugging.
Compiler and linker. Debugging. Project management with "make". Other similar tools: "ant", "jam". "Auto-tools": "Autoconf", "Automake", "Libtool".
4. Detection and correction of mistakes.
Dynamical memory mistakes. Use of tests. Programming by contract. Creation of software free of mistakes (or at least, easily detectable).
5. Other tools.
Code optimization (gprof, gcov). Localization (i18n) of applications. How to automate the translation to other languages. Version control. Extensible applications. Extension languages. IDEs - Integrated Environments of Development-.
6. Types of software licenses.
|