Basic concepts of software construction. Software architecture, objects, patterns, frameworks and applications. Metaphors for a better understanding of software development. Programming conventions. Basic concepts of software design and production design specifications relying on object modeling. Static and dynamic modeling software (classes, interfaces, sequence diagrams, activity diagrams, packages, distribution). The choice of programming language. Standardization of visual and functional features of the software. Basic settings of software quality construction and choice of methods, techniques and tools for the design of software. Testing at the level of class, unit, module, functions. Development of test scenarios. Handling exceptions. Modeling and implementation mechanisms for the protection and preservation of integrity. The structure of the source code, macros and inline routines, template libraries, the use of recursion, dynamic code generation. Cooperative software development and teamwork.