Software, Types of Software and Common Mistakes About Software Engineering
What is Software Briefly?
Software is a product that includes any computer program running on any type of hardware of any size, any document in print or electronic form. Documentation can be for software development and end-user.
Software is a product, but it can also be a tool for developing or acquiring other products. The software does not wear out because it is not a physical product, but it can become inadequate over time.
Lifecycle: The process from the birth of software as an idea to its deprecation. The software does not wear out because it is not a physical product, but it can become inadequate over time.
Change is inevitable: Software undergoes changes throughout its lifecycle. Changes can create new bugs in the software. New changes may be required before new bugs are fully fixed.
Trends affecting software:
Widespread Computing: Compressing the computing power to ever-drinking areas allows informatics to be more easily integrated into our daily lives.
Widespread Communication Network: The widespread use of wireless networks allows informatics to integrate into our daily lives more easily.
Free / Open Source Software: Software developed by a loose team should be more understandable and expandable.
System Software: Programs, compilers, operating systems designed to serve other programs. Compilers, operating systems, etc. every term is within this field.
Engineering Software / Scientific Software: Programs prepared for use in engineering and scientific calculations. It deals with large volumes of data. They grind numbers (Number crunching).
Embedded Software: It is closely related to the hardware. It is for control purposes. They are real-time applications.
Application Software: Product-line, shrink-wrapped, (commercial) off-the-shelf, etc. As in many engineering fields, there are TS/BS ISO/IEC 25051 COTS standards defined in the field of Software Engineering. General-purpose software that can be used by different customers. Current account applications, various automation programs, word processing applications, etc.
Enterprise Software: Programs for specific business needs. Must have knowledge of business processes. It is usually custom-designed for the customer. Data conversion and evaluation applications, sometimes real-time monitoring of business processes, etc. Over time it becomes “old software”!
Legacy Software: Software that is an important part of the business process and has been used for a very long time.
Disadvantages that can be found in legacy software: Incomplete or faulty documentation, Code that has become complex over time, Inflexible structure, It is very closely related to old hardware. Poor quality due to lack of advances in software engineering.
Reasons for replacing old software
- New business requirements.
- Gaining compatibility so that it can work with current systems.
- The need to move to a more up-to-date environment due to the end of the hardware’s lifespan.
Misconceptions About Software Engineering
Once we complete the software and deliver it to the customer, we’re done. However, more than half of the effort spent on software is spent after the initial delivery of the software to the customer. I cannot measure its quality without completing the software. However, quality assurance methods can be applied at every stage of the software life cycle.
There are quality criteria that can be used even in the analysis process. Software equals program. However, needs analysis is labor in itself. Documentation and testing should also not be forgotten. In some cases, integration studies are also required. We are trying in vain to apply the requirements of software engineering. However, without a map, he loses his way.
Effort for quality will pay off in the later stages of the software lifecycle. More than half of software projects on a global scale fail.
Misconceptions about the software from the customer’s point of view
In order to start writing the program, it is enough to define the objectives in general, the details can be decided later. But vague requirements are like a rotten foundation. The software is flexible. Changing requirements can be easily adapted to the system.
However, as the software progresses through its lifecycle, the cost of adapting changing requirements to the software increases exponentially. Software is more like clay or glass than flexible play dough. It is aimed to increase flexibility with agile processes. Administrative misconceptions about software If things don’t catch up, we add new programmers to the team. However, as the software progresses through its life cycle, it becomes exponentially more difficult for new elements to master the software. Things get delayed even more.
The software whose development is undertaken is completely or partially outsourced. A firm that cannot control project progress internally will also have difficulty monitoring the outsourced work. If I produce open source software it is difficult to make a profit. Profit can be made with consultancy services. There are other business models as well.