General principles and approaches to software development. Waterfall Cascade Development Models Spiral Extreme Programming UI Prototyping Incremental. System approach to software development. The temporal and "spatial" aspects of the systemic approach

Waterfall Cascador Development Models Spiral Extreme Programming UI Prototyping Incremental W-Model Testing Unified Development Process software (USDP) MSF Methodology

Waterfall model Analysis of the requirements is drawn up Product Specification Design Compiled Product Architecture Implementation Development of the source code Integration of individual parts of the source code Testing and eliminating defects

Extreme programming Analysis of initial requirements Designing Integration Implementation Testing New requirements Analysis / assertion / modification plan of development Product release

UI Prototyping Product Release Development Changes Refinement Requirements and Specification Prototype Change and Refinement Some Functionality Basic Functionality Interface Prototype Preliminary Specification

Incremental development Iteration 1 Iteration 2 .... Analysis of Requirements Design Implementation Component Testing Integration Testing Single Whole Iteration N

Unified software development process (USDP) Ø Model use options describes cases in which the application will be used. Ø Analytical model describes the basic classes for the application. Ø Design Model Describes communication and relationships between classes and dedicated objects Ø The deployment model describes the distribution of computers software. Ø The implementation model describes the internal organization of the program code. Ø Test model consists of test components, test procedures and various testing options

Unified Software Development Process (USDP) Collecting Iter 1 .... Iter N Design Iter 1 .... Iter N Implementation Iter 1 .... Iter N Designing Iter 1 .... Iter n testing Iter 1 .... Iter N.

Typical software architecture components and typical Ø Ø Ø Ø Ø Organization Program Basic Classes Systems Data Organization Business Rules User Interface Resource Management Security Performance Scalability Interaction with other systems (integration) Internationalization, Localization Error-output error handling

Typical components of the software product architecture and typical fault tolerance requirements are a set of system properties that increases its reliability by detecting errors, restore and localize poor effects for the system. When developing any real system to ensure fault tolerance, it is necessary to provide for all sorts of situations that can lead to a failure of the system and develop mechanisms for processing failures. Reliability - the ability of the system to withstand various refusals and failures. The refusal is the transition of the system as a result of an error in a fully inoperable state. Failure - an error in the operation of a system that does not lead to the system failure. The smaller the failures and failures for a certain time interval, the system is considered more reliable.

Typical components of the software product architecture and typical requirements for the reliability curve N T 1 t is the next, the harder will find a mistake. The harder the system, the greater the likelihood of failures and failures.

Typical components of the software product architecture and typical requirements for Ø the possibility of implementing the developed architecture. Ø Excessive functionality. Ø Deciding on the purchase of ready-made components. Ø Strategy changes.

A checklist of questions that makes a conclusion about the quality of architecture: Ø is clearly described by the overall organization of the program; Ø Ø Ø includes a specification of an architecture review and its justification. Adequately defined the main components of the program, their area of \u200b\u200bresponsibility and interaction with other components. All functions specified in the specifications of the requirements are implemented by a reasonable number of system components. Is the description of the most important classes and their rationale. Is it given a description of the BD organization. Do all business rules are defined. Whether their influence on the system is described.

A checklist of questions that makes a conclusion about the quality of architecture: whether a user interface design strategy is described. ØDejd Lie user interface Modular so that its changes do not affect the remaining part of the system. Ø Like a description of the data input strategy. Whether the performance analysis of the system will be implemented using this architecture. Is the analysis of the reliability of the designed system being the reliability. Is the analysis of the scalability and expansion of the system.

Refactoring Refactoring involves the adaptation of the software to the new hardware and to new OS, new developments, new requirements, as well as architecture and functionality of software. This change in the internal structure of the software without changing its external behavior, designed to provide a modification of software. Reasonable reasons for refactoring: code is repeated; The implementation of the method is too large; too large cycles nesting, or the cycle itself is very large; The class has a bad connection (properties and class methods must only describe 1 object); The class interface does not form a consistent abstraction; The method takes too many parameters. It is necessary to try that the number of parameters is reasonably minimal; Separate parts of the class are changed regardless of other parts of the class;

