• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Software Design

Academic Year
Instruction in English
ECTS credits
Delivered at:
Department of Information Technologies in Business (Faculty of Computer Science, Economics, and Social Sciences)
Course type:
Compulsory course
2 year, 1-4 module


Sukhov, Alexander

Chusovliankin, Aleksei

Course Syllabus


The present program of educational discipline establishes requirements to educational results and learning outcomes of the student and determines the content and types of training sessions and reporting. The program is intended for the teachers conducting discipline "Software design", educational assistants and students of a direction of preparation 09.03.04 Software engineering, studying on the educational program "Software engineering";
Learning Objectives

Learning Objectives

  • development of competencies in software design and construction using modern languages, technologies and software development tools
Expected Learning Outcomes

Expected Learning Outcomes

  • Knows the basic principles of software design. Is able to build data structures and implement them in the program code. Able to design, construct and test software products
  • Knows the basic principles of modeling, classification of models
  • Knows the basic principles of the structural approach. Can build diagrams in notations IDEF0, DFD, ERD. Is able to model, analyze and use formal methods of software design. Is able to understand standards and life cycle models
  • Knows the basic principles of the object-oriented approach
  • Able to build diagrams in UML notation. Capable of modeling, analyzing and using formal software design methods. Capable of understanding standards and life-cycle models
  • Understands the principles of the subject-oriented approach. Can build meta-models of subject-oriented languages
  • Knows the concept of the delegate and the events, their areas of application. Is able to design, construct and test software products. Capable of creating software interfaces
  • Knows the basic principles of using attributes and unsafe code when developing software
  • Knows the main classes of ADO.Net technology. Able to use ADO.Net technology in software development
  • Knows the main classes of ORM technology, LINQ. Able to use ORM, LINQ technologies in software development
  • Knows the basic classes for working with files and serialization. Is able to develop applications that perform data serialization and file manipulation
  • Knows the main classes for developing multithreaded applications. Is able to design, construct and test multi-threaded applications
  • Knows the main classes of ASP.Net technology. Is able to use ASP.Net technology in software development
  • Knows the purpose of design patterns, MVC pattern principles
  • Knows the principles of the SOLID approach. Is able to apply the principles of SOLID in software development, code refactoring
  • Understands the purpose of CASE technology. Has an idea of modern CASE means.
Course Contents

