Программы «большие» и «маленькие»
Основная тема данного курса — методы разработки «больших» и сложных программ.
Каждый человек хоть раз написавший какую-либо программу, достаточно хорошо может представить себе, как разработать «небольшую» программу, решающую обычно одну конкретную несложную задачу и предназначенную, чаще всего, для использования одним человеком или узкой группой людей.
Примером может служить программа, вычисляющая достаточно много (но не слишком, не больше 30000) знаков числа π.
Воспользуемся следующими формулами.
arctan(x) = x – x3/3 + x5/5 – x7/7 + … + (-1)nx2n+1/(2n+1) + O(x2n+3) π/4 = arctan(1) = 4*arctan(1/5) – arctan(1/239)
Соответсвующая программа на языке Java может выглядеть примерно так.
public class PiCalculator
{
//Позволяет при вычислениях с повышенной точностью умножать и делить на числа
//<= 42949 = ( 2^32 mod CLUSTER_SIZE )
//Эта константа должна быть степенью 10 для простоты представления чисел. private final static long CLUSTER_SIZE = 100000;
//Определенное значение этого поля позволяет сосчитать
// numberOfClusters * lg( CLUSTER_SIZE ) //точных цифр.
private static int numberOfClusters;
private static void print(long a[])
{
for(int i = 0; i < numberOfClusters + 1; i++)
{
if (i == 0) System.out.print("" + a[i] + '.'); else
{
StringBuffer s = new StringBuffer(); long z = CLUSTER_SIZE/10;
while(z > 0)
{
if (z > a[i]) { s.append(0); z /= 10; } else break;
}
if (z != 0) s.append(a[i]); System.out.print(s);
}
Yandex.RTB R-A-252273-3- Предисловие
- Лекция 1. Проблемы разработки сложных программных систем
- Программы «большие» и «маленькие»
- Принципы работы со сложными системами
- Литература к Лекции 1
- Лекция 2. Жизненный цикл и процессы разработки ПО
- Понятие жизненного цикла ПО
- Модели жизненного цикла
- «Тяжелые» и «легкие» процессы разработки
- Унифицированный процесс Rational
- Экстремальное программирование
- Лекция 4. Анализ предметной области и требования к ПО
- Анализ предметной области
- Выделение и анализ требований
- Литература к Лекции 4
- Лекция 5. Качество ПО и методы его контроля
- Качество программного обеспечения
- Методы контроля качества
- Ошибки в программах
- Лекция 6. Архитектура программного обеспечения
- Анализ области решений
- Архитектура программного обеспечения
- Разработка и оценка архитектуры на основе сценариев
- Литература к Лекции 6
- Лекция 7. Образцы проектирования
- Образцы человеческой деятельности
- Многоуровневая система
- Литература к Лекции 7
- Лекция 8. Образцы проектирования (продолжение)
- Данные–представление–обработка
- Идиомы
- Шаблонный метод
- Образцы организации и образцы процессов
- Литература к Лекции 8
- Понятность
- Методы разработки удобного программного обеспечения
- Лекция 10. Основные конструкции языков Java и C#
- Платформы Java и .NET
- Целочисленные типы
- Инструкции и выражения
- Выражения
- Наследование
- Шаблонные типы и операции
- Описание метаданных
- Средства создания многопоточных программ
- Основные понятия компонентных технологий
- Общие принципы построения распределенных систем
- Лекция 13. Компонентные технологии разработки Web-приложений
- Web-приложения
- Платформа Java 2 Enterprise Edition
- Именование
- Работа с XML
- Отказоустойчивость
- Защита
- Работа с XML
- Литература к Лекции 13
- Уровень бизнес-логики и модели данных в J2EE
- Компоненты, управляемые сообщениями
- Уровень модели данных в .NET
- Уровень пользовательского интерфейса в J2EE
- Уровень пользовательского интерфейса в .NET
- Лекция 15. Развитие компонентных технологий
- Развитие технологий J2EE
- Java Data Objects
- Enterprise Java Beans 3.0
- Среда Spring
- Защита
- Литература к Лекции 15
- Лекция 16. Управление разработкой ПО
- Задачи управления проектами
- Окружение проекта
- Структура организации-исполнителя проекта
- Управление рисками