The software product and software engineering. Software process, methods and tools. Software process models. The waterfall model. Model of evolutionary development. Model of formal development. Model for reuse. Software project management. Features of the software project. Planning and monitoring of the project. Requirements and specifications. Documents that describe the requirements. Problems with the specification. Modeling of systems. Model of the data flow. Models of entities, relationships and attributes. Model of state changes. Object models. Modeling using CASE tools. Using prototypes. Prototype of user interfaces. Formal specification. The formal interface specification. The formal specification of behavior. Design and implementation. Decomposition of major parts of the system into smaller ones. Models of systems used in the design. The impact of design on software quality. CASE tools for design and implementation. Software architectures. Architecture of distributed systems. Client server and architecture with distributed objects. The design using object oriented approach. Design of the user interface. The interaction of the user and the system. Presentation of information. Software for reuse. Development based on components. Families of applications. Design templates (patterns). Verification and validation. The relationship of verification, validation and debugging. Static verification. Inspection of programs. Automated static analysis. Formal verification. Software testing. Types and phases of testing. Testing of parts. Integrated testing. Maintenance and evolution. The dynamics and cost of maintaining software. Configuration management. Development of the plan. Managing changes to the system. Version Management. Software reengineering.