System Analysis
Application types
1. Types guide https://www.coderus.com/software-101-a-complete-guide-to-the-different-types-of-software/
Main types: webapps, mobile apps, desktop apps.
Далее можно дробить на:
- Application Software (Прикладное: Word, субд, медиа, почта и т.д.)
- System Software (Windows, iOS, Linux, Android, Windows phone, Apple's iOS и т.д.)
- Firmware (Firmware is software that’s stored on a computer’s motherboard or chipset.)
- Programming Software (IDEs, Gitlab, Github, Visual Studio etc)
- Driver Software (Driver software communicates with hardware and control devices and peripherals attached to a computer. Examples: graphic, network card, mouse, keyborad)
- Freeware
Freeware sounds like free software or open-source software but there’s a difference. Freeware software does not expose or share its source code. Yet the software owner does not charge others to use it.
Freeware licences vary as to what the software can be used for and who can share it. Some developers only allow their freeware for private or personal use. Businesses need a paid licence or get written permission. - Shareware
Like freeware, shareware is free to use and share with others, but only for a short time. It acts as an evaluation. You can try some or all of the features before committing to a purchase. - Open Source Software
Open source means you can explore the actual code that the app was written in. (Linux) - Closed Source Software
Most applications are closed source in that they do not expose the original code. Licences are stringent. No unauthorised copying or cracking is allowed. The app can be commercial or private but it requires payment of some kind to use. - Utility Software
Utility software is designed to analyse and optimise a device.
- Native apps are created for one specific platform or operating system.
- Web apps are responsive versions of websites that can work on any mobile device or OS because they’re delivered using a mobile browser.
- Hybrid apps are combinations of both native and web apps, but wrapped within a native app, giving it the ability to have its own icon or be downloaded from an app store.
Native:
Pros: Because of their singular focus, native apps have the advantage of being faster and more reliable in terms of performance. They’re generally more efficient with the device’s resources than other types of mobile apps. Native apps utilize the native device UI, giving users a more optimized customer experience.
And because native apps connect with the device’s hardware directly, they have access to a broad choice of device features like Bluetooth, phonebook contacts, camera roll, NFC, and more.
Cons: However, the problem with native apps lies in the fact that if you start developing them, you have to duplicate efforts for each of the different platforms. The code you create for one platform cannot be reused on another. This drives up costs. Not to mention the effort needed to maintain and update the codebase for each version.
And then, every time there’s an update to the app, the user has to download the new file and reinstall it. This also means that native apps do take up precious space in the device’s storage.
Web apps:
They’re actually responsive websites that adapt its user interface to the device the user is on. In fact, when you come across the option to “install” a web app, it often simply bookmarks the website URL on your device.
Pros: Because it’s web-based, there is no need to customize to a platform or OS. This cuts down on development costs.
Plus, there’s nothing to download. They won’t take up space on your device memory like a native app, making maintenance easier – just push the update live over the web. Users don’t need to download the update at the app store.
Cons: But this is also pertinent: web apps are entirely dependent on the browser used on the device. There will be functionalities available within one browser and not available on another, possibly giving users varying experiences.
And because they’re shells for websites, they won’t completely work offline. Even if they have an offline mode, the device will still need an internet connection to back up the data on your device, offer up any new data, or refresh what’s on screen.
(google maps, Twitter lite, etc)
Hybrid
These are web apps that look and feel like native apps. They might have a home screen app icon, responsive design, fast performance, even be able to function offline, but they’re really web apps made to look native.
Pros: Building a hybrid app is much quicker and more economical than a native app. As such, a hybrid app can be the minimum viable product – a way to prove the viability of building a native app. They also load rapidly, are ideal for usage in countries with slower internet connections, and give users a consistent user experience. Finally, because they use a single code base, there is much less code to maintain.
Cons: Hybrid apps might lack in power and speed, which are hallmarks of native apps.
Гибридное приложение – это вид мобильного приложения, которое сочетает в себе элементы нативных и веб-приложений. Оно разработано с использованием веб-технологий (например, HTML, CSS, JavaScript), но упаковано таким образом, чтобы работать как нативное приложение на мобильном устройстве. Это позволяет ему взаимодействовать с нативными функциями устройства, такими как камера, датчики, сохраненные данные и т.д. Вот несколько примеров гибридных приложений: Instagram: Одно из самых популярных гибридных приложений, использующее веб-технологии для обеспечения плавного пользовательского опыта. Uber: Приложение Uber для пользователей является гибридным, что обеспечивает быструю и эффективную работу на разных платформах. Twitter: Это еще один пример гибридного приложения, которое обеспечивает высокую производительность и плавность интерфейса. Gmail: Gmail также использует гибридный подход, чтобы предоставить пользователям удобный и функциональный интерфейс. Гибридные приложения популярны благодаря их способности работать на различных платформах с относительно меньшими затратами на разработку по сравнению с нативными приложениями. Однако они могут быть менее производительными в некоторых случаях и иметь ограничения в доступе к некоторым функциям устройств.
Types of Mobile Apps: How to Choose Just One
How to find flaws in the selected type of software:
- Тестирование Производительности: Это включает в себя нагрузочное тестирование и стресс-тестирование для проверки, как приложение справляется с большими объемами трафика и давлением.
- Тестирование Уязвимостей: Особенно важно для веб-приложений и гибридных приложений, которые могут быть подвержены веб-специфическим угрозам, таким как XSS (Cross-Site Scripting), CSRF (Cross-Site Request Forgery) и SQL-инъекции.
- Юзабилити Тестирование (Тестирование Удобства Использования): Проверка на интуитивно понятный и удобный пользовательский интерфейс, особенно важно для мобильных приложений, где ограничен размер экрана.
- Тестирование Совместимости: Особенно важно для гибридных и веб-приложений, чтобы убедиться, что они работают корректно на различных устройствах, браузерах и операционных системах.
- Тестирование Безопасности: Включает в себя проверку на утечки данных, неправильное управление доступом, и другие потенциальные уязвимости безопасности.
- Код Ревью: Анализ исходного кода на предмет потенциальных уязвимостей, плохих практик программирования и неэффективного использования ресурсов.
- Автоматизированное Тестирование: Использование инструментов для автоматического тестирования кода и интерфейса может помочь в обнаружении ошибок, которые могли быть упущены в ручном тестировании.
- Пользовательское Тестирование: Получение обратной связи от реальных пользователей может выявить проблемы, которые не были замечены разработчиками и тестировщиками.
Operating systems
1. Operation systems https://www.geeksforgeeks.org/types-of-operating-systems/
2. File system https://en.wikipedia.org/wiki/File_system
3. Virtual machine https://www.vmware.com/topics/glossary/content/virtual-machine.html
Operating System is a type of software that works as an interface between the system program and the hardware.
1. Десктопные операционные системы:
- Windows: Одна из самых популярных ОС в мире, разработанная Microsoft. Используется на персональных компьютерах, ноутбуках.
- macOS: Разработана Apple Inc. и используется на компьютерах Mac. Известна своей удобной и интуитивно понятной интерфейсной системой.
- Linux: Это семейство открытых и бесплатных операционных систем на базе ядра Linux. Существует множество дистрибутивов Linux, таких как Ubuntu, Fedora, Debian, которые подходят для разных типов пользователей.
2. Мобильные операционные системы:
- Android: Разработана Google и является самой популярной мобильной ОС в мире. Используется на множестве устройств от различных производителей.
- iOS: Операционная система от Apple, используемая на iPhone, iPad и iPod Touch.
- HarmonyOS: Разработана китайской компанией Huawei для использования на различных устройствах, включая смартфоны, планшеты и умные домашние устройства.
3. Операционные системы для серверов:
- Windows Server: Версия Windows, оптимизированная для серверов.
- Ubuntu Server, CentOS, Red Hat Enterprise Linux (RHEL): Популярные дистрибутивы Linux, используемые на серверах.
4. Встроенные операционные системы:
- RTOS (Real-Time Operating System): Операционные системы реального времени, используемые во встроенных системах, где требуются быстрые и предсказуемые времена реакции. Примеры включают FreeRTOS и VxWorks.
- Embedded Linux: Версия Linux, оптимизированная для встроенных систем.
5. Специализированные и нишевые ОС:
- Chrome OS: Разработана Google и используется в ноутбуках Chromebook. Основана на веб-приложениях и интеграции с сервисами Google.
- Tizen: ОС, разработанная Linux Foundation и поддерживаемая Samsung, для использования во всем, от смарт-часов и телевизоров до смартфонов.
- Batch Operating System: A Batch Operating System is a type of operating system that does not interact with the computer directly. There is an operator who takes similar jobs having the same requirements and groups them into batches.
- Time-sharing Operating System: Time-sharing Operating System is a type of operating system that allows many users to share computer resources (maximum utilization of the resources).
- Distributed Operating System: Distributed Operating System is a type of operating system that manages a group of different computers and makes appear to be a single computer. These operating systems are designed to operate on a network of computers. They allow multiple users to access shared resources and communicate with each other over the network. Examples include Microsoft Windows Server and various distributions of Linux designed for servers.
- Network Operating System: Network Operating System is a type of operating system that runs on a server and provides the capability to manage data, users, groups, security, applications, and other networking functions.
- Real-time Operating System: Real-time Operating System is a type of operating system that serves a real-time system and the time interval required to process and respond to inputs is very small. These operating systems are designed to respond to events in real time. They are used in applications that require quick and deterministic responses, such as embedded systems, industrial control systems, and robotics.
- Multiprocessing Operating System: Multiprocessor Operating Systems are used in operating systems to boost the performance of multiple CPUs within a single computer system. Multiple CPUs are linked together so that a job can be divided and executed more quickly.
- Single-User Operating Systems: Single-User Operating Systems are designed to support a single user at a time. Examples include Microsoft Windows for personal computers and Apple macOS.
- Multi-User Operating Systems: Multi-User Operating Systems are designed to support multiple users simultaneously. Examples include Linux and Unix.
- Embedded Operating Systems: Embedded Operating Systemsare designed to run on devices with limited resources, such as smartphones, wearable devices, and household appliances. Examples include Google’s Android and Apple’s iOS.
- Cluster Operating Systems: Cluster Operating Systems are designed to run on a group of computers, or a cluster, to work together as a single system. They are used for high-performance computing and for applications that require high availability and reliability. Examples include Rocks Cluster Distribution and OpenMPI.