Course Contents

  • Theme 1: The concept of software design
    The concept of software design is its connection with other areas of software engineering. Basics of design: minimization of complexity, expectation of changes, design with the possibility of verification, standards in design. Design management: design models, design planning, design changes. Practical considerations: design in construction, design languages, coding, testing, reuse, quality, integration.
  • Theme 2. Models. Modeling. Modelling languages. Metamodelling
    The concept of modeling and modeling. Model properties. Principles of modeling. Classification of models (from the point of view of the system, the degree of abstraction, the classification of Buch). Examples. Metamodelling. The concept of metamodeling, metamodeling. Classification of meta-models. Examples of meta-models. Multilevel modeling. Classification of information systems by the number of levels of models and their location. The concept of modeling language. Examples. The concept of metalanguage. Examples of metalanguage.
  • Theme 3: Structural Approach to Modelling
    Structural approach to modeling. Basic principles of structural approach to modeling, its advantages and disadvantages. Main types of diagrams used: IDEF0 (SADT), ERD, DFD: brief description, basic constructions, examples of building diagrams.
  • Theme 4: Object-oriented approach to modeling
    Object-oriented approach to process and system modeling. Basic principles of object-oriented approach to modeling, its advantages and disadvantages. Comparison of object-oriented and structural approaches to modeling.
  • Theme 5: UML language
    UML language: history, supported chart types. Diagram of precedents, activities, concepts, sequences, collaborations, components, deployments: main purpose, diagram characteristic, basic constructions (elements and connections between them).
  • Theme 6: Subject-oriented modelling
    The concept of subject oriented languages (DSL), their classification, examples. Advantages and disadvantages of subject-based modeling. Using DSL in IS development. Approaches to DSL development. Concept of DSM-platform (language tools). Requirements for DSL development tools. Architecture of DSM-platforms.
  • Theme 7: Delegates and events
    The concept of the delegate, the fields of use. Internal representation of the delegate. Description of delegates. Key members (properties and methods) of Delegate and MulticastDelegate classes. Multicast transmission. Features of multicast transmission. Generalized delegates. Action and Func Delegates. Event concept, areas of use. Multicast event transmission. The use of event-based means of access. An event-driven program.
  • Theme 8: Attributes and insecure code
    Attributes in C#. Attribute classes. Position and named attribute parameters. Attribute parameter types. Attribute specification. Names of attribute classes. Value of attribute arguments. Reserved attributes: AttributeUsage, Conditional, Obsolete. Unsecured code: concept, purpose. Unsafe contexts. Concept and purpose of pointers. Pointer type. Transfer of a pointer as a parameter. The result of the method is like a pointer. Pointer operations. Fixed and moving variables. Unmanaging of pointers. Operation of getting the address. Conversion of pointers. Access to the object and array element through the pointer. Arithmetic operations on pointers. Comparison of pointers. Operation sizeof and fixed. Buffers of fixed size. Access to buffer items. Memory allocation in the stack.
  • Theme 9: ADO.Net Technology
    ADO.NET technology: brief description, purpose, levels. ADO.NET data providers. Basic types of System.Data namespace. Abstraction of data providers. ADO.NET level connected: features, advantages, disadvantages. Connection string, its format. Main members (properties and methods) of DbConnection class. Class ConnectionStringBuilder. The SqlCommand class. Main members (properties and methods) of the SqlCommand class. Data reading objects. Getting the result of several data samples. Methods ExecuteReader, ExecuteScalar, ExecuteNonQuery. The DataTable class. Parameterized requests. Main members (properties and methods) of DbParameter class. Stored procedures. Call of stored procedure. Transactions. Main members (properties and methods) of DBTransaction class. Autonomous level of ADO.NET: features, advantages, disadvantages. Data adapter. Working scheme of the data adapter. DataSet class. Main members (properties and methods) of DataSet class. Collections DataTableCollection and DataRelationCollection, PropertyCollection. DataColumn class. Main members (properties and methods) of DataColumn class. Autoincremental field. DataRow class. Main members (properties and methods) of DataRow class. DataTable class. Main members (properties and methods) of DataTable class. Adding DataTable objects to DataSet. Getting data from DataSet. DataTableReader class. Serialization of objects: binary and XML. The DataGridView and DataView classes. DataAdapter class. Property TableMappings. Configuring the data adapter. Working with data adapter. Creation of relations between tables. LINQ to DataSet queries.
  • Theme 10. Object-Relational Mapping Technology. LINQ language
    ADO.NET Entity Framework: features, advantages, disadvantages. Appointment of Entity Framework. EDM model. Elements of EDM. Creating entities in EDM. Entity Framework: object service, entity client. Display data. EDM design strategies. ObjectContext class. Main members (properties and methods) of ObjectContext class. ObjectSet<T> collection. Example of working with EDM: updating, deleting a record. LINQ to Entities queries. Entity SQL queries. Working with EntityDataReader. Navigation properties. Call of stored procedure. LINQ technology. Areas of use. LINQ variants. Typification of LINQ expressions. C# tools for working with LINQ. Array processing using LINQ. LINQ and implicitly typed variables. Delayed and immediate execution of LINQ expressions. Return of LINQ-request result. Application of LINQ queries to collection objects and unclassified collections. Filtering data using the OfType<T> construct. Elements (constructions) of LINQ-requests. Basic sampling syntax. Selection of objects. Getting a subset of objects. Projection of new types. Handling and sorting of the selection result. Difference, intersection, merging, concatenation of multiple sampling results. Deletion of duplicates of elements. Aggregate operations. Internal representation of LINQ-requests.
  • Theme 11. File management and serialization
    File I/O. System.IO. The elements of the System.IO namespace. Classes for working with files and directories. Directory (DirectoryInfo) and File (FileInfo) classes. Abstract base class FileSystemInfo, class properties. The DirectoryInfo class. Working with DirectoryInfo. GetFiles method. Creation of subdirectories. Working with Directory type. Working with Drivelnfo type. FileInfo class, methods Create, Open, OpenRead, OpenWrite, OpenText, CreateText, AppendText. Working with File class, class methods. Abstract Stream class, class elements. FileStream class. Working with StreamWriter and StreamReader classes. Main elements of the TextWriter class. Reading and writing to a text file. Direct creation of instances of StreamWriter/StreamReader classes. Working with StringWriter, StringReader, BinaryWriter and BinaryReader classes. File tracking software. The concept of object serialization. Object graph: concept, building rules. Configuration of objects during serialization. Serialization formats: BinaryFormatter, SoapFormatter, XmlSerializer. Preservation of type accuracy during serialization. Examples of object serialization using BinaryFormatter, SoapFormatter, XmlSerializer. Manage XML data generation. Serialization of object collections. Configuring the SOAP process and binary serialization.
  • Theme 12. Multithreaded applications
    Понятие процесса и потока. Применение потоков при разработке приложений. Получение ссылки на текущий поток, домен и контекст, в котором выполняется поток. Асинхронный вызов метода потока. Синхронизация вызывающего потока. Делегат AsyncCallback. Возвращение результата работы потока с помощью класса AsyncResult. Передача и получение специальных данных состояния. Основные элементы пространства имен System.Threading. Основные члены (свойства и методы) класса Thread. Приоритеты потоков. Создание вторичных потоков. Делегаты ThreadStart и ParametrizedThreadStart. Класс AutoResetEvent. Потоки переднего плана и фоновые потоки. Проблема параллелизма и синхронизации потоков. Синхронизация с использованием ключевого слова lock, типов Monitor и Interlocked, атрибута [Synchronization]. Программирование с использованием обратных вызовов Timer. Пул потоков CLR: понятие, назначение, преимущества и недостатки использования. Параллельное программирование с использованием Task Parallel Library. Пространство имен System.Threading.Tasks. Обеспечение параллелизма данных с помощью класса Parallel. Доступ к пользовательскому интерфейсу во вторичных потоках. Вызов метода с использованием класса Task. Ключевые слова async и await.
  • Theme 13. ASP.Net technology
    ASP.NET Web Forms. HTTP protocol. HTTP request/response loop. HTTP protocol without status storage. Web application and web servers. IIS virtual directories. ASP.NET web development server. HTML language. Structure of HTML-document. Tools of visual constructor HTML. Building HTML-form. Client side scripts. Send back to the web server. Returns to ASP.NET. API-interface ASP.NET. Basic functionality of ASP.NET 2.0, ASP.NET 3.5, ASP.NET 4.0 and 4.5. Building a single-file ASP.NET web page. Description of data access logic. Role of ASP.NET directives. Block script. Announcement of ASP.NET control elements. Building ASP.NET page using code files. Description of methods in the code file. Debugging and tracing of ASP.NET pages. Website directory structure. Properties of Page class. ASP.NET controls. Web controls. Processing of server side events. Property AutoPostBack. Main members (properties and methods) of Control and WebControl classes. Bypassing by control elements. Dynamic change of controls. Interaction with dynamically created controls. System.Web.UI.HtmlControls namespace. Master pages. Navigation through the site using TreeView. Verification of reliability. Verification controls: RequiredFieldValidator, RegularExpressionValidator, RangeValidator, CompareValidator. Properties of verification controls. Verification groups. Working with topics in ASP.NET. *.skin files. Cascading Style Sheets (CSS). Status management in ASP.NET. State support problem. ASP.NET status management techniques. ASP.NET view status. Adding special data to the view state. File Global.asax. System.Web namespace event handlers. Global "last chance" exception handler. Application and session status. Main members (properties and methods) of HttpApplicationState class. Application level state data. Session data support. Main members (properties and methods) of HttpSessionState class. Working with the application cache. Cookie sets. Element <SessionState>. Storing session data on the server. API-interface of ASP.NET Profile. User profile in web.config.
  • Theme 15. SOLID
    SOLID. History of appearance, purpose. Principles of SOLID: the principle of a single duty, the principle of openness / closeness, the principle of substituting the Faces, the principle of separation of interfaces, the principle of inversion of dependencies. The essence of each principle, examples.
  • Theme 14. Patterns. MVC pattern
    Design patterns. History of appearance, purpose, classification of patterns. Structure of the pattern. Classification of patterns by purpose and level. Examples. Problem solving of IS design with the help of patterns. MVC pattern: purpose, history of appearance. Disadvantages of ASP.Net Web Forms. Architecture of MVC template. Model, representation and controller in MVC. Features of technology ASP.NET MVC: extensibility, the rigid control over HTML and HTTP, testability, powerful system of routing, open code ASP.NET MVC. Possibilities of ASP.NET MVC platform. Advantages of web-application based on MVC.
  • Theme 16. CASE-technologies
    CASE-means: definition, purpose. Components of CASE-means. Classification of CASE-means by supported stages of development, by component composition. Factors of choice of CASE-means. Process of implementation of CASE-means. Comparison of CASE tools (Rational Rose, Silverrun, Oracle Designer/2000, Sybase PowerDesigner). Capabilities of Flexberry CASE-system. Design and development of information systems with the help of Flexberry.
