Переглянути джерело

Merge branch 'master' of u21lapchenko/ISRPO_Lapa into master

ypv 1 рік тому
батько
коміт
4646e4c82d

+ 49 - 0
Лекции/Case-средства/Case-средства. Общая характеристика и классификация.md

@@ -0,0 +1,49 @@
+# Case-средства. Общая характеристика и классификация
+Современные CASE-средства охватывают обширную область поддержки многочисленных технологий проектирования ИС: от простых средств анализа и документирования до полномасштабных средств автоматизации, покрывающих весь жизненный цикл ПО.
+
+Наиболее трудоемкими этапами разработки ИС являются этапы анализа и проектирования, в процессе которых CASE-средства обеспечивают качество принимаемых технических решений и подготовку проектной документации. При этом большую роль играют методы визуального представления информации. Это предполагает построение структурных или иных диаграмм в реальном масштабе времени, использование многообразной цветовой палитры, сквозную проверку синтаксических правил. Графические средства моделирования предметной области позволяют разработчикам в наглядном виде изучать существующую ИС, перестраивать ее в соответствии с поставленными целями и имеющимися ограничениями.
+
+В разряд CASE-средств попадают как относительно дешевые системы для персональных компьютеров с весьма ограниченными возможностями, так и дорогостоящие системы для неоднородных вычислительных платформ и операционных сред. Так, современный рынок программных средств насчитывает около 300 различных CASE-средств, наиболее мощные из которых так или иначе используются практически всеми ведущими западными фирмами.
+
+# Понятие case - средств
+Обычно к CASE-средствам относят любое программное средство, автоматизирующее ту или иную совокупность процессов жизненного цикла ПО и обладающее следующими основными характерными особенностями:
+
+- мощные графические средства для описания и документирования ИС, обеспечивающие удобный интерфейс с разработчиком и развивающие его творческие возможности;
+- интеграция отдельных компонент CASE-средств, обеспечивающая управляемость процессом разработки ИС;
+- использование специальным образом организованного хранилища проектных метаданных (репозитория).
+
+Интегрированное CASE-средство (или комплекс средств, поддерживающих полный ЖЦ ПО) содержит следующие компоненты;
+
+- репозиторий, являющийся основой CASE-средства. Он должен обеспечивать хранение версий проекта и его отдельных компонентов, синхронизацию поступления информации от различных разработчиков при групповой разработке, контроль метаданных на полноту и непротиворечивость;
+- графические средства анализа и проектирования, обеспечивающие создание и редактирование иерархически связанных диаграмм (DFD, ERD и др.), образующих модели ИС;
+- средства разработки приложений, включая языки 4GL и генераторы кодов;
+- средства конфигурационного управления;
+- средства документирования;
+- средства тестирования;
+- средства управления проектом;
+- средства реинжиниринга.
+
+# Общая характеристика и классификация.Характеристика case - средств
+Все современные CASE-средства могут быть классифицированы в основном по типам и категориям. Классификация по типам отражает функциональную ориентацию CASE-средств на те или иные процессы ЖЦ. Классификация по категориям определяет степень интегрированности по выполняемым функциям и включает отдельные локальные средства, решающие небольшие автономные задачи (tools), набор частично интегрированных средств, охватывающих большинство этапов жизненного цикла ИС (toolkit) и полностью интегрированные средства, поддерживающие весь ЖЦ ИС и связанные общим репозиторием. Помимо этого, CASE-средства можно классифицировать по следующим признакам:
+
+- применяемым методологиям и моделям систем и БД;
+- степени интегрированности с СУБД;
+- доступным платформам.
+
+Классификация по типам в основном совпадает с компонентным составом CASE-средств и включает следующие основные типы:
+
+- средства анализа (Upper CASE), предназначенные для построения и анализа моделей предметной области (Design/IDEF (Meta Software), BPwin (Logic Works));
+- средства анализа и проектирования (Middle CASE), поддерживающие наиболее распространенные методологии проектирования и использующиеся для создания проектных спецификаций (Vantage Team Builder (Cayenne), Designer/2000 (ORACLE), Silverrun (CSA), PRO-IV (McDonnell Douglas), CASE.Аналитик (МакроПроджект)). Выходом таких средств являются спецификации компонентов и интерфейсов системы, архитектуры системы, алгоритмов и структур данных;
+- средства проектирования баз данных, обеспечивающие моделирование данных и генерацию схем баз данных (как правило, на языке SQL) для наиболее распространенных СУБД. К ним относятся ERwin (Logic Works), S-Designor (SDP) и DataBase Designer (ORACLE). Средства проектирования баз данных имеются также в составе CASE-средств Vantage Team Builder, Designer/2000, Silverrun и PRO-IV;
+- средства разработки приложений. К ним относятся средства 4GL (Uniface (Compuware), JAM (JYACC), PowerBuilder (Sybase), Developer/2000 (ORACLE), New Era (Informix), SQL Windows (Gupta), Delphi (Borland) и др.) и генераторы кодов, входящие в состав Vantage Team Builder, PRO-IV и частично - в Silverrun;
+- средства реинжиниринга, обеспечивающие анализ программных кодов и схем баз данных и формирование на их основе различных моделей и проектных спецификаций. Средства анализа схем БД и формирования ERD входят в состав Vantage Team Builder, PRO-IV, Silverrun, Designer/2000, ERwin и S-Designor. В области анализа программных кодов наибольшее распространение получают объектно-ориентированные CASE-средства, обеспечивающие реинжиниринг программ на языке С++ (Rational Rose (Rational Software), Object Team (Cayenne)).
+
+Вспомогательные типы включают:
+
+- средства планирования и управления проектом (SE Companion, Microsoft Project и др.);
+- средства конфигурационного управления (PVCS (Intersolv));
+- средства тестирования (Quality Works (Segue Software));
+- средства документирования (SoDA (Rational Software)).
+
+# Литература
+https://studfile.net/preview/1851772/page:37/