Refactoring software when changing the program requires a parallel change in several classes. In the event of such a situation, it is necessary to reorganize the classes in order to minimize in the future possible changes; You have to change several inheritance hierarchies in parallel; You have to change multiple CASE blocks. It is necessary to modify the program in such a way as to make the implementation of the CASE block, and call it in the desired number of times in the program; Related data elements used together are not organized in classes. If you repeatedly use the same set of data items, it is advisable to consider the combination of this data and the operations performed above them are placed in a separate class;

Refactoring The method uses more elements of another class than its own. This means that the method must be moved to another class and call it out of the old; Elementary data type overloaded. To describe the essence of the real world, it is better to use some kind of class than to overload any existing data type; The class has too limited functionality. Better to get rid of this class, moved its functionality to another class; The methods of methods are transmitted "stray" data. The data transmitted to the method only so that it gives them to another method are called "stray." If there are such situations, try to change the architecture of classes and methods to get rid of them.

Refactoring on an intermediary object does nothing. If the role of the class is reduced to redirecting call calls to other classes, then the best intermediary object is best eliminated and performing calls from other classes directly; One class knows too much about another class. In this situation, it is necessary to make encapsulation more strict to ensure the minimum knowledge of the heir about his parent; The method has an unsuccessful name; Member data are open. This erases the line between the interface and the implementation, inevitably disrupts encapsulation, and limits the flexibility of the program; post comments in the source code;

Refactoring on a subclass uses only a small proportion of methods of its ancestors. This situation occurs when the new class is created only to inherit several methods from the base class, and not to describe any new entity. In order to avoid this, you must convert the base class, so that it gives access to a new class only to the methods you need; The code contains global variables. Only the variables should be global, which are actually used by the entire software. All other variables must be either local or should be the properties of any objects; The program contains a code that can ever need. When developing a system, it is advisable to provide places where the source code can be added in the future.

Annotation: A flexible approach to creating software, the basic principles of flexible development are considered. A list of techniques that are to a certain extent correspond to the principles of flexible software development. The key values \u200b\u200band principles of flexible development are analyzed.

Presentation for this lecture you can download.

The purpose of the lecture:

Get an idea of \u200b\u200bthe appointment and basic principles of flexible software development.

Introduction

Flexible software development methodology focused on the use of an iterative approach in which software Created gradually, in small steps, including the implementation of a specific set of requirements. It is assumed that the requirements may change. Commands using flexible methodologies are formed from universal developers who perform various tasks in the process of creating a software product.

When using flexible methodologies, minimizing risks is carried out by the development of a series of short cycles, called iterations, duration 2-3 weeks. Itteration is a set of tasks scheduled for execution during a certain period of time. Each iteration creates a working version of the software system, which implements the most priority (for this iteration) customer requirements. All iterations are performed by all the tasks necessary to create an operational software: planning, analysis of requirements, design, coding, testing and documenting. Although a separate iteration is usually insufficient for the release of a new version of the product, it is understood that the current software Ready to release at the end of each iteration. At the end of each iteration, the command performs the revaluation of the priorities of the requirements for the software product, it may make adjustments to the development of the system.

Principles and value of flexible development

For the methodology of flexible development, key postulates that allow teams to achieve high performance are declared:

  • people and their interaction;
  • delivery of working software;
  • cooperation with the customer;
  • reaction to change.

People and interaction. People are the most important part of success. Separate team members and good communications are important for high-performance teams. To facilitate communication, flexible methods involve frequent discussion of the results of work and making changes to the decision. Discussions can be carried out daily for several minutes and at the end of each iteration with the analysis of the results of work and retrospective. For effective communications during meetings, team members must adhere to the following key behaviors:

  • respect for the opinions of each team member;
  • be truthful for any communication;
  • transparency of all data, actions and solutions;
  • confidence that each participant will support the team;
  • commitment to the team and its goals.

To create high-performance teams in flexible methodologies, in addition to an effective team and good communications, a perfect software instrument is required.

Working software is more important than comprehensive documentation. All flexible methodologies allocate the need to deliver small fragments of working software through the set intervals. SoftwareUsually, the level of modular testing, testing at the system level. In this case, the volume of documentation should be minimal. In the design process, the team must maintain a short document that contains the rationale for the solution and the description of the structure.

