Auto-translation used

What is important to know about the stages of software development for a company

Greetings! I am Timur Dragunov. I have been working in the IT field for over 10 years. He started his career as a developer of Internet projects. Later, he joined the team of the Russian PDF Commander editor. In recent years, my colleagues and I have focused on the corporate segment. This part of the market is traditionally considered more profitable than completing projects for ordinary users. In addition, a significant part of potential customers have a demand for alternatives to solutions from large international companies.

However, it was not only these two factors that influenced the change in the direction of work. Corporate clients have stricter requirements and have a request to solve specific tasks. This became a serious challenge for us and helped us find new ways of professional development. I will tell you more about the stages of software development for organizations. This information will be useful if you and your team plan to reorient your activities.

The Software Lifecycle (SDLC) is a period of time that begins at the moment when you decide to create any software, and ends when the development, support, and implementation of an application or service completely cease.

People have been creating software, including for various organizations, for decades. It is quite natural that during this time, different SDLC models and project management methods have been formed.

Chaotic development, when a team engages in spontaneous ideas, can sometimes bring some results. But only in small startups and as long as the main participants are enthusiastic. This resource is quickly consumed. In parallel, negative effects are snowballing. The number of bugs is multiplying, interesting functionality remains in its infancy, and the overall vision of the final product is lost. As a result, users become disillusioned and leave for competitors.

It is necessary to streamline the organization of the development of code and other elements of computer software as soon as possible. Let's briefly focus on the main approaches.

  • Cascade model (waterfall model). The whole process is divided into several rigid stages. The transition to the next phase occurs only when all the work in the previous stage is completed.In practice, in its pure form, the method is suitable only for relatively small and simple projects. Customer requests change periodically, as does the entire market situation. Therefore, it is extremely difficult to create software quickly and for an acceptable budget that will cover some part of the needs once and for all (for example, working with PDF files) and will not require significant upgrades.
  • V-shaped model (V-Model, VEE model). The development and testing stages are carried out in parallel. At the same time, the data received on one of the two branches affects the other. For example, the proposed basic model is analyzed and checked for compliance with industry standards. According to the results, it is being refined and complicated. The same thing happens with the architecture, prototype, and additional components of the final product.The approach requires a lot of resources, but provides reliable quality control. The method is used in industries where even minor mistakes lead to fatal consequences (space, aviation, nuclear energy, etc.).
  • An iterative model. The work is carried out in parallel, the results obtained, including intermediate ones, are continuously analyzed, and current and future tasks are adjusted based on this information. This approach is now prevailing. Based on it, many other methodologies have emerged — Agile, SCRUM, Kanban, and others.The model allows you to quickly adapt to changing conditions. However, there may be problems with the correct calculation of the budget and the timing of the project. Also, with subsequent changes, sometimes it is necessary to seriously redo the original architecture.
  • The spiral model. It combines successful elements of iterative and cascading approaches. Software development and implementation is conducted in cycles. At the beginning of each one, the available resources, risks, and potential opportunities are assessed. Based on this data, a list of jobs is compiled that can actually be completed by the scheduled date.The main disadvantage of the model is that it is not always possible to correctly determine the moment of transition to the next cycle. Also, sometimes the team gets too carried away and performs excessive product optimization.

Regardless of the chosen SDLC methodology, you first need to decide what to create and for whom.

There are at least several companies or single developers that offer software with similar functionality. For example, operations with PDF files can be performed in our PDF Commander, Adobe Acrobat, Foxit solutions, Microsoft Office suite, or its LibreOffice counterpart.

Make a list of software whose toolkit is similar to yours and their development companies. Thoroughly study all the features of this software. Analyze how it develops. Try to predict what changes will occur in the future, and thus perform a risk analysis for your business.

There are organizations that conduct large-scale market research to order. If you have a sufficient budget, you can apply for their services. However, you should not rely entirely on these companies. As a developer, you need to personally get acquainted with the competitors' offers. This is the only way you will understand what to create and how.

Identify the categories of customers who might benefit from your software. General, abstract formulations ("everyone who...", "all users who...") are erroneous and useless to you.

A better example: organizations with a staff of up to 50 people in the field of non-food trade use applications A, B and C.

After studying the market and potential customers, you will identify the needs of users who are not satisfied at all or are not fully satisfied. You will also identify the mistakes and problems of your competitors.

Thanks to this, you are unlikely to create an absolutely unique product. However, you can offer a product that not only solves the main (for this segment) set of tasks, but also eliminates painful problems.