Assessment Elements

Assessment Elements

  • non-blocking Laboratory work #1
  • non-blocking Laboratory work #2
  • non-blocking Laboratory work #3
  • non-blocking Laboratory work #4
  • non-blocking Laboratory work #5
  • non-blocking Laboratory work #6
  • non-blocking Laboratory work #7
  • non-blocking Laboratory work #8
  • non-blocking Laboratory work #9
  • non-blocking Exam
Interim Assessment

Interim Assessment

  • Interim assessment (4 module)
    0.3 * Exam + 0.07 * Laboratory work #1 + 0.13 * Laboratory work #2 + 0.12 * Laboratory work #3 + 0.05 * Laboratory work #4 + 0.05 * Laboratory work #5 + 0.06 * Laboratory work #6 + 0.12 * Laboratory work #7 + 0.05 * Laboratory work #8 + 0.05 * Laboratory work #9


Recommended Core Bibliography

  • Черткова Е. А. - ПРОГРАММНАЯ ИНЖЕНЕРИЯ. ВИЗУАЛЬНОЕ МОДЕЛИРОВАНИЕ ПРОГРАММНЫХ СИСТЕМ 2-е изд., испр. и доп. Учебник для академического бакалавриата - М.:Издательство Юрайт - 2019 - 147с. - ISBN: 978-5-534-09172-4 - Текст электронный // ЭБС ЮРАЙТ - URL: https://urait.ru/book/programmnaya-inzheneriya-vizualnoe-modelirovanie-programmnyh-sistem-437536

Recommended Additional Bibliography

  • Антамошкин, О. А. Программная инженерия. Теория и практика [Электронный ресурс] : учебник / О. А. Антамошкин. - Красноярск: Сиб. Федер. ун-т, 2012. - 247 с. - ISBN 978-5-7638-2511-4.