The Software Versioning System Explained
Software versioning is the process of numbering different releases of a particular software program for both internal use and release designation. It allows programmers to know when changes have been made and track changes enforced in the software.
At the same time, it enables potential customers to be acquainted with new releases and recognize the updated versions.
How to version my Software?
- Why do we need a version anyway? Well, you need some way to uniquely identify the software you have delivered.
- When you add extra information to it, it is also possible to give information about the state of your software.
Best practices for versioning my software
- New projects start at version 0.1.0
- You are starting with a set of features, not bug fixes.
- Increment the minor version for each subsequent release.
- Start versioning at 1.0.0 if:
- Your software is already used in production.
- Other users depend on your software and care when the API changes.
- You are worrying about backwards compatibility.
- The initial development phase is represented by MAJOR version 0
- Make as many breaking changes as you want before v1.0.0
- Once you have released v1.0.0, API adjustments or other breaking changes are not acceptable without a new MAJOR version change.
- If you are adding new features without breaking the existing API or functionality, increment the MINOR number.
- If you are fixing bugs, increment the PATCH number.
The Versioning Problem
It is common for some users of software to ignore how to interpret the sequence of numbers and letters that we usually call version and from there lose all associated information.
It may actually be difficult to understand a software versioning scheme, as there is no one-size-fits-all model. On the contrary, there are multiple versioning schemes with different precepts and characteristics.
Switching away from software version numbers to years seems like one of the wisest decisions.
Users don’t care about version numbers. | A model year is easy to understand. | Version numbers don’t scale. |
Major, minor, alpha, beta, build number.. what does it all mean? What users might care about is knowing whether or not the software they’re running is current. | Why should it take two arbitrary numbers and a decimal point to identify what software you’re using? We identify tons of consumer products using a simple model year designator. | Once you get beyond ten versions, what’s the point of meticulously counting every new release? Better to stamp it with a date and move on. |
Who should care about software version numbers?
As a software consumer, the two most important things to understand when reading software version numbers are:
- What (if any) numbering convention is being used?
- What changes have been made to the updated version?
- Enterprise Software Customers: Understand how the provider presents software version numbers.
- Product Development Team: Developers should use software version numbers to help their customers understand how their product has changed and what kind of support they can expect for older versions.
- Software Consumers: Even individual consumers such as smartphone users encounter software version numbers on a regular basis.
Software Version Conventions Done Right
One of the most effective software version conventions involves semantic numbering. Other software version numbering conventions include, date-of-release, alphanumeric codes, sequential numbering, and unary numbering.
Different Types of Versioning
There are numerous variations to think of how you can version your software. Which variation you choose is not so important as long as you keep the following aspects in mind:
- The version identifier must be unique, never re-use the same identifier;
- Choose an identifier which has some logical sequence in it, e.g. alphabetical, numbers.
There are quite a lot of different types of versioning schemes:
- Name Versioning Scheme: Another variant is to use names for your releases.
- Basic Versioning Scheme: Single incrementing digit (e.g. version 1, version 2, …).
- Internal Versioning Scheme: This is the versioning scheme which is visible for your users and which will be used when communicating about releases between you and your users.
Semantic versioning
Semantic Versioning is a 3-component number in the format of X.Y.Z, where given a version number MAJOR.MINOR.PATCH, increment the | |
MAJOR | when you make incompatible API changes, |
MINOR | when you add functionality in a backwards-compatible manner, and |
PATCH | when you make backwards-compatible bug fixes. |
Version by number: Something common is to handle versions using 3 numbers: X.Y.Z and each one indicates a different thing.
Version by stability: In addition to having versions by numbers, we can add a classification for project stability.
The options we have for this are: Alpha, Beta. Alpha: is an unstable version that is very likely to have many options to improve. Beta: a more stable version than Alpha in which we have the product in its entirety. Patch Version: In the case of patches we can add a digit to indicate the patch: X.Y.Z.Patch
Version by date: We would need to know exactly the date the software was published.
- Public version is intended to be simple and memorable, indicating to customers that it is new & shiny (assuming people generally want “new & shiny”). People don’t understand “10.6.6527.14789” – but they get “2013” or “5”.
- “Windows 7”, “iPhone 5S”, “Office 2013” – are all examples of a public version.
- Private version is what we’re used to in the software world. An internal stamp that (hopefully) uniquely identifies a particular piece of software.
Software versioning is a simple way of how to give a “name” to a unique part of the software. With just a few numbers, you can convey a lot of information about your project’s developmental progress, let users know when there are new important updates, and generally keep things organized. No matter what scheme you decide to use it will be ok as long as it is comprehensible for developers, testers and users.
Also for the QA area is easy when working with continuous integration due to the easy of download the build to test and send it and approve it.
About 4Geeks: 4Geeks is a global product development and growth marketing company, and all-in-between, focused on 10X ROI for startups, small and mid-size companies around the world. 4Geeks serves industries like E-Commerce & Retail, Startups, HealthTech, Marketing, Banking & FinTech and Real Estate. Headquartered in United States, and nearshore development centers in Mexico and Costa Rica. Pura Vida!
Want to start a distributed engineering team? Start right here.
About 4Geeks
Founded in 2012 by Allan Porras, 4Geeks is a global software engineering and revenue growth consulting firm for Fortune 500, Global 2000 and fast-growing SMBs. Provides top solutions to multiple industries including Retail, Healthcare, Banking & Financial Services, B2B SaaS, Manufacturing and Education. HQ in the USA, and delivery centers across Latin America.
Weekly Business Newsletter
Actionable Revenue Growth Tips
Get weekly free advice to build, grow and scale a profitable tech-based business. Learn the same tactics we use everyday to win customers.
Read by over 4000 startup founders.
- 4Geeks is a global revenue growth firm (Engineering + Data + Marketing) for Fortune 500, Global 2000 and fast-growing startups, that designs, builds and grows Internet-based businesses. Nearshore offices across Latin America.
- 2711 Centerville Road, Wilmington, DE 19808 USA
- San Jose, Costa Rica
- +1 (646) 713-0607
Company
Products
- 4Geeks Payroll
- 4Geeks Talent
- 4Geeks Payments
- 4Geeks Links
- 4Geeks Memberships
- 4Geeks Shops
Software — это что такое? Что за программа Software?
Любой пользователь компьютера каждый день сталкивается с таким понятием, как Software. Это и неудивительно, ведь современное понимание этого термина трактуется как «программное обеспечение», или, сокращенно, «ПО» («софт»). Рассмотрим некоторые важные аспекты, касающиеся типов ПО и взаимосвязи с остальными компонентами компьютерных систем. Итак, что такое Software?
Общие понятия
В общем смысле Software – это набор команд, директив по их исполнению на основе какого-либо языка программирования, программа или набор программ, отвечающих за взаимодействие не только между пользователем и компьютерной системой, но и между так называемыми железными компонентами компьютера или другими приложениями, созданными для определенных целей.
В зависимости от возложенных на программное обеспечение функций, весь софт можно разделить на несколько классов, о чем будет сказано несколько позже.
Hardware и Software: отличия и взаимосвязь
Толкование этих двух терминов возникло с появлением первых компьютеров. Сегодня принято считать, что Hardware – это аппаратная часть компьютера («железные» компоненты), которую можно пощупать руками (материнские платы, процессоры, оперативная память, периферия и другие устройства в самой системе или подключаемые к ней).
Совершенно противоположное толкование у термина Software. Перевод можно представить дословно как «мягкое изделие». В более широком смысле подразумевается то, что программу нельзя потрогать, она представляет собой в каком-то смысле даже некий виртуальный компонент.
И, что самое интересное, для обеспечения использования «железа» или доступа к его возможностям в обязательном порядке должно применяться специальное ПО в виде специальных управляющих программ, отвечающих за работоспособность таких устройств (драйверы, наборы команд ввода/вывода BIOS и т. д.).
Сам термин Software, перевод и трактовка которого сейчас используются повсеместно именно в контексте программного обеспечения, даже на заре развития компьютерной техники не был в обиходе. И только в начале 60-х годов прошлого столетия сформировался окончательно. Связано это было с введением четкого разграничения команд, отвечающих за управление аппаратной частью компьютера, и конечным пользователем. Взаимосвязанные классы (Software и Hardware) стали называть программно-аппаратными комплексами.
Классификация программного обеспечения по нескольким критериям
Поскольку Software – это именно программная часть любой компьютерной системы, такое ПО можно разделить на несколько больших категорий исходя из возложенных на него задач. Так, например, по использованию и тиражированию ПО разделяют на корпоративное (выполненное на заказ для крупных фирм и компаний) и ПО для широкого круга пользователей.
По критерию переносимости программы могут быть платформозависимыми (работающими исключительно в одной среде и с одним типом «железа») и кроссплатформенными (адаптированным к совершенно разным системам).
По типу распространения ПО можно разделить на закрытые программы, открытые (касательно исходного кода Open Source с лицензией GNU) и свободные. Кроме того, сюда нередко включают бесплатное, платное и условно-бесплатное программное обеспечение. Последний тип приложений имеет полную или частично ограниченную функциональность в течение определенного периода времени, по истечении которого, программу придется купить. В противном случае она перестанет работать.
А вот по назначению классификация подразумевает наличие трех больших категорий программного обеспечения:
- системное;
- прикладное;
- инструментальное (средства разработки, инструменты и утилиты).
Системное ПО
В качестве системных компонентов выступают не только приложения в обычном понимании. На самом деле операционные системы тоже являются программами.
Однако зачастую системное ПО можно представить себе в виде некой прослойки, связывающей пользовательские программы со средой операционной системы, в которой они функционируют, и аппаратной частью, задействованной при выполнении той или иной задачи (например, те же драйверы устройств).
Чтобы было понятнее, приведем простейший пример. Возьмем операционную систему Windows (системная прослойка), звуковую карту («железо») и проигрыватель мультимедиа (прикладное ПО). Чтобы саундкарта могла воспроизвести звук, нужен драйвер (системное ПО), обеспечивающий управление устройством самой операционной системой, которая является и платформой для проигрывателя. Поскольку система распознает устройство, посредством своих директив она передает управление ним плееру, для распознавания типа звукового файла использующему специальные кодеки и декодеры (дополнительные программные инструменты). Взаимосвязь очевидна.
Прикладные программы
К прикладным программам относят все те приложения, которые не управляют компонентами системы или используют их только частично, а решают строго определенные конкретные пользовательские задачи.
Примеров сегодня можно привести очень много: офисные пакеты, редакторы мультимедиа, системы математических вычислений и проектирования, средства доступа в интернет и управления сетями, архиваторы и т. д. Как видим, каждый тип программного обеспечения (Software) – это инструмент, ориентированный на выполнение узкого круга задач и взаимодействующий непосредственно с пользователем цельной компьютерной системы.
Инструменты и утилиты
К инструментам относят программное обеспечение для разработки и сопровождения других типов ПО. Сюда можно включить платформы языков программирования, среды разработки, пакеты SDK, системы отслеживания ошибок и контроля версий.
Что касается утилит, то под ними часто подразумеваются программные продукты для настройки параметров аппаратных и/или программных компонентов, входящих в в объединенную компьютерную систему, без применения которых доступ к настройкам другими методами не может быть осуществлен. Такое ПО может быть встроенным в операционные системы или устанавливается отдельно. В некоторых случаях утилиты могут задействовать полную автоматизацию настроек (например, приложения-оптимизаторы для исправления ошибок и улучшения работы Windows-систем).
Вместо послесловия
Наконец, стоит отметить, что у многих пользователей зачастую возникает еще один вопрос насчет термина Software: «Что это за программа?» Такая постановка вопроса несколько некорректна, поскольку, как уже было сказано выше, это может быть не только единичное приложение, но и совокупность программ, набор языковых команд, директив и правил языка программирования для управления другими компонентами или передачи их для обработки и выполнения в виде двоичного кода, скажем, центральному процессору.
Приведенная классификация тоже весьма условна, ведь в описании были представлены только основные типы ПО без дальнейшего разделения на подклассы, которых сегодня можно насчитать очень и очень много. Но для первичного понимания самого термина Software рядовому пользователю может хватить и этих знаний.
Apple Software Update: что это за программа и можно ли от нее избавиться?
Многие пользователи Windows-систем достаточно часто обнаруживают у себя на компьютере «яблочные» апплеты, совершенно не понимая, откуда они взялись и как от них избавиться. Одним из таких приложений является Apple Software Update. Что это за программа, попробуем разобраться. Также затронем вопросы, связанные с целесообразностью ее содержания в Windows.
Apple Software Update: что это за программа?
Начнем с того, что многие пользователи встречают эту вспомогательную утилиту только потому, что предварительно инсталлировали какие-то «яблочные» программные продукты, рассчитанные на работу в Windows-системах.
То же приложение iTunes, предназначенное для синхронизации мобильных устройств от Apple с операционными системами Windows, в процессе инсталляции основной программы самостоятельно инсталлирует дополнительные модули вроде Bonjour и Apple Software Update. Что это за программа и можно ли ее удалить, давайте рассмотрим несколько подробнее.
Для чего нужен этот апплет?
Прежде всего стоит обратить внимание на само название этого приложения. Ведь если его перевести, по большому счету назвать данный апплет можно инструментом автоматического обновления программных продуктов Apple, которые, по идее, присутствуют на пользовательском компьютере.
Да, действительно, установка самых свежих обновлений вопросов не вызывает. Но ведь иногда случается и так, что в смысле конкуренции данная служба начинает пытаться получить максимальный приоритет над исполняемыми процессами Windows. А на этой почве, как уже понятно, не избежать появления конфликтов. И во всем этом, как оказывается, виновна одна-единственная служба — Apple Software Update. Что это за программа, нужна ли она на компьютере, работающем под управлением Windows, сказать достаточно трудно. Если пользователю нужны обновления программных компонентов именно этого разработчика, тогда, естественно, удалять это приложение не стоит. В противном случае оно станет самым бесполезным инструментом, который только можно отыскать.
Как работает программа Apple Software Update?
Само приложение при установке, как уже понятно, не афишируется (в инсталляторе той же программы iTunes и намека нет на установку каких-то дополнительных компонентов).
Но этот апплет инсталлируется в фоновом режиме и точно так же начинает работать, когда пользователь об этом даже не догадывается.
Вот вам и официальный продукт Apple Software Update. Что это за программа, немного понятно. А теперь несколько слов о том, что она представляет собой на самом деле. В общем, это и есть самый обычный апдейтер, следящий за выходом самых свежих версий программных продуктов от Apple и своевременно их устанавливающий. Но нужно ли это пользователю Windows? Конечно же, нет. Обновить можно разве что iTunes. Так зачем держать такое приложение у себя на компьютере? Не проще ли от него избавиться?
Как удалить приложение стандартным способом?
Теперь перейдем к практическим взглядам на Apple Software Update. Что это за программа, как удалить ее и избавиться от остатков, сейчас и посмотрим.
Самым простым решением можно назвать обращение к разделу программ и компонентов, который находится в стандартной «Панели управления». В списке нужно просто выделить искомый апплет и удалить его стандартным методом. Обратите внимание, что, если отсортировать программы по издателю, из приложений Apple желательно деинсталлировать и все остальное.
После этого придется использовать редактор реестра (regedit), где потребуется найти все записи, так или иначе связанные с Apple, с полным удалением. То же самое касается остатков, которые могут быть обнаружены в «Проводнике». По окончании всех процедур, конечно же, желательно запустить какой-то оптимизатор и почистить реестр или жесткий диск.
Как использовать деинсталляторы?
Но проще всего обратиться к программам вроде iObit Uninstaller, которые способны удалять любые приложения (даже встроенные в оболочку операционной системы) целиком и полностью.
Здесь порядок действий таков:
- запускаете программу;
- в списке установленных приложений находите нужные компоненты и удаляете их;
- включаете мощное сканирование;
- удаляете остатки с активацией строки уничтожения файлов.
По завершении процедуры рестарт системы обычно не требуется, но на всякий случай его лучше произвести, дабы пребывать в полной уверенности по поводу максимально полного удаления и основной программы, и ее сопутствующих продуктов.
Кстати сказать, если удалить все ключи реестра, которые будут найдены, основное приложение вроде iTunes может перестать работать. Так что в этом случае придется избавляться от записей избирательно. Отдельное внимание уделите расположению файлов.
Вполне возможно, что апплет Bonjour создаст собственную копию, которая потом даже при отсутствии программного обеспечения от Apple все равно активируется и точно так же будет отслеживать обновления (если не сказать хуже).
Зато программы такого типа позволяют произвести удаление выбранного и сопутствующих программных продуктов настолько полно, что потом рыться в реестре или искать остатки в файловом менеджере не нужно вообще.
Итог
Как видим, все просто. Тут суть вопроса сводится к другому: насколько целесообразно держать такой обновитель на компьютере? Ведь, если разобраться, при одном установленном приложении iTunes вам апдейты для других программных продуктов, в общем-то, и не нужны. Но ведь программа их будет искать, вне зависимости от вашего желания. Поэтому избавляйтесь от нее немедленно, а попутно удалите и все остальное, включая Bonjour — приложение, которое, по сути, ничего интересного собой не представляет, но также относится к категории апплетов, выполняющих слежение за вашим компьютером, если вы вдруг соберетесь установить какую-то программу от Apple или даже войдете на сайт с рекламой программного продукта.
При подготовке материала использовались источники:
https://blog.4geeks.io/software-versioning/
https://fb.ru/article/263833/software—eto-chto-takoe-chto-za-programma-software
https://fb.ru/article/369106/apple-software-update-chto-eto-za-programma-i-mojno-li-ot-nee-izbavitsya