I mentioned above that the process of technical software development should not be chaotic. In addition to the issues related to the organization of the team itself, this requirement also applies to all daily tasks.

When the user launches the software, he is going to solve some problem. As a rule, it is not one and consists of many additional actions.

It is necessary to anticipate as many of these possible tasks as possible and analyze the client's requirements. Then — to present all this in the form of a clear sequence of actions. Moreover, the wording should be specific, tied to real life.

A bad example: a user needs to edit a document, to do this, he opens the file and makes edits to it.

More successful: the client received the draft agreement in PDF from the counterparty. This involves the following actions::

  1. The document file opens in the program. It is better to combine an editor and a viewer so that the material does not have to be re-imported several times in different software. This means that the application must be lightweight enough so that the download does not take too long.
  2. The document is being viewed. You need options for scrolling and zooming. It is advisable to add a feature for comments and notes — if thoughts and comments appear while reading, you can add them immediately.
  3. Edits are being made to the document. Editing functions are required — deleting fragments, inserting new text. If the content is not recognized, an OCR (optical character recognition) tool is needed.
  4. The final version is saved. It is necessary to export correctly to PDF in compliance with all the requirements of the standard. The client may need to save the document in a different format. Most likely, these are DOCX, RTF, JPEG and PNG.
  5. The Client agrees with the counterparty's offer and is ready to sign the contract. I need a printer print function. Business practice may allow for an option where a facsimile and a print image are added to an electronic document. Electronic signatures are also often used.

Using such scenarios, it is easier to understand the real needs of customers and, based on this, offer convenient and functional solutions.

The terms of reference are usually project documentation. It varies in the degree of detail. If the development is carried out under individual contracts, the technical task is a specification of the client's requirements with an indication of the deadlines for implementation.

The first and relatively small document sets out the overall vision of the application or web service. They provide the platform, a list of main functions, the USP, a list of competing solutions, a risk assessment, and a user profile. This document is needed to tell the team what needs to be worked on (what is just talked about during meetings tends to be forgotten immediately). It can also be used to prepare a presentation for investors.

The following document details the functionality. If the software is relatively simple, you can keep and gradually add to one file. In other cases, it is advisable to keep a separate document for each function (group of similar functions). The architecture and the principle of operation of each tool are described in detail here. For better understanding, diagrams, tables, infographics, and mockups of user interfaces are added. By opening this documentation, each team member should quickly understand how the product works and what exactly needs to be done for the task.

The documentation should be clear and convenient for the team. You should not constantly experiment and abandon already accepted formats. In addition, the documentation is not static. It is absolutely normal practice to ask for clarifications and additions, to make constructive suggestions and comments.

Detailed documentation is compiled based on the current iteration of SDLC. For example, if you're implementing text formatting options in this sprint or milestone, that's exactly what you need to describe. Further, it is a good practice to attach links to the relevant sections of the documentation to specific tasks.

It is also advisable to draw up relatively long-term development plans (road maps, or roadmaps). They reflect future functionality with reference to specific dates. For example, March — adding tables, April — advanced formatting, scanner support, May — OCR, etc.

Roadmaps help you allocate resources, coordinate team activities, think better about architecture, and start product implementation in a timely manner. However, they do not always remain unchanged. Sometimes there are critical bugs that take a long time to fix. An important customer may ask to add a specific feature.

A prototype is an early version of a product. It demonstrates the operation of the main options planned for a specific iteration. Stability and visual appeal don't matter. At this stage, it is necessary to demonstrate what the specific software does and how convenient it is to use it.

Mockups are preliminary layouts or interface concepts. They demonstrate how the application will look like. Mockups are needed for product presentation, testing of some hypotheses and as illustrations in documentation.

The interface is created taking into account the functionality and other technical features. This takes into account the habits and preferences of a specific category of users.

Interface layouts show the appearance of the main window (home page), each menu, tab, tooltips, etc. They are developed taking into account user scenarios, documentation, design principles and ergonomics.

With further detailing, it is advisable to introduce elements of corporate identity — a characteristic palette, shapes, logos, fonts, and more. The visual image makes the brand recognizable and helps in promotion.

Ideally, the use of the product should bring aesthetic pleasure. At the same time, it is important to maintain a balance. You should not attach long animations and intrusive effects — they will start to annoy you very soon.

Developing recognizable, attractive, and user—friendly design concepts is an extremely difficult task. Even international corporations are not shy about assigning it to third-party specialists.

The created prototypes must be tested in real-world scenarios. At the initial stages of development, testing is conducted by team members and their loved ones (family, friends). In the future, it is advisable to involve more independent people. Friends and family members do not want to offend and upset their loved ones, so they may not report any shortcomings.

There are many testing techniques. They may include video shooting from different angles and screen capture, questionnaires, free-form reviews, and lengthy interviews. People who best match the profile of future users are invited to participate. A student, a housewife, and an office employee have different ideas about what a text editor should be like. In this case, it is better to invite employees of large, small and medium-sized companies who regularly work with large volumes of documents for testing.

Testing can be outsourced. You will have to resort to the services of third-party companies if you are located in a small provincial town and there are not enough suitable people nearby. Or are you going to enter foreign markets

During the development process, documentation and all ideas are overgrown with code and gradually transformed into one or another version of the product.

The composition of the development team depends on the functionality and architecture of the system. Taking into account modern approaches to software engineering, most activities are carried out in three directions:

  • The backend. The server side (with a client-server architecture) and the internal logic of the software. Backend developers are engaged in programming the data structure, its storage and processing according to certain algorithms.
  • The frontend. The client part (with a client-server architecture) and the program interface. Frontend developers make sure that all buttons-lists-menus function correctly, correctly send the source data to the internal logic and return the final result to the user.
  • Integration. Application interaction with other software. These can be plug-ins, specific programming interfaces (APIs), third-party libraries, imported content, etc.

They are identical to the approaches to SDLC organization. It is advisable to choose a methodology at the earliest stages of development or even when forming a team and not change it unless absolutely necessary.

Switching to other approaches for quite a long time paralyzes all activities. Some of the colleagues will not want to adapt and will leave the company. There is a possibility that you may even have to redesign the application architecture. That is, in fact, to recreate everything that was done earlier.

Unit testing (block or unit testing) is a health check of individual isolated parts of the code. In the process, developers make sure that the various modules perform all the necessary actions, are able to interact correctly with other parts of the software and withstand certain loads.

There are ready-made unit testing libraries for software development tools. For example, NUnit for C# or JUnit for Java.

Testing and debugging of the program is not limited to early prototypes. They are regularly conducted at every stage of the life cycle.

I already mentioned it above. This is the first phase in the hierarchy of tests. Almost always, modern software consists of many relatively small modules. It is necessary to check the operability of each of them in a timely manner. This does not fully guarantee that the entire program will function as intended. However, you can get rid of some bugs in advance and reuse some of the code (of course, if it successfully passes the unit tests).

Unit testing usually starts after writing the code. Upon successful verification, it is uploaded to the version control system.

The developers check whether different modules are able to interact with each other in principle and how correctly this process occurs. Continuous integration (CIS) systems are used for this purpose. They monitor changes in version control systems. Then they run checks on individual components. If this phase is completed successfully, the compilation is performed and the interaction of the modules with each other is tested. A report is generated based on the results.

This stage should not be confused with system testing, where the entire product is tested.

They study efficiency and convenience here. QA engineers or testers are looking for bugs. They make sure that every interface element is in its place (even an experienced team sometimes forgets to add an important button or inserts a tab in the wrong window) and triggers the desired action. At the same time, they are guided by the documentation.

The convenience and overall feel (or UX) are evaluated by a focus group of users. This testing can be open (everyone can join) or closed (individually selected people and organizations participate).

QA and UX testing can be assigned to contractors. This is especially justified when large-scale checks are required in a variety of scenarios.

Upon successful completion of testing, the application is ready to enter the market.

In most cases, mobile applications are distributed through the built-in stores of the respective platforms. For iOS and iPad OS, this is the only possible option (hacking the firmware and various rather complicated schemes are not considered). Android apps can be installed from APK files. However, this method is only suitable for specific cases. For example, the program is distributed only under individual contracts with customers.

To place software in stores, you need to register a developer account (App Store, Google Play). In the process, you will have to fill out a questionnaire and pay a small fee.

Computer software is distributed through it. You can launch a separate resource or create an additional section on the developer's website. You will need pages with detailed information about the software and its cost, documentation, and the functionality of a shopping cart with the ability to process payments and automatically send out license keys or distributions.

Promotion is usually started before the release. Marketing strategies depend on the market segment you are positioning your product for. Solutions for large corporate customers are presented at offline events. A certain number of clients can be obtained at exhibitions, after publications in industry publications and distribution of commercial offers.

