Ассоциация ACM (Association for Computing Machinery — ассоциация по вычислительной технике) была основана в 1947 году как международная научная и образовательная организация, содействующая развитию гуманитарных и естественных наук и информационных технологий. Эта организация, штаб-квартира которой находится в Нью-Йорке, включает в себя множество разных специальных групп, занимающихся такими вопросами, как архитектура ЭВМ, искусственный интеллект, биомедицинские вычисления, компьютеры и общество, образование в области вычислительной техники, компьютерная графика, гипертекст/гипермедиа, операционные системы, языки программирования, моделирование и разработка программного обеспечения. Веб-сайт ассоциации находится по адресу http://www.acm.org.
Еще одно отличие связано с недостаточным количеством систем для измерения характеристик программного обеспечения, которые называются метриками (metric). Качество механических устройств часто измеряется средним временем между сбоями в работе, при этом измеряется, насколько устройство устойчиво к износу. Программное же обеспечение не изнашивается, поэтому для него не подходит такой метод оценки качества.
|
|
Невозможность количественно оценить свойства программного обеспечения является одной из главных причин того, что разработка программного обеспечения не имеет такой твердой основы, как машиностроение и электротехника. В то время как эти дисциплины основываются на физике, разработка программного обеспечения все еще нуждается в научной базе. Состояние разработки программного обеспечения сегодня похоже на состояние машиностроения в начале XVII века до того, как Исаак Ньютон и другие ученые обнаружили, что можно измерить и найти математическую зависимость между такими характеристиками, как масса, ускорение и сила.
Исследования в области программного обеспечения в настоящее время развиваются в двух плоскостях: некоторые исследователи, которых иногда называют практиками, разрабатывают методы создания приложений, а другие, теоретики, занимаются поиском основных принципов и теорий, из которых можно построить более прочную методику создания программного обеспечения. Поскольку многие методики, созданные практиками в прошлом, были субъективными, их заменили другие подходы, которые со временем также могут устареть. Между тем, успехи теоретиков также мимолетны.
Существует огромная потребность в методиках, разработанных и практиками, и теоретиками. Наше общество зависит от компьютерных систем и связанного с ними программного обеспечения. Наша экономика, здравоохранение, правительственные учреждения, транспорт и оборона опираются на большие системы программного обеспечения. Однако надежность этих систем остается главной проблемой. Ошибки в работе программного обеспечения привели к тому, что восход луны был принят за ядерное нападение, банк Bank of New York потерял 5 млн долларов за один день, к потере космической исследовательской ракеты Mariner-18, смертельным дозам радиации, обрыву телефонной связи на огромных территориях.
|
|
В то время как ученые продолжают искать способы создания более надежного программного обеспечения, профессиональные организации содействуют этому косвенно, поддерживая высокие нормы этики и профессионального поведения среди своих членов. Например, ассоциация ACM (Association for Computing Machinery — ассоциация по вычислительной технике) и объединение IEEE (Institute of Electrical and Electronics Engineers — институт инженеров по электротехнике и электронике) приняли кодексы профессионального поведения и профессиональной этики, которые повышают профессионализм разработчиков программного обеспечения и противостоят небрежному отношению к своим обязанностям.
В этой главе мы рассмотрим результаты некоторых исследований в области разработки программного обеспечения, включая основные принципы создания программного обеспечения (жизненный цикл программы, модульность и модели проектирования), а также некоторые инструменты разработки и методы, применяемые в настоящее время.