One of the most important topics that software engineers, especially programmers, should be familiar with and unfortunately not properly addressed in the university is the concept of software map and software development environment.
You will find few programmers who have enough information about software mapping or prepare their projects based on software mapping. In this article, we intend to provide a brief explanation of this concept.
What is a software map?
Software drawings are based on objective information and are determined based on the analysis of code and information entered from software repository systems, information from source code or software development tools, and programming tools.
In particular, software drawings do not depend on a programming language, modeling language, or software development process model.
Software map refers to static, dynamic, and evolutionary information that is prepared in connection with software systems and software development processes and provides two-dimensional or three-dimensional information to the quality development team or engineer.
The main applications of software mapping are related to risk analysis and monitoring of code quality, team activity, software development progress, improving software engineering efficiency, and software maintenance.
Software maps can combine information about software development, software quality, and system dynamics by mapping information on the visual variables of treemap elements such as area size, height, color, or texture.
They can be specified regularly, generated automatically, and organized by patterns. Software maps use well-defined precise mapping techniques and use the metaphor of a three-dimensional city model to express complex and abstract information space.
Software drawings generally allow for understandable and effective communication on the risks and costs of software development projects to various stakeholders, such as the management and development team.
They provide the status of applications and systems that are currently being developed or further developed for project and management leaders at a glance.
“A key aspect of this decision-making is that software drawings provide the structural framework needed to interpret these performance indicators correctly.”
As a means of communication, software maps act as open and transparent spaces of information that enable code quality priorities and create new functions that interact with each other and take action to improve the software development process.
When the process of building software projects takes a long time, many complexities and problems arise that in the long run lead to the exhaustion of the development team.
On the other hand, some features of the system may be ignored, and eventually, the quality of the code that is written may be reduced.
Because software maintenance is complex and costly, developers spend a significant portion of their time understanding the structure and behavior of the system.
The key idea of software drawings is to address these optimization problems by providing effective communication tools to close existing gaps.
Software maps can be used specifically as an analytical tool and introduction to business information systems, specializing in software data analysis.
In addition, software drawings act as recommendation systems for software engineering.
Software drawings are not limited to software information and can include any hierarchical system information such as maintenance information for complex technical artifacts.
Software maps use a hierarchy of software implementation concepts, such as source code files, to build a treemap.
The height of a virtual building can be proportional to the complexity of the coding unit (for example, a combination of software metrics). The land area of a virtual 3D building can be proportional to the number of lines of code in the module.
Color can indicate the current development status, for example, several developers are modifying/editing a unit of code. With this sample configuration, the software map shows important points in the source code concerning aspects of the software development process.
For example, at a glance, it becomes clear that terms such as implementing changes in the shortest time, quickly assessing the impact of changes in one place on the performance of other parts of the software, reducing complexities that lead to uncontrolled application processes, finding errors faster, Used for development and … to be done.
To create software maps, different layout methods are used to prepare basic spatial maps and components. For example, you can use treemap algorithms that first run the software hierarchy in a nested rectangular area, or Voronoi-map algorithms that first design the software hierarchy by creating a Voronoi map.
Compared to regular treemap algorithms, which do not provide a definite arrangement, the arrangement algorithm for (Voronoi treemaps) can provide a high degree of similarity of arrangement for different hierarchies. There are similar approaches for the case based on tree diagrams.
Software drawing functions and software drawing methods belong to the scientific embodiment of software visualization and information visualization. They form a key concept and technique in software detection
. They are also used in software analysis. Software drawings have been extensively developed and researched, for example, at the Hasso Plattner Institute for IT systems engineering, especially for complex IT systems.
What is the software deployment environment?
In software development, the environment is a computer system on which software or a software component is deployed and executed. In simple cases, for example, developing a program and running it immediately on the same system may require only one environment, but in industrial and commercial cases, typically an environment called Development for major changes and development in It is considered and on the other hand, an environment called End Product (Production) is used for the end-user.
This process of software release management structure helps the Deployment, Testing, and Rollback phases in many problems.
Environments may be significantly different: typically the development environment is a workspace just for software development, while the final production environment is likely to see a large network of distributed data center machines or virtual machines connected. Be cloudy.
Deployment environments vary considerably, but generally start at the development environment (DEV) and end at the final product (PROD) environment.
One of the most commonly used deployment architectures is development, testing, display, the final product (DEV, TEST, STAGING, PROD) in which the software is deployed on the environments in the order mentioned.
In addition, other deployment environments are not generally considered for the software development process, such as the Quality Assurance provided to the testing staff, the Sandbox used by the developers themselves to test the product.
It becomes. In case of emergency, an environment called Disaster Recovery is used, which is used in case of a problem for the final version.
Other architectures include development, testing, acceptance testing, and the final product, called DTAP for short.
Software deployment refers to all the activities that prepare software for use until the software is finally up and running.
The public deployment process involves several interrelated activities and possible changes between them. These activities can be performed by the software developer, the user, or both.
Because each software system is unique, the precise processes or internal algorithms of each activity can be difficult to define; Therefore, “deployment” should be interpreted as a general process that should be customized according to specific requirements or specifications.
In pre-Internet software deployments, deployments (and related operations) were costly, rare, and bulky essentials.
It is therefore arguable that with the advent of the Internet, it is possible to end rapid software development.
In fact, the advent of cloud computing and software as a service means that software can be delivered to a large number of users on the Internet in a matter of minutes.
It also means that typically, deployment schedules are currently determined by the software vendor, not the users. Such flexibility leads to increased continuous delivery as an option available specifically for low-risk web applications.
Publishing is based on the software development process completed and is sometimes classified as part of the development process rather than the deployment process, And includes preparation operations for assembly and transfer to computer systems.
Installation and activation
In simple systems, installation involves creating a command (computing), shortcut, script, or service to run the software (manually or automatically).
In more complex systems, the installation may involve configuring the system (possibly asking the end user about their intended use or directly about the system configuration) and building the subsystems required for use.
Deactivation is the opposite of activation and refers to shutting down any running component of the system.
Uninstalling has an anti-installation function and refers to uninstalling a system or software that is no longer needed.
The update process replaces all or part of the latest released version of system software. This process usually involves disabling and reinstalling. On systems such as Linux, older versions of the software are automatically deleted as part of this process using System Package Management.
Mechanisms have been developed to install the update on some systems (or on some operating systems such as Linux, Android, and iOS). Mechanisms for these fully automated update processes are provided to users.
Norton Internet Security is an example of a semi-automated system for retrieving and installing updates.
The complexity and diversity of software products increase the specialized role of rules for coordination and engineering of the deployment process.
In desktop software, end-users also become software developers when they install a software package on their device.