Cooperation with the customer is more important than the formal contractual agreements. In order for the project successfully completed, regular and frequent communication with the customer is necessary. The Customer must regularly participate in the discussion of decision-made software solutions, express his wishes and comments. The involvement of the Customer in the software development process needs to create a quality product.

Operational response to changes more importantly follow the plan. The ability to respond to changes in many respects determines the success of the program project. In the process of creating a software product very often change customer requirements. Customers very often do not know exactly what they want, as long as they do not see working software. Flexible methodologies are looking for feedback From customers in the process of creating a software product. Operational change response is necessary to create a product that will satisfy the customer and ensure business value.

Flexible development postulates are supported by 12 principles. In specific methodologies of flexible development, processes and rules are identified that are more or less complying with these principles. Flexible software creation methodologies are based on the following principles:

  1. The highest priority is to consider satisfaction of the customer's wishes by delivering useful software in a short time with a subsequent continuous update. Flexible techniques imply a quick delivery of the initial version and frequent updates. The goal of the team is the delivery of a working version with a few weeks from the start of the project. Further software systems With gradually expanding functionality, every few weeks should be supplied. The customer may begin industrial operation of the system, if it considers it is quite functional. Also, the customer can simply get acquainted with the current version of the software, provide your feedback with comments.
  2. Do not ignore the change in requirements, even in late development stages. Flexible processes make it possible to take into account changes to ensure the competitive advantages of the customer. Teams using flexible techniques seek to make the structure of a qualitative program, with minimal influence of changes to the system as a whole.
  3. Suppose new working versions of frequently, with an interval from one week to two months, giving preference to smaller time. At the same time, the goal is to put a program that meets the needs of the user, with a minimum of accompanying documentation.
  4. Customers and developers should work together throughout the project. It is believed that for a successful project, customers, developers and all stakeholders should communicate often and in many ways to targeted software improvement.
  5. Projects must incarnate purposeful people. Create a project team normal working conditions, ensure the necessary support and believe that team members will bring to the end.
  6. The most effective and productive method for transferring information to the team of developers and the exchange of views inside her - a conversation face to face. In flexible projects, the main method of communication is simple human communication. Written documents are created and updated gradually as software develops and only if necessary.
  7. The working program is the main indicator of progress in the project. About the approach of a flexible project to complete judgment judge how much this moment The program meets the requirements of the customer.
  8. Flexible processes contribute to long-term development. Customers, developers and users must be able to maintain an unchanged pace for how long.
  9. Incomprehensible attention to technical excellence and high-quality design increases the return on flexible technologies. The members of the flexible team seek to create a quality code, regularly conducting refactoring.
  10. Easy - art achieve more, making less. Team members decide the current tasks as simple as possible and efficiently. If any problem arises in the future, then the quality code has the opportunity to make changes without extent.
  11. Self the best architecturesRequirements and projects give out self-organizing teams. In the flexible teams, the tasks are entrusted not to individual members, but the team as a whole. The team itself decides how best to implement customer requirements. Team members work together over all aspects of the project. Each participant is allowed to contribute to the common cause. There is no such member of the team, which would only answer for architecture, requirements or tests.
  12. The team should regularly think about how to become even more efficient, and then adjust and adjust their behavior accordingly. The flexible team constantly adjusts its organization, rules, agreements and relationships.

The above principles, to a certain extent, are compliant with a number of software development methodologies:

AgileModeling a set of concepts, principles and receptions (practices) that allow you to quickly and simply perform modeling and documentation in software development projects;
AgileUnifiedProcess (AUP) simplified version of IBM RationalUnifiedProcess (RUP), which describes a simple and understandable approximation (model) to create software for business applications;
Openup. this is an iterative-incremental software development method. Positioned as a light and flexible option;
AgileDatamethod. a group of iterative methods for developing software, in which requirements and decisions are achieved in the framework of cooperation of various cross-functional teams;
DSDM. dynamic System Development Methodology, based on the concept of quick application development (RAPIDApplicationDevelopment, RAD). Represents an iterative and incremental approach, which gives a special value to continuous participation in the user / consumer process;
ExtremeProgramming (XP) extreme programming;
Adaptive Software Development (Add) adaptive program development;
FeatureDrivendEvelopment (FDD) development oriented to the gradual addition of functionality;
Gettingreal iterative approach without functional specifications used for web applications;
Msffogagilesoftwaredevelopment. flexible development methodology for Microsoft;
Scrum sets the rules for managing the development process and allows the use of already existing coding practices, adjusting the requirements or bring tactical changes [

1. Cascade (English. Waterfall) - Standard Development Model

The cascade development model is a model in which all stages of development are conducted in series - the subsequent stage begins after the complete completion of the previous one.

Such a model includes the following stages of the software development process:

Primarily determined technical specifications The future program, as a result, a list of software requirements is approved. Next, the transition to the design is occurring, in the course of which the documentation is created describing the programmers plan and the method of implementing the requirements.

After complete design design, the programmers are implemented (designing) project. At the embodiment, the integration of all components of the project occurs. Only after the complete completion of these stages is tested and debugging the finished product. Further, the software product can be implemented and after the implementation of support to support is to introduce a new functionality and eliminate errors.

The main advantages of cascade development:

2. Flexible Software Development Methodology (Agile Software Development)

A number of software development methodologies providing for the joint work of customer and developers. The flexible development method is based on an iterative approach, dynamic formation of requirements and their implementation by short stages.

The result of each such stage, which includes the cycle of Ierractions, is a miniature program project,

Methods of flexible development are several, from the most famous - SCRUM, extreme programming, DSDM.

The main advantages of flexible development:

minimizing risks; gradual increase in the functional of the software product; a small amount of written documentation; Running base version Programs in the shortest possible time.

There are cons:

the inability to accurately determine the project budget; the impossibility of determining the exact timeliness of the project; not suitable for state and budgetary organizations; Requires motivation from responsible representatives of the customer.

Agile-Manifest Software Development

We are constantly discovering more advanced software development methods, while developing directly and helping others. Thanks to the work done, we were able to realize that:

People and interaction more important processes and tools

Working Product More importantly exhaustive documentation

Cooperation with the customer more importantly agree on the terms of the contract

Ready to change is more important following the initial plan

That is, not denying the importance of the right, we still appreciate what is left.

Principles of flexible development:

Customer satisfaction due to the rapid and uninterrupted delivery of the necessary software;
greeting changes of requirements even at the end of the development (this may increase the competitiveness of the product obtained);
frequent supply of working software (every month or week or more often);
Close, daily customer communication with developers throughout the project;
Project are engaged in motivated personalities, which are provided with the necessary working conditions, support and confidence;
The recommended method of transmitting information is a personal conversation (face to face);
Working software is the best progress meter;
Sponsors, developers and users should be able to maintain a permanent pace for an indefinite period;
constant attention to improving technical skills and convenient design;
Easy - art does not make extra work;
The best technical requirements, design and architecture are obtained by a self-organization team;
Permanent adaptation to changing circumstances.

1. Appointment of programming technology. History of development of programming technology. Types of software projects. Composite parts of programming technology. Project, product, process and personnel

2. Life cycle of the program. Cyclic nature of development. The basic concepts of programming technology. Processes and models. Phases and turns. Milestones and artifacts. Stakeholders and workers.

3. Detection and analysis of requirements. Software requirements. Development Development Scheme. Requirements.

4. Architectural and detailed design. Implementation and coding. Testing and verification. The quality control process. Methods of the "white box" and "black box". Inspection and reviews. Test objectives. Verification, validation and system testing. Maintenance and continuing development.

5. Models of the development process. Waterfall and conveyor models. Spiral and incremental models. Flexible models of the development process.

6. Designing the process model. Detection of process requirements. Used phases, milestones and artifacts. Selection of the process architecture. The procedure for holding a typical project. Documentated procedures.

7. Developer team models. Collective nature of development. The optimal size of the team. Subordination of project participants. Development of team and staff development. Specialization, cooperation and interaction.

8. Developer team models. Hierarchical team model. The method of surgical brigade. Team model equal.

9. Programming nature. Science programming. Art programming. Craft programming. Programming paradigms. Structural programming. Logical programming. Object-oriented programming.

10. Software architecture. Event management. Architecture client / server. Services. Three-layer architecture. Program Design. Conceptual design. Logical design. Detailed design.

1. Novikov Approaches to the development of software "http: // window. /window_catalog/Files/R60368/itmo307.pdf.

2. Extreme programming. - SPb.: Peter, 2002.

3. Software development technology. - St. Petersburg. : Peter, 2004.

4. Brooks-ml. Software complexes are designed and created. M.: Science, 1975; New translation publication: mythical man-month. SPb.: Symbol +, 1999.

5. Algorithms + data structures \u003d programs. M., Mir, 1978.

6. Systematic programming. Introduction M.: Mir, 1977.

7. Structural programming. M.: Mir, 1975.

8. Programming discipline. M.: Mir, 1978.

9. Software development technologies. - SPb.: Peter, 2002.

10. Programming Terech. M.: Binom, 2006.

11. Rambo J. Unified Software Development Process. St. Petersburg: Peter, 2002.

Economic theory for managers

The main microeconomic theories. Examples of application in the analysis of economic processes. Major macroeconomic theories. Examples of application in the analysis of economic processes. Principles and methods for managing economic processes. Toolkit Assessment of the level of economic processes The problem of extended reproduction. Factors of economic growth of the Russian economy. Criteria and indicators of sustainable development. Smoothing cyclic oscillations. The role of a multiplier and accelerator in assessing the rate of economic development. Production functions in the economy. Examples of application in the analysis of economic processes. Profit. Calculation of indicators affecting profits, graphic image of a break-even point. Methodology for the implementation of investment policy.

Course of Economic Theory: Textbook for universities / Ed. . -Kirov: "Asa", 2004. KEMAEMEEEMMAMATE MODELING. Modeling macroeconomic processes and systems: textbook. M.: Uniti-Dana, 2005. Banes Cybernetics. Kharkov: Consul, 2004. Leushch Workshop on methods mathematical modeling: tutorial . Nizhny Novgorod state. tehn Univ.- N. Novorod, 2007. Economic policies: Lectures of Nobel laureates in economics. M.: Modern Economics and Law, 2005. Cherems. Advanced level: textbook.-M.: Infra-M, 2008. Evolution of institutions of ministers. Institute of Economics URO RAS, - M.: Science, 2007.

Technologies for the development and adoption of management decisions [H]

Decision making as a basis for the management of the manager. Introduction to the theory of decision-making. The basic concepts of decision making theory. Business management models and their impact on decision making. Various methods Classification solutions. Classification: According to the degree of formalities, according to the degree of routine, in terms of periodicity, urgency, according to the degree of achievement of goals, by the method of choosing an alternative. Basic decision making methods. Solving decision making methods. Decision making goals. Time when searching for solutions. Main errors Mathematical decision making methods. Mathematical aspects of decision making theory. Operations research. Mathematical approach to making decisions. Tree solutions. Development and decision-making models. Game theory. Mathematical decision making methods. Mathematical aspects of decision making theory. Models of queue theory. Inventory management models. Linear programming model. Transport tasks. Simulation. Network analysis. Economic analysis. Limited rational models. Features of the development and decision-making in the group. Method for determining group cohesion based on the degree of connectivity of sets. Methods of collective decision. Consensus method. Voting methods. Creative decision making methods. Brainstorm. Conference of ideas. Ship board. The method of "mental hats" on de Bono. The theory of solutions of inventive tasks (TRIZ). The perfect final solution. Examples of tasks and solutions with TRIZ. The use of TRIZ methods when making unique and creative solutions. Methods for developing ideas of solutions and their adaptation to the situation. Model of the Tree Tree. Strategy for coordination of interests. Formation of solutions to coordinate interests. Methods for determining the interests of counterparties. Decision support systems (expert systems). The history of the creation of decision-making systems. Classification of decision-making systems. Typical structure of the expert system. Ways to represent knowledge. Methods of logical output. Application of expert systems in practice.

I. The theory of decision-making: textbook. - M.: Exam, 2006. - 573 p. I. Decision making. Theory and methods for developing management decisions. Tutorial. - M.: March, 2005. - 496 with the development of a management decision - M.: Publishing House "Case", 2004 - 392 p. G. Expert Assessment and decision-making. - M.: Patent, 1996. - 271 p. Taha // Introduction to the operation of operations \u003d Operations Research: An Introduction. - 7th ed. - M.: Williams, 2007. - P. 549-594. Tale. Economic forecasts and decision making. M.: "Progress" 1970. K. D. Lewis. Methods for predicting economic indicators. M.: "Finance and Statistics" 1986. G. S. Kildishev, A. A. Frenkel. Analysis of temporary rows and forecasting. M.: "Statistics" 1973. O. Kim, Ch. U. Muulller, W. R. Klekka and others. Factor, discriminant and cluster analysis. M.: "Finance and Statistics" 1989. Effective manager. Book 3. Decision making. - Mim Link, 1999 Turkevsky and the management of a motor transport enterprise. - M.: Higher School, 2005. ,; Ed. . System analysis in management: tutorial. - M.: Finance and Statistics, 2006., Tinkov: Tutorial. - M.: Knourus, 2006.

Modeling business processes in integrated management systems

What principles are business processes allocate? What is the problem of a holistic description of business processes. What is the system, what properties does it have? The role of system analysis in modeling business processes? Process as an object of control. Process environment. The main elements of the business process. The advantages and disadvantages of functional and process management. Management cycle PDCA. Stages of processes management cycles. PDCA cycle and implementing ISO 9001: 2008 requirements. SADT methodology (Structured Analysis and Design Technique is a structural analysis and design method). Essence. Basic provisions. How is the functional model of activity in IDEF0 methodology? What do works in the diagrams of the functional model, how are they displayed by IDEF0 methodologies? What are the arrows in the diagrams of the functional model, what are their types and views? DFD methodology. Essence. The main components of DFD diagrams. What are the features of DFD diagrams, what is described in them? What are the features of DFD-diagrams? What are the arrows on the DFD diagram? IDEF3 methodology. Essence. Documentation and modeling tools. What are the features of IDEF3 diagrams, what is described in them? What are the features of IDEF3 diagrams objects? And arrows? Classification of processes. Model business processes. Reenginiring and its technology. When is it appropriate to apply reengineering when managing the company? Monitoring and measurement of processes. Indicators of the organization's processes. Numerical and rating estimates of processes.

"Modeling business processes with AllFusion Process Modeler (BPWIN 4.1) Dialogue MEFI" 2003 "Creating information systems with Allfusion Modeling Suite" ed. "Dialog Mafi" 2003 "Practice of Functional Modeling with AllFusion Process Modeler 4.1. (Bpwin) Where? Why? How?" ed. "Dialogue-MEPI" 2004 DUBYKOVSKY MODELING WITH ALLFUSION PROCESS MODERER (BPWIN). ed. Dialogue-MEPI 2007 D. Marka, K. McGowen "Methodology of Structural Analysis and Designing Sadt" 1993. Classical Labor on the SADT methodology. Cheress analysis of systems: IDEF-technological, modeling and analysis of systems. IDEF technology. Workshop. M.: Finance and Statistics, 2001., "Business Structural Model: DFD Technologies" http: // www. /Level4.asp? ItemID \u003d 5810 "Theory and practice of reorganization of business processes" 2003 / P50.1 .. Methodology of functional modeling. M.: Gosstandart of Russia, 2000. http: // www. IDEF0, IDEF3, DFD http: // www. Modeling business processes by BPWIN http: // www. / DEPARTMENT / SE / DEVIS / 7 / IDEF0 in modeling the HTTP: /// Content / View / 21/27 / Http: // www modeling. /dir/cat32/subj45/file1411/view1411.html http: // www. http: // www.

Software efficiency assessment

1. Architecture IT.

2. Control process domains.

3. List of domain processes Planning and organization

4. List of domain processes Acquisition and implementation

5. List of Domain Processes Operation and Maintenance

6. List of domain processes Monitoring and evaluation

7. Characteristics of the level of maturity models of processes

9. KPI and KGI their relationship and purpose

1. 10. Total IT control measures and application control measures. Areas of responsibility and duties of business and IT.

Cobit 4.1 Russian edition.

Legal regulation of the creation and use of intellectual property

1. List the intellectual rights to the results of intellectual activity and expand their content.

2. List the types of contracts by order of exclusive right. Describe each of these contracts by order of exclusive right.

4. Describe the main provisions of the legal protection of the program for the computer as an object of copyright.

5. Compare the main provisions of the database of the database as an object of copyright and as an object of adjacent rights.

6. Describe the conditions of patentability of patent rights objects: inventions; useful models; Industrial samples.

7. Expand the content of the patentability criteria of the invention: novelty; inventive level; Industrial applicability.

8. Describe the conditions and procedure for the preparation of a patent for the invention, a useful model or an industrial sample, as well as conditions that ensure the effect of patents and the timing of their action.

9. Give the definition of "know-how" and list the conditions when creating which the legal protection of the secrets of production occurs and is carried out.

10. List protected individualization tools and give them a comparative characteristic.

1., intellectual property right in Russian Federation, textbook // m, prospekt, 2007

2., Intellectual Property Right, Tutorial // M, Rior, 2009

Management of projects and development on [and]

What is a methodology, why is it needed. The general structure of the methodology, the main elements of the methodology. Principles for designing their own methodology. Examples of various artifacts, roles, competencies, boundary conditions. The structure of the cascharn methodology, metric methodology. Project criteria for cascharnu. Criteria for choosing a methodology, Cavarna Matrix. Project life cycle. Waterfall and iterative life cycle models. The boundaries of applicability for waterfall and iterative models. RUP as an example of an iterative methodology. The main concepts of RUP, the limits of applicability. The role of a person in the development of software. Flexible methodologies, basic principles of flexible methodologies. The cause of flexible methodologies. Scrum as an example of a flexible methodology. Roles, artifacts, activities in SCRUM. Scrum applicability limits. Extreme programming (XP) ideas, values, basic practices, applicability borders. Similarities and differences between SCRUM and XP. Collect and manage requirements. Basic practices, terms, principles. Approaches to the document documentation and product, the main types of documents. Examples of practices to manage the requirements of the methodologies considered in the course. Planning software development. Types of plans, risk management, popular risks. Examples of workplace planning practices from the methodologies discussed. Testing when developing software. The concept of assembly (build) of the software product. Basic test methods, terms. Examples of testing practices from the methodologies considered in the course. The concept of assembly (build), codes storage methods, tools. Two principles of organization of work with version control system. Features of the production / calculation process for different categories of products, examples of practitioners. Modern concepts of software architecture, multi-level architectures, architecture criteria. List of necessary solutions when designing software, approaches to the selection of the data storage system.

Kent Beck - Extreme Programming Frederick Brooks - Mythical Man-Month or How Software Systems are created. Tom de Marco - Deadline. Roman about project management. Tom De Marko, Timothy Lister - Waltling with bears. Tom De Marco, Timothy Lister - human factor_ Successful projects and teams. Alistair Cavier - each project its own methodology. Alistair Cavier - people like nonlinear and most important components in creating software. Andriy Orlov - automator notes. Professional confession. Philip Kratten - Introduction to Rational Unified Process. Henrik Kabberg - Scrum and XP: Notes with advanced. Presentation of lectures at the rate


Waterfall Model Analysis of Requirements Design Implementation Integration Testing Compiled Product Specification Compiled Product Architecture Development of the source code Integration of individual parts of the source code Testing and eliminating defects












Unified software development process (USDP) Model use options describes cases in which the application will be used. Analytical model describes the basic classes for the application. The design model describes communication and relationships between classes and dedicated objects, the deployment model describes the distribution of software on computers. The implementation model describes the internal organization of the program code. Test model consists of testing components, test procedures and various testing options.








Typical components of the program product architecture and typical requirements for organizing the program Basic Classes Systems Data Certificate Business Rules User Interface Resource Management Security Performance Scalability Interaction with other systems (integration) Internationalization, Localization Entering data Error processing


Typical components of the software product architecture and typical fault tolerance requirements are a set of system properties that increases its reliability by detecting errors, restore and localize poor effects for the system. When developing any real system to ensure fault tolerance, it is necessary to provide for all sorts of situations that can lead to a failure of the system and develop mechanisms for processing failures. Reliability - the ability of the system to withstand various refusals and failures. The refusal is the transition of the system as a result of an error in a fully inoperable state. Failure - an error in the operation of a system that does not lead to the system failure. The smaller the failures and failures for a certain time interval, the system is considered more reliable.




Typical components of the software product architecture and typical requirements for the possibility of implementing the developed architecture. The possibility of implementing the developed architecture. Excessive functionality. Excessive functionality. Deciding on the purchase of ready-made components. Deciding on the purchase of ready-made components. Strategy for change. Strategy for change.


It is clearly described by the overall organization of the program; whether the specification includes an overview of the architecture and its rationale. It is clearly described by the overall organization of the program; whether the specification includes an overview of the architecture and its rationale. Adequately defined the main components of the program, their area of \u200b\u200bresponsibility and interaction with other components. Adequately defined the main components of the program, their area of \u200b\u200bresponsibility and interaction with other components. All functions specified in the specifications of the requirements are implemented by a reasonable number of system components. All functions specified in the specifications of the requirements are implemented by a reasonable number of system components. Is the description of the most important classes and their rationale. Is the description of the most important classes and their rationale. Is it given a description of the BD organization. Is it given a description of the BD organization. Do all business rules are defined. Do all business rules are defined. Whether their influence on the system is described. Whether their influence on the system is described. A checklist of questions that allows us to conclude the quality of architecture:


A checklist of questions that makes a conclusion about the quality of architecture: whether the user interface design strategy is described. Is the user interface design strategy is described. Whether the user interface is made modular so that its changes do not affect the remaining part of the system. Whether the user interface is made modular so that its changes do not affect the remaining part of the system. Like a description of the data I / O strategy. Like a description of the data I / O strategy. Whether an analysis of the performance of the system, which will be implemented using this architecture. Whether an analysis of the performance of the system, which will be implemented using this architecture. Whether the reliability analysis of the designed system was carried out. Whether the reliability analysis of the designed system was carried out. Whether the analysis of the issues of scalability and extensibility of the system was carried out. Whether the analysis of the issues of scalability and extensibility of the system was carried out.


Refactoring by code is repeated; The implementation of the method is too large; too large cycles nesting, or the cycle itself is very large; The class has a bad connection (properties and class methods must only describe 1 object); The class interface does not form a consistent abstraction; The method takes too many parameters. It is necessary to try that the number of parameters is reasonably minimal; Separate parts of the class are changed regardless of other parts of the class; Refactoring implies adaptation of software to new hardware and to new OS, new tools for developing, new requirements, as well as architecture and functionality of software. This change in the internal structure of the software without changing its external behavior, designed to provide a modification of software. Reasonable reasons for refactoring:


Refactoring software when changing the program requires a parallel change in several classes. If such a situation occurs, it is necessary to reorganize the classes in order to minimize possible changes in the future; You have to change several inheritance hierarchies in parallel; You have to change multiple CASE blocks. It is necessary to modify the program in such a way as to make the implementation of the CASE block, and call it in the desired number of times in the program; Related data elements used together are not organized in classes. If you repeatedly use the same set of data items, it is advisable to consider the combination of this data and the operations performed above them are placed in a separate class;


Refactoring The method uses more elements of another class than its own. This means that the method must be moved to another class and call it out of the old; Elementary data type overloaded. To describe the essence of the real world, it is better to use any class than to overload any existing data type; The class has too limited functionality. Better to get rid of this class, moved its functionality to another class; The methods of methods are transmitted "stray" data. The data transmitted to the method only so that it gives them to another method are called "stray." If there are such situations, try to change the architecture of classes and methods to get rid of them.


Refactoring on an intermediary object does nothing. If the role of the class is reduced to redirecting call calls to other classes, then the best intermediary object is best eliminated and performing calls from other classes directly; One class knows too much about another class. In this situation, it is necessary to make encapsulation more strict to ensure the minimum knowledge of the heir about his parent; The method has an unsuccessful name; Member data are open. This erases the line between the interface and the implementation, inevitably disrupts encapsulation, and limits the flexibility of the program; post comments in the source code;


Refactoring on a subclass uses only a small proportion of methods of its ancestors. This situation occurs when the new class is created only to inherit several methods from the base class, and not to describe any new entity. In order to avoid this, you must convert the base class, so that it gives access to a new class only to the methods you need; The code contains global variables. Only the variables should be global, which are actually used by the entire software. All other variables must be either local or should be the properties of any objects; The program contains a code that can ever need. When developing a system, it is advisable to provide places where the source code can be added in the future.