+ 78 - 0
Лекции/Программирование и дизайн/Почему дизайн программного обеспечения важен для вашего приложения.md

@@ -0,0 +1,78 @@
+# Почему дизайн программного обеспечения важен для вашего приложения
+![photo](https://appmaster.io/cdn-cgi/image/width=1024,quality=83,format=auto/api/_files/tcjQLNYtN7UWPTWMwi9Me6/download/)
+Разработчики любят программировать. Разработка программного обеспечения — это написание кода, потому что сложные коды помогают разработчикам разрабатывать простое программное обеспечение с большой полезностью. И в этом нет ничего плохого, поскольку это важная часть их работы. Небольшие проекты можно выполнять, сразу переходя к кодированию и игнорируя любое предварительное планирование и разработку программного обеспечения. Однако большие проекты и сложные задачи требуют гораздо большего, чем просто кодирование. Когда задействовано более одного разработчика, требуется больше дисциплины и структуры. В основном требуется разработка программного обеспечения.
+# Что такое дизайн программного обеспечения
+Прежде чем перейти к преимуществам хорошего дизайна программного обеспечения, давайте разберемся, что такое дизайн программного обеспечения.
+Дизайн программного обеспечения относится к подготовке, планированию и компоновке кода программного обеспечения. Это означает начинать кодирование с организованных шагов и планов, а не резко. Его определение простое, но разработка программного обеспечения требует дополнительных усилий. Тем не менее, вы поймете его ценность позже.
+Дизайн позволяет достичь высочайшего уровня абстракции, что позволяет лучше понимать и удовлетворять цели. Избегается дублирование, а возможность повторного использования повышается благодаря дизайну. Это также самый эффективный метод снижения рисков, о которых вы не подозреваете.
+Кроме того, проектирование программного обеспечения позволяет как владельцам программного обеспечения, так и программистам понять, как приложение будет работать, а также определить, как оно будет выглядеть. В результате дизайн программного обеспечения должен сочетать в себе производительность, информацию и удобство, чтобы даже ребенок мог использовать приложение без необходимости учиться его использовать. Это то, что определяет удобный дизайн.
+# Преимущества хорошего дизайна программного обеспечения для вашего приложения
+Дизайн программного обеспечения разделяет и организует разработку программного обеспечения на различные этапы. И это помогает программисту знать свои дальнейшие действия и то, как связан весь код. Таким образом, проектирование программного обеспечения является одним из наиболее важных шагов в разработке вашего приложения.
+Вот несколько причин, по которым вы можете попробовать разработать программное обеспечение.
+# Детальное планирование
+Когда клиент предъявляет требования разработчику, разработчик думает о решении проблемы. Дизайн программного обеспечения требует от разработчика подробного планирования перед написанием кода. Сначала он думает о реализации кода и его практичности.
+При детальном планировании учитываются первоначальный и первичный проект, а также будущие усовершенствования. Кроме того, разработчик анализирует производительность, обслуживание и надежность программного приложения. Кроме того, это дает разработчикам возможность заглянуть в будущее программного обеспечения. Поэтому вам нужно быть осторожным и планировать соответственно.
+Планируйте проект перед кодированием
+Решайте проблемы заранее, чтобы избежать проблем позже
+Найдите способы реализовать код и проявите творческий подход
+Объясните и поймите программное приложение
+Дизайн программного обеспечения важен как для разработчика, так и для клиента. В ходе этого процесса разработчик понимает фактические требования программного приложения и целевую аудиторию. Сметная стоимость и осуществимость реализованы в значительной степени.
+Рассматриваются планы клиента на будущее и то, как со временем будет трансформироваться программное обеспечение. При разработке программного приложения разработчик постоянно получает обратную связь от клиента. Дизайн программного обеспечения используется, чтобы убедить и получить одобрение на реализацию дизайна. Это также обеспечивает производство идеального продукта.
+Понимание требований для получения идеальных результатов
+Не упускайте из виду ценовой фактор, иначе клиент отступит
+Разработать программный проект с учетом его планов на будущее
+# Модульность помогает добиться успеха
+Модульность означает разделение вашего большого программного проекта на части или части, называемые модулями. Это означает, что вместо того, чтобы слепо прыгать на крышу, используйте ступеньки и доберитесь до вершины. Таким образом, модульность упрощает вашу работу. Работайте над одним модулем/частью за раз, завершайте его и переходите к следующему.
+Однако модульность играет более важную роль, когда речь идет о клиентах и ревизиях. Программные проекты используются годами и десятилетиями с регулярными обновлениями и улучшениями. Вашим клиентам, вероятно, потребуются изменения в будущем. Вы сможете быстро вносить изменения и улучшения, а также реструктурировать конкретные модули. Все программное обеспечение не будет нарушено.
+Итак, используйте модульность, чтобы сделать программное обеспечение простым и высокофункциональным. Вот почему ваше приложение нуждается в разработке программного обеспечения.
+Не разрабатывайте программный проект целиком
+Разделяй и упрощай
+Назначьте разные модули с определенными функциями
+Легко вносите изменения и обновляйте программное приложение
+# Дизайн программного обеспечения делает ваше программное обеспечение простым для понимания
+Дизайн программного обеспечения — это план процесса разработки вашего приложения. В нем есть все, что нужно знать программисту, чтобы продолжать создавать или улучшать приложение. Если процесс разработки приложения передается другому разработчику, он будет знать, как действовать без каких-либо затруднений, прочитав дизайн программного обеспечения.
+Рассматривайте дизайн программного обеспечения как план
+В нем должно быть все, что связано с приложением
+Предлагайте решения для каждой возможной проблемы
+Тот, у кого есть дизайн/схема программного обеспечения, будет знать, как его обойти.
+Таким образом, дизайн программного обеспечения жизненно важен для вашего приложения, чтобы сделать его простым в использовании и понимании.
+# Простое обслуживание
+Программные приложения нуждаются в регулярном обслуживании. Будут ошибки, которые нужно удалить, обновления и реструктуризация. Иногда в программном приложении потребуются изменения только для определенных вещей. Весь программный проект не может подвергаться риску из-за незначительных ошибок и существенных обновлений. При разработке программного обеспечения каждая задача имеет отдельный модуль, и разработчик сможет улучшить программное приложение, только настроив соответствующий модуль.
+Отдельные модули для разных функций
+Удаление ошибок с конкретными изменениями
+Легко структурируйте и реструктурируйте модули
+# Отображение производительности программного обеспечения
+Производительность программного обеспечения можно проанализировать с помощью проектирования программного обеспечения. Хороший дизайн программного обеспечения показывает, как приложение работает во время работы. Поток функций виден и демонстрирует, как различные функции влияют на производительность приложения.
+Программист может выявить проблемы и улучшить производительность приложения посредством разработки программного обеспечения. Таким образом, дизайн программного обеспечения имеет решающее значение на каждом этапе разработки программного обеспечения.
+Такая прозрачность также помогает новым разработчикам с легкостью использовать существующие программные приложения. Им не придется начинать с самого начала или стрелять стрелами в темноте.
+Дизайн программного обеспечения похож на демонстрацию
+Разработчик должен анализировать производительность приложения через него.
+Различные функции могут быть изучены, а затем согласованы друг с другом
+Постарайтесь максимально улучшить производительность в демоверсии
+# Разработка программного обеспечения вызывает доверие
+Если программное приложение имеет обширный дизайн и планы, оно является аутентичным и заслуживающим доверия. Это показывает, что разработчик или владелец потратил свое время, усилия и деньги на его разработку. Это важный этап разработки программного обеспечения, который делает его надежным и заслуживающим доверия, поскольку он предоставляет полный план его будущего.
+Кроме того, хороший дизайн программного обеспечения заранее обеспечивает решение любой проблемы.
+Это показывает серьезность и деловой ум
+Повышает надежность и доверие
+Он охватывает весь проект и планы на будущие обновления.
+# Дизайн программного обеспечения экономит деньги, время и усилия
+Дизайн программного обеспечения и экономическая эффективность тесно связаны между собой. Разработка огромного программного приложения без предварительного макета и планирования сопряжена со значительным риском. Если результат не гарантирован на 100%, это игра на удачу. Что, если вы зайдете в тупик, из которого нет выхода? Будет ли перезапущен проект с нуля? Или вообще отказаться. В обоих случаях это пустая трата денег, времени и усилий.
+Вместо этого сначала спроектируйте программный проект, а затем приступайте к его разработке. Таким образом, риск отказа многократно снижается, поскольку рассматриваются все возможности. Процесс разработки программного обеспечения становится безопасным, когда у вас заранее есть решения для конкретных проблем.
+Это требует времени, усилий и денег до начала проекта
+Это экономит время, усилия и деньги после запуска проекта
+Дизайн программного обеспечения доказывает возможность или невозможность проекта
+# Возможность создать что-то новое
+Разработка программного обеспечения заключается в поиске решения. Разработчик открывает новые возможности и пробует новые конструкции. Новая модель может быть произведена после добавления новых функций, некоторых удалений и корректировок. Поэтому очень важно планировать и экспериментировать перед кодированием.
+Разработка программного обеспечения — это творческий процесс
+Разработчик должен думать и переосмысливать
+Модули структуры и реструктуризации
+Дает возможность создать что-то новое и эксклюзивное
+# Дизайн программного обеспечения способствует уникальности
+Благодаря критической проверке программного обеспечения разрабатываются уникальные функции. Решение различных проблем различными способами и их интеграция в приложение способствует уникальности. Это также делает программное обеспечение адаптируемым, которое может быстро адаптироваться к новым способам преодоления трудностей.
+Однако фактом является то, что разработка программного обеспечения требует времени и усилий. Люди с видением и долгосрочным планом знают преимущества хорошего программного обеспечения.
+Это возможность проявить творческий подход и создать что-то уникальное. Разработка программного обеспечения требует усилий, но оно того стоит
+# Гибкость
+«Изменение» — единственная константа в программных приложениях. Они нуждаются в постоянных изменениях, обновлениях и улучшениях. Поэтому программное приложение должно быть гибким. И гибкость может быть достигнута за счет разработки программного обеспечения. Когда есть несколько модулей, и каждый модуль имеет определенную функцию, легко добавить функции и функции или что-то удалить.
+Изменения могут быть внесены и в программные приложения, которые разрабатываются без проектирования программного обеспечения. Однако разработчику придется реструктурировать все программное приложение, что повлияет на каждую функциональность приложения. Таким образом, дизайн программного обеспечения делает программное приложение более гибким и легким для улучшения.
+ # Литература 
+ https://appmaster.io/ru/blog/pochemu-dizain-programmnogo-obespecheniia-vazhen-dlia-vashego-prilozheniia

+ 64 - 0
Лекции/Эволюция языков программирования/Эволюция языков программирования.md

@@ -0,0 +1,64 @@
+# Эволюция языков программирования
+## Доисторическая эра
+С точки зрения определения даты рождения языка программирования существует некоторая двойственность.
+
+С одной стороны, в первой половине 19 века Ада Лавлейс описала вычислительную машину и ввела основополагающие понятия цикла и рабочей ячейки, за что получила гордое звание первой женщины-программиста.
+
+С другой, первый язык программирования в современном представлении зародился лишь во время Второй мировой войны на релейной машине Z4 немецкого изобретателя Конрада Цузе. Его название Планкалкюль (нем. Plankalkül — исчисление планов), и это был полноценный язык высокого уровня, поддерживающий условные операторы, арифметические операции, массивы, циклы, исключения и утверждения. Доподлинно известно, что в конце 40-х годов Планкалкюль позволял ЭВМ решать шахматные задачи.
+Изобретение Цузе могло бы изменить ход истории, однако итоги войны и усилия американцев по популяризации собственного машинного языка отложили полноценное явление миру Планкалкюля вплоть до 1972 года.
+![Photo](https://habrastorage.org/r/w1560/files/9fd/53c/ab7/9fd53cab768348d1972df292f411595e.jpg)
+
+## Языки для компьютеров
+Вместо этого эволюция пошла по пути машинного языка. Он был удобен для компьютеров, но не очень удобен для программистов. Это была буквально работа с железом вручную: были лишь те команды, которые были зашиты в процессор, все остальные операции приходилось реализовывать вручную.
+
+Прямым развитием машинного языка стал язык ассемблера. Это был первый размен скорости на удобство: ассемблер был чуть менее нативным, но гораздо более дружелюбным к программисту. До языков высокого уровня, комфортных для программиста, было еще далеко.
+
+Качественный скачок произошёл после изобретения транзистора и первых доступных компьютеров. Это побудило в период с 1954-1957 году компанию IBM активно работать над разработкой популярного коммерчески языка Fortran (от англ. Formula и Translation).
+Fortran — язык для научных и инженерных вычислений. Считается, что именно он стал первым реализованным языком высокого уровня. Благодаря большому количеству математических библиотек Fortran был и остается важным языком для разного рода научных изысканий.
+Далее началось бурное развитие программирования: практически одновременно появились Algol, алгоритмический высокоуровневый язык, активно использовавшийся в СССР и Европе, LISP и COBOL.
+
+## Языки для народа
+Но по-настоящему массовым программирование стало с появлением языка BASIC в 1964 году. Преподаватели Дартмутского Колледжа Джон Кемени и Томас Курц разработали его для обучения студентов основам программирования ЭВМ.
+
+BASIC был алгоритмическим языком, для его создателей было важно не быстродействие и эффективность, а легкое понимание. Тем не менее BASIC быстро обрёл популярность в реализациях от Microsoft и Apple. Но не все были им довольны. По мнению противников языка простота и бесструктурность ранних версий BASIC поощряли применение порочных и опасных методик разработки.
+
+«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они умственно изувечены без надежды на восстановление».
+Эдсгер Дейкстра.
+
+## Кайнозой
+В 1960-х годах компания Bell Labs всерьёз взялась за разработку операционной системы Unix для своих миникомпьютеров. Первые ОС были написаны на ассемблере, но эксперимент оказался неудачным.
+Потом в алфавитном порядке Кеном Томпсоном и Деннисом Ритчи был специально разработан интерпретируемый язык B (Би), но и в этот раз результат оставлял желать лучшего.
+
+Всё изменилось с третьей попыткой в 1972 году и языком C, который оказался настолько успешным, что и спустя 40 лет занимает важное место в разработке ПО. Например, по данным IEEE Spectrum С в 2015 году стоял на втором месте: «The 2015 Top Ten Programming Languages».
+
+В другом полушарии на останках языка Algol-68 Никлаус Вирт разработал Pascal. Цель он преследовал ту же самую, что и BASIC — простота в обучении и наглядность выполняемых операций.
+
+Несмотря на внешнюю незамысловатость, Pascal оказался крайне эффективным языком не только в деле обучения, но и в серьезной разработке. Он остаётся крайне востребованным как в школах, так и в мире больших приложений: Total Commander, WinRAR, ранние версии Skype и Nero Burning ROM были написаны на Pascal.
+
+В конце 1970-х были сформированы принципы ООП, на основе которых был доработан язык C, получив сперва название «С with classes», а потом более привычное взгляду C++. Отчасти из-за совершенства творения, отчасти из-за славы одного из первопроходцев, C++ долгое время оставался самым востребованным языком. На нём были написаны операционные системы Symbian, Windows и OS X, браузеры Google Chrome и Mozilla, и ещё тысячи популярных приложений.
+
+Через четыре года после появления первой версии C++ Ларри Уолл разработал Perl — «практичный язык для извлечения данных и составления отчётов» (Practical Extraction and Report Language). Изначально язык обрёл популярность благодаря функциям, заложенным в названии, однако позднее расширил свои возможности и аудиторию.
+
+Сегодня Perl по-прежнему активно используется в качестве удобного средства обработки текста в командной строке, но не меньше востребован и в системном администрировании, веб-разработке и даже играх.
+
+
+## Современность
+
+В статье об истории эволюции языков просто обязан упоминаться Python, горячо любимый не только преподавателями GeekBrains, но и, судя по широте использования, многими иностранными университетами и крупными зарубежными компаниями. Его структура и философия направлены на то, чтобы ускорить разработку готового продукта программистом. С точки зрения развития, это куда более совершенный язык, нежели все существовавшие до 1991 года. Он минималистичен, но при этом более читабелен, достаточно часто обновляется и прекрасен по соотношению «скорость — качество разработки».
+
+Впрочем, теми же самыми характеристиками можно описать и Ruby, увидевший свет в 1995 году, с поправкой на то, что у Юкихиро Мацумото было 2 года, чтобы подумать, чем его язык может стать лучше современников.
+
+Развитие интернета в конце XX века требовало более качественных языков обработки текста и данных. Так на свет появились HTML, PHP, CSS и JavaScript, без которых сегодня очень трудно представить веб-разработку.
+
+Вместе с этим появился и Java — объектно-ориентированный язык, использующий виртуальную машину JVM. Это обеспечивает языку практически полную независимость от машины, на которой производится запуск. Совокупность этих факторов и популярность смартфонов c ОС Android позволяет Java возглавлять список самых популярных языков по версии Tiobe, а нам — рекомендовать его начинающим разработчикам в качестве первого или основного.
+
+Если взглянуть на этот же самый рейтинг, в конце второго десятка можно отыскать современные языки программирования. Например, Swift — продукт компании Apple, популярный не только за счет своих качеств, но и благодаря громкому имени производителя.
+
+
+## Будущее
+
+Уже сейчас появляются языки программирования, которые можно назвать языками сверхвысокого уровня. Они предназначены не для написания прикладных программ, а для обработки больших массивов данных и статистики. В их числе R, MATLAB и Julia.
+Можно предполагать, что в будущем появятся человекоориентированные языки, на которых написать программу будет не сложнее, чем пост в ЖЖ. С другой стороны, квантовые компьютеры потребуют свой особый, квантовый ассемблер.
+
+## Литература 
+https://habr.com/ru/companies/geekbrains/articles/282788/