Software for smaller customers can be promoted through specialized bloggers. Content marketing shows good results. It consists in regularly posting useful materials, the subject of which coincides with the purpose of your application. For example, if the program allows you to create and process PDF documents, you can upload articles and videos with tips on digitizing paper materials, converting to different formats, and adding electronic signatures. Thus, user training is conducted simultaneously with the promotion.

The effect of content marketing is not immediately apparent. Usually — not earlier than in six months or a year. In parallel, you need to use SEO and SMM techniques when promoting on websites and on social networks, respectively.

For monitoring, they use their own analytics tools, the functionality provided by mobile stores, and other methods. They study the number of downloads, installations and launches, purchases of licenses and subscriptions, the duration of sessions, the number of restarts a few days after installation, the status of servers and the content of logs. The obvious warning signal is angry feedback and calls to tech support.

Software creation does not stop after the release. According to many modern methodologies, development is basically conducted over an infinite number of cycles until there is a demand for the product or you offer a replacement.

Reviews are sent through the functionality of the stores and feedback forms. Customers can also express their opinions in comments on official social media pages, via email, and through technical support channels.

The stores evaluate the average rating of the app and the developer's interaction with the reviews. This data is used for automatic recommendation and promotion systems, including feature creation. Responses (they should always be polite) to comments have a positive effect.

You can encourage users to share their opinions. During the operation of the software, display windows with relevant suggestions, and send newsletters based on their contact information. However, don't be too intrusive.

Fixes for critical bugs and vulnerabilities are provided as soon as possible. The schedule of planned updates is determined by agreements with key clients and the chosen development methodology. Usually — every 3-4 weeks or less.

Too frequent scheduled updates for corporate software are undesirable. As a rule, updates in organizations are carried out centrally and by system administrators. Internal testing and security checks can be performed beforehand. Since this is a time-consuming and time-consuming process, treat other people's time with respect.

Updates must be documented. Relevant news is posted on the pages in the stores, on the website and in social networks. Detailed patchnotes (changelogs) are also posted on official online resources. At the same time, the reference materials are updated. It is advisable to duplicate the information. Due to the restrictions on the number of characters in the stores, it is not always possible to describe all the features of the release, and not all customers are subscribed to the social network.

VIP clients may need initial technical documentation and consultations directly with the project manager and developers. Interaction schemes must be agreed upon in advance — when concluding contracts.

The information obtained during the user support process may directly indicate certain shortcomings. However, the data needs to be evaluated comprehensively and rechecked with additional tests. 

Requirements can also be collected through feedback channels. They often receive requests for new features. It is not always possible or advisable to release appropriate updates. Sometimes it requires a complete redesign of the architecture and expensive research.

Internal analytics tools provide invaluable information for product development. They track the number of activations of each function, the duration of all sessions, window views, hardware characteristics, and more. If some of the options are almost not used, you can publish a number of reference publications (to stimulate interest) or temporarily not waste resources on their further development. However, such analytics tools are not suitable for offline products, software that runs in a closed infrastructure, or if maximum confidentiality is essential for customers.

I shared basic information about how software developers create enterprise software. It all starts with choosing a methodology. In recent decades, the spiral and iterative approaches have prevailed. Next, you need to carefully study the market and create a portrait of a potential customer. Based on these data, formulate the USP features that will distinguish your offer from the mass of competitors.

The development itself is accompanied by testing, including involving real users. A product release is not the end of a project. Marketing activities, regular updates, monitoring of metrics and feedback are necessary.

Comments 1

Login to leave a comment

THE HACK ANGELS // A POTENTIAL BTC // USDT // CRYPTO // ETH RECOVERY EXPERT I had over $800k in Bitcoin lost to a fake investor online that I came across last three months through a colleague of mine at work who also lost her investment along the line. I had to confide in a close friend of mine who then introduced me to this crypto recovery team called THE HACK ANGELS RECOVERY EXPERT. I contacted them and they were able to completely recover my stolen digital assets with ease. I had nearly given up hope before I found them, and now I can say with full confidence that they are the real deal. They have the knowledge, tools, and experience to recover your assets, and they will do it with integrity and dedication. If you’re striving, don’t hesitate to contact them. They are experts at helping you recover your Bitcoin, and they did exactly that for me. Check them out through their Website, Contact or Email. WhatsApp +1(520)200-2320 Email: support@thehackangels.com Website :www.thehackangels.com

Reply