“Heavy” application software: working days of development and implementation

    I’ll tell you about the features of “heavy” commercial application software for large companies and give a couple of examples from Russia.

    Come in, show the perfectionist’s hell.

    In a big business, there are simply no situations where you can buy a license and immediately sit down to use it. It is necessary to carefully modify the file, and often so that sometimes writing from scratch takes the same amount of time.
    - Software is never 100% ready, because constantly in the business there are changes.
    - Software never stops in modifications.
    - Software needs to be constantly maintained.

    Purpose of implementation

    The main task of any corporate software is the automation of something that has not been done before or done by hand. That is, translating into human language - either saving (most often), or getting new functionality for more successful problem solving.

    For example, every time your child eats a Barney bear, or you chew Dirol, or teenagers do not find foil in Alpen Gold, many complex processes occur. By purchasing, you indirectly launch many transactions in ERP, logistics and other retail and manufacturer IT subsystems. All this, one way or another, is sent to data centers, where it is calculated. The most important task is timely accurate deliveries, so that the logisticscorrectly worked out. At the same time, well-written software saves millions of dollars on optimizing warehouses, improving the schedule of vehicles (reducing the number of needed cars), the accuracy of predicting demand and, consequently, less marriage by shelf life. For example, here with bears and the rest, the customer saves several million rubles a year. Or here is an example of my colleague about the census, where they managed to save on equipment and people (and there, for a second, half a million people go around the country).

    That is, the goal of automation at the moment is almost always - saving (in the future). In second place, according to my feelings, the importance of motivation to develop IT infrastructure - more control and transparency. For example, the same workflow systems andBPM is administered to improve control. Here is another situation where the company could easily lose the steel car simply because of the accounting features.

    There are purely technical goals - automation of changes in IT subsystems (so as not to pull the IT department every time the sales director needs to change something), control of code changes, tracking of all assets (licenses, servers, etc.) , monitoring and other things. An example of multi-pass automation solutions for IT-work - here .

    Naturally, there are no universal solutions, just as there are no two identical companies. All software, all hardware and software systems and other solutions - all this is done specifically for the customer.

    Lyrical digression about the Russian development

    Until we go further, it’s worthwhile to dwell on the important issue of improvements and sawing with a jigsaw. In big business, the main word is customization. It is necessary to write for the process, with a clear understanding of who will work, what exactly tasks to solve and so that it is convenient. Otherwise, automation software does not become a help in work and a means of saving, but a crutch, or, worse - an obstacle that impedes normal operation. Hence, either a very, very serious completion of the boxed versions together with the vendors, or the development based on some framework (examples below), or even from scratch.

    Accordingly, in the first two cases, the difficult question (especially in the current economic situation) is whether the development is Russian. No, it’s clear that computers weren’t invented in Russia, Boolean logic wasn’t, Russian OSs weren’t particularly visible either, but a clear criterion was still needed. In November, the Ministry of Communications and Mass Media announced their vision of the concept of “Russian development”. This is a kind of software, the copyright holder of which is a Russian company, and the deduction to foreign companies for using their modules does not exceed 30%. In general, it is quite democratic and convenient for the market - it is just about good customization.

    But let's already show examples of our developments.

    Medical terminal

    Let's start with a fairly simple thing: a device consisting of a well-known set of “designer parts” with relatively simple software. This is PAK, which looks like an ATM, allowing you to diagnose the main indicators of the state of the human body in less than 3 minutes. It is put in rooms.

    In the basic configuration, it can:
    - Measure pressure, pulse and blood oxygen saturation,
    - Sniff breath and report about alcohol in it,
    - Authorize a smart card employee (for example, from a room access control system) or a fingerprint (in the near future, the possibility will be realized authorization by the iris of the eye),
    - Shoot a video of the examination itself and transfer it to the server,
    - Store data in the database and transfer it to other subsystems of the company,
    - Analyze based on current measurements and previous surveys.

    Of course, additional modules can be added to it, for example, to remove one ECG lead or to check skin resistance (roughly speaking, stress level).

    His appointment is extremely simple - to check employees before the shift. For example, to simplify a pre-flight physical examination, record the state of a nuclear power plant operator, put it in the Ministry of Internal Affairs, a rig on a shelf or in the taiga, and so on. On tests, we put it right next to our dining room - there was a whole line of people who wanted to test themselves. Many really liked to regularly monitor the baseline.

    This is an assembly from a hardware platform, writing integration software or rolling a ready-made solution from Western colleagues with the same kiosks, plus a link to the company's database.

    Rosavtodor - support of public services

    Now let's take something “heavier", for example, working with the data flow of a state-owned company. For state-owned enterprises, there are regulatory documents that define the list of services that need to be provided in electronic form. In 2012 and 2014, we won the competitions of Rosavtodor for the implementation of such tasks . In short - the situation there is as follows: earlier it was necessary to make extracts from the unified register of highways of the EDRAD and accept citizens' appeals. The second one later dropped out of the list of public services, I suspect - because it was one of the few forms that could be written in the spirit: "I have been driving this road since 87 and during that time it has never been repaired." They wrote on all occasions, and according to the rules, the state agency is obliged to consider any application and redirect it to the right department.

    As for requests for extracts, the architecture is as follows: requests are sent to a single portal of interagency electronic interaction, and then they go to Rosavtodor in a formalized form. We accept and parse, put it into the electronic document management system on the side of Rosavtodor, then forward the task to the electronic registry of roads and process it, including receiving information about payment for services from the State Information System on state and municipal payments. They made a decision - it goes in the reverse order to the public services portal through the connector. In the direction of travel - an EDS is signed, enters the applicant’s personal account.

    Application form for extract from EDRAD

    According to the register of roads, in our country there are more than 160 thousand different organizations that own roads. The order obliges to provide all information - on the state, extent, owners, etc. - by road. Previously, this information was provided in paper form - and the agency employees entered it in the register. Now the owner of the road is doing this, so the customer has freed up resources that no longer need to be disassembled by the number of the house next to the object, what the road is and where it came from, and the risk of error has decreased - each info card is now signed by EDS, and only after that it automatically gets to the registry.

    We have been working with this since 2003, and the subject area is well acquainted. Customer appreciates.

    Of the difficulties on such projects is the desynchronization of the departments: for example, the Ministry of Communications is responsible for the form on the site, and we for the connector. To meet deadlines, you often need to do a lot of things in advance, and here understanding the subject area is very important. Of course, the customer speaks his own language - you need to constantly translate into and from the specification language. After each meeting - a protocol to which they agreed on the functional part and what it means.

    The most important part of the development is to make sure that we and the customer understand each other correctly.Therefore, we use our framework for workflow, where there is an opportunity to collect scary, but working prototypes on the fly. The correct GUI is pulled over abstractions later, the main thing is for the customer to see that if you click something, then the application will go into the document flow in such and such form. Such insurance for mock reporting forms is very popular not only with colleagues from Rosavtodor.

    But do not think that UI is the last thing to do. End users of the system are not IT-specialists, and for them it is necessary to adapt everything a lot and greatly. In the logic of the developer, you need to make attribute forms that describe all the request parameters. In the logic of the user, simple interfaces are needed where elements are grouped not according to the convenience of the developer, but according to the convenience of the employee. So that in one group there were controls related to one object of the subject, the process was simple and clear. We tried a lot of things - even training does not give a big result. Therefore, simplified interfaces are specially made (for us, this is an extra work) - this greatly simplifies the implementation.

    In my practice, if you don’t do this with prototypes and a GUI, the solution is likely to go to the trash. This will result in a product that formally meets the requirements, but is not suitable for everyday use. This is probably why we have been on the project for so long. Other contractors often change, new people often look with suspicion to us. Then they see what we are really doing, look at the results, understanding comes.

    TaskList Integrator

    And there is another class of tasks designed to automate automation, or to simplify user interaction with the company's IT subsystems. For example, in recent years, another task of integrating subsystems has begun to appear. Here is our own solution, which, in particular, is used inside CROC.

    The situation is this - the customer (and ours) often has a large zoo of IT subsystems. Tasks for an employee can come from different sources. For example, a new order came to the workflow system, BPM needed to move on to the next stage of the project, the boss set a new task in the tracker, something else urgently needed to be done in CRM, plus the personnel subsystem and a reminder about regular technical work woke up. Hell.

    All this is convenient and simply reduced to one system such as a mail tracker.

    Entrance through connectors for interaction with other systems, exit through the same connectors for updating data from the outside. Made changes to the TLI - got changes in the system, you don’t even need to go into it. “Under the hood” Tomcat, PostgreSQL and CentOS / RedHat, JAVA.

    The tablets have an offline mode and constant synchronization, which is very convenient for traveling top managers and engineers. In one state-owned corporation, for example, this solution plus special protection - executive tablets (x509, GOST, smartcard entry, VPN, digital signature, jailbreak wipe). There are iOS, Win and Android-butt.

    The project is young, only 2 years old. The reason for the appearance of such a product is that often Enterprise-software is written either insufficiently "beautifully" or inconveniently. About UI / UX they think so - what is there to think, here you need to shake. Therefore, if someone is faced with a heap of inconvenient systems, you can solve it this way. Connect inconvenient systems to the integration platform, connect TLI to it and get information from all information systems in one place with a convenient interface.

    By the way, the integration platform can be used not only for this task, but also as a whole in order to combine disparate corporate applications into one integrated “super-system”. The system will provide online synchronization of data between applications, complex processes will be performed that affect several systems at once, and most importantly, there will be no mess and confusion with data and directories.

    Single environment

    Sometimes, work may not begin at all with documenting processes or solving a specific problem, but rather building the infrastructure from scratch.

    For DIT Moscow, we carried out infrastructure projects (design, creation and support of infrastructure) as part of the Unified Medical System EMIAS and the development of specialized infrastructures (electronic signature environment, for example). All this since 2011. There is a lot of everything, in particular, one of the largest installations of ALT Linux in the world (22 thousand users who have a single infrastructure completely accessible). Together with the ALT developers, we found and corrected unusual bugs caused by scale.


    Of course, the development of corporate software requires a well-thought-out infrastructure on our part. For many processes there are no (and cannot be) finished products. The same clerical system in courts and arbitrations or in election commissions is a good example.

    Therefore, we periodically develop information systems from scratch. This can be either an independent solution or a piece of customer’s IT infrastructure that closes some processes and is integrated with other systems.

    For the most part, corporate information systems are quite similar in terms of architecture. There are general abstractions of data flows (input-change-report). There are GUI clients where the user works with data. It can be both "thick" and web clients. Here the trends repeat the general industry trends: once upon a time there were web clients on asp, then thick clients on .NET, then again the web. Now the latter are adding more mobile clients.

    Despite the fact that the solution requires a completely custom solution, sometimes it can be implemented on some kind of box, such as a portal or crm. But the more custom, the less sense.

    Since we have been doing custom systems for a long time, the process is set. No one writes from scratch. There are frameworks. They were for ASP, and for .NET, Java and Web'a. The main idea is that your framework allows you to go through a full cycle: from "drawing" an entity-relation model to a GUI.

    In a matter of days, you can roll out a typical stock - here the data is entered, this is how it is validated, processed, added here, displayed here. You can sit down with the customer and show a working application. As a rule, at this moment the customer will also formulate the requirements (which solves the problem “oh, but I have one more feature” before the release) and we better understand what the customer wants exactly. Few people come with full TK, more often with need or criteria for solving a problem.

    As they say, "quickly - does not mean quality." The resulting application will have a typical interface oriented to the model, and not to processes. Of course, there is a great temptation to leave it that way (it works after all). By the way, if this is some kind of administrative interface that two people use (and both are not bosses), then you can leave it that way. And for a serious system, of course, customization begins. But we do not modify “something inside” (as in the approach with boxed systems), but simply program (.net / java / javascript) using the api of the libraries included in the Framework. Those. the initial sample application is just the default behavior in the absence of customization. Therefore, the final result is directly proportional to the efforts spent by the project development team.

    Developer’s working tool for creating a data structure model

    An example of a test application based on a framework for managing polls and voting:


    My colleagues regularly do such things as managing the videoconferencing, monitoring training before the election, fixing court hearings, consolidating data about bank customers from different subsystems, the logic of the call center, paperwork and even optimizing the layout of money in ATMs - in general, there is everything in the tasks , anything. And, despite all the economic and political conditions, services and in-house developments, this is what, if there is expertise, will continue to be in demand.

    Unlike conventional solutions, starting with the size of a medium-sized business, almost no installation can do without collecting at least a month information about what the task is, how it should be solved, who is involved in the processes, and so on. We ask questions, draw huge diagrams, test them, wear prototypes, communicate, participate in negotiations (when each unit tries to get some kind of functionality or control over the process), communicate with many managers and eventually roll out a solution that solves the problem and everyone is happy (if possible). And then we train people to use it, if necessary, and support it.

    Of course, “heavy” software is a sea of ​​organizational work. The most important skill is the ability to receive data and turn it into lines of TK. The ability to think for the customer in terms of what will happen next after implementation and remove problems that would inevitably appear in the future. Long, painfully complex coordination is part of our work. Standards, step-by-step documentation, certification, a ton of paper for the project - too. Thousands of things need to be monitored, and we, of course, will automate for ourselves these processes within the company. There are all sorts of features like controlling the work of loaders with the server, where the butt will be spinning, too, otherwise they will drop it, and the implementation will be postponed for 2-3 months.

    Of course, the process rarely dwells on implementation. Customer requirements are changing, the environment is changing, new features are needed, improvements, bugs pop up in very unusual situations - in general, a complete set.

    This is difficult, but worth it, because when a working product is released, everyone is happy.

    Also popular now: