TVs. Consoles. Projectors and accessories. Technologies. Digital TV

Features of software agent development. Development of a software package to automate the process of receiving and transmitting messages between the call center and clients

This article is devoted to application development technologies and trends in their development in the context of the transition of most domestic and foreign companies from spontaneous automation of individual areas of their activities to unified integrated solutions.

Application development in modern IT projects

The current period of development of automation and informatization means for domestic enterprises can be characterized as a time of mass transition from spontaneous automation of individual areas of company activity to unified integrated solutions covering all aspects of their existence. This could not but affect the composition and scope of the most frequently carried out IT projects and the methods of their implementation.

Features of modern IT projects

If five to seven years ago, projects related to the custom development of unique applications (and somewhat less often - solutions based on ready-made components intended for a specific subject area) and carried out by erudite, general-purpose programmers with related specialties (for example, who know how to administer local networks and DBMS), then today, first of all, projects for the implementation of ready-made business applications and ERP systems are ordered, within the framework of which projects are often carried out to develop solutions based on the same ready-made business applications. The reason for this is, on the one hand, the awareness by the managers of most companies of the fact that, no matter how much their company claims to be unique in its marketing strategy, in essence both its production and certain aspects of its activities are quite standard, and on the other hand - recognition by business application producers of the non-uniqueness of the business processes of most companies and their creation of a wide range of standard solutions while simultaneously providing services for their implementation, maintenance and updating on their own or by partners.

Transition to division of labor in software development projects

This situation could not but affect the personnel composition of IT companies, including lately system integrators predominate (sometimes having their own development department, but specializing mainly in complex projects that include not only application development), and there are few companies specializing exclusively in application development. In the latter, a process of specialization is in full swing, dividing the development team into business analysts, systems analysts, programmers, technical writers and project managers. At the same time, often a systems analyst does not know how to program, a business analyst does not manage projects, and a project manager is engaged only in organizational work and is not interested in the application architecture, much less the subject area. This reflects the fact of the transition from small-scale production of exclusive software to mass industrial production of standard solutions demanded by modern users.

Changing application requirements

Speaking about application development projects and parts of complex IT projects related to application development, it should be noted that today the most relevant is the creation of corporate solutions based not only on DBMS, but also on other products - office applications, GIS and CAD systems, business analysis tools, specialized server products, enterprise management systems and other business applications. The security requirements for the solutions being created are also noticeably different from those that existed three years ago. Finally, one important trend is the growing interest in applications for mobile devices and applications that can work autonomously and, if necessary, synchronize with information system enterprises.

Among other trends that have emerged recently in the development of corporate solutions, it is worth noting the growing need of companies for business analysis tools that are part of existing solutions or exist as separate tools. Despite the fact that creating applications using business analytics is difficult due to the fact that today the issues of standardizing access to data from multidimensional storages and the language for querying them remain relevant, developers already have enough tools in their hands to solve such problems for the most popular analytical platforms such as from suppliers of analytical platforms themselves (for example, Oracle, Microsoft and Hyperion), and from companies specializing in data analysis tools (Cognos, ProClarity and Business Objects). In addition, Business Intelligence and Report Tools (BIRT) are available for the Eclipse platform, which now accounts for half of the market for Java application development tools.

Involving the customer in the development process

Assessing the contribution of application developers to the success of the customer company’s business, as well as assessing the quality of the development process itself and its result, has always been a controversial issue and a reason for misunderstanding and conflicts. However, recently, methods for assessing the maturity of development processes and recommendations based on the Capability Maturity Model Integration (CMMI) model have emerged, as well as a number of application development methodologies that provide the application customer with the opportunity to control the progress of the development process. The CMMI model allows you to evaluate and improve application development processes and take advantage of successful examples of setting up such processes, and the presence of an assessment of one or the level of maturity according to this model at the developer company is to a certain extent a guarantee of the quality of the final result of the product development process in this company.

A family of application development methodologies under the general name Agile methodologies (including, in particular, the methodology extreme programming, which we wrote about a few months ago) provides “recipes” for day-to-day management of a project team, including, among others, the principle of Test-Driven Development (TDD), which has proven itself as a means of producing high-quality code. A feature of this family of methodologies is the involvement of the customer in the development process so that he can control it at all stages.

The most popular architectures and platforms

Service-oriented architecture

One of the current trends in the development of IT infrastructure of modern enterprises and architectures enterprise applications- transition to a service-oriented architecture (SOA). This architecture involves the creation and implementation of distributed applications and services based on the use of various technologies, such as web services (such technologies are widely supported by the Eclipse platform and development tools from Borland and Microsoft).

Most popular platforms

One of the most noticeable recent trends is the unification of the platforms for which most applications are created, and the identification of two leaders among them - Windows/Microsoft .NET and Java/J2EE. This is largely due to the ability of these platforms to provide the ability to create applications, the degree of data protection in which, as well as the ability to create user interfaces and provide access to services and data, meet modern requirements. However, this trend is not new to anyone for a long time.

We also note that due to the rapid growth of interest among corporate customers in developments for mobile devices, development tools for this category of applications and the mobile platforms themselves are becoming increasingly popular among developers.

Growing popularity of mobile platforms

Today, mobile applications are developed for about one and a half dozen platforms. According to a study late last year by research firm Evans Data Corp. survey of several hundred developers mobile applications, the main leaders in this area are the .NET Compact Framework and Java 2 Mobile Edition (J2ME), as well as others Microsoft platforms for mobile devices and Embedded Linux (Fig. 1).

Rice. 1. Popularity mobile platforms among developers (source - Developers’ Choice Wireless Platforms. Definitive Rankings of Wireless Platform by Developers Worldwide - Evans Data Corp., September 2005)

However, according to the same survey, in terms of developer satisfaction with the quality of tools and the level of support from the developer community, the Nokia Series 60 platform now ranks first. According to forecasts from the same Evans Data Corp., the share of Embedded Linux in the mobile platform market is expected to grow.

In terms of application development tools, Windows platforms Mobile tools from Microsoft have been around for several years. Borland's tools are available for the .NET Compact Framework, Symbian, and J2ME platforms. In addition, there are some mobile application development tools from Sybase, as well as from a number of other manufacturers.

Developer Tools Today

The narrow specialization of developers has led to the active development over the past five years of so-called application lifecycle support tools designed for large teams of developers. Such tools include requirements management tools, business process, application and data modeling, application testing and optimization, teamwork management, version control, and change management. Many leading software suppliers produce such tools: IBM, Computer Associates, Borland, Microsoft, Oracle and several others.

Recently, many companies that previously specialized in creating development environments (in particular, IBM, Computer Associates, Borland, Microsoft, Oracle and Sybase) have begun to pay close attention to tools for this purpose. The need for mutual integration of all these "heavy" tools has led to the creation of entire platforms for role-based software development and management life cycle applications - such platforms are now produced by Borland, IBM, Microsoft and a number of others.

As a rule, the use of such tools requires considering the software development process as a production process and, accordingly, creating and implementing methods for managing this process, similar to methods for managing material production processes. The implementation of such techniques is often carried out through the implementation of separate (and not cheap!) IT projects for the implementation in companies that develop integrated application development platforms in order to automate and optimize the processes accompanying development, including setting tasks, managing requirements, and achieving compliance with quality standards.

Free versions of commercial tools

If we remember what happened with development tools in the last two years, we can see that recently there has been a very active tendency for leading manufacturers of development tools to release free versions of them (and with good functionality) in order to draw the attention of developers to the potential and capabilities of full-featured products and the platforms for which they are intended. In particular, the Borland company has been producing free versions some of its development tools. Microsoft recently released its Express family of products, which includes several tools for developing Windows Forms and ASP .NET applications. Oracle Corporation, in turn, also provided developers with free access to the Oracle JDeveloper 10g tool.

Open Source Tools

There is another trend that is characteristic of the modern development tools market - the active growth in the popularity of open source platforms and tools, in the development of which a lot of money is now being invested by commercial companies, including such well-known platform manufacturers as IBM, Novell and Oracle. Among the most striking examples, it is worth noting the active development of the Eclipse environment - a universal open development platform compatible with many languages, deployment platforms and technologies, as well as the Mono project implementing part of the .NET platform for the operating system. Linux systems(compilers and other tools are now being actively produced for the latter).

The Eclipse project was started in 1998 by IBM with the goal of creating a next-generation integrated Java development environment, extensible with built-in tools, across multiple Java tool vendors. To this end, IBM at the end of 2001 provided the Open Source community with part of the source code of its Java application development tool WebSphere Studio Workbench and formed the Eclipse consortium (including representatives of Borland, IBM, MERANT, QNX Software Systems, Rational Software, Red Hat, SuSE , TogetherSoft and Webgain) to manage the further development of this development environment, which later became an independent non-profit organization, the Eclipse Foundation, which now has 115 members.

Today, five years after its inception, the Eclipse platform has become so popular that it has begun to displace widely used commercial tools (such as some Java development tools) from the market. Today, Eclipse's market share of Java application development tools is approximately 50%. However, over the past year there has been a clear trend of Eclipse transforming from a Java development environment into a tool integration platform for the entire application development lifecycle - recently the Eclipse consortium has launched projects such as the creation of a graphical modeling environment, tools for service-oriented architecture , and updated versions of testing tools, business analysis, and tools for creating web applications have been released.

As for the actual application development tools, development environments for PHP, Fortran, Macromedia Flex have now been created based on the Eclipse platform; We plan to release a number of tools for developing applications for embedded and mobile platforms. There are also commercial development tools for the Eclipse platform from IBM, Borland and SAP.

Most popular development environments

According to a survey of 1,200 developers conducted in June of this year by research company Evans Data Corp., Microsoft Visual Studio .NET was the most widely used development environment (Figure 2).

Rice. 2. Frequency of use of development environments (source - Developers’ Choice IDE Scorecard - Evans Data Corp., June 2006)

According to the same survey, the most popular application development environment in terms of functionality was IBM Rational Application Developer, recognized by survey participants as the best tool for modeling and building applications and having the best set of examples (Figure 3).

The results of this survey reflect the already mentioned trends in the dominance of the two most popular platforms (Windows/Microsoft .NET and Java/J2EE - almost all popular development environments are designed for these platforms) and the growing popularity of open source development tools and platforms (as evidenced by the presence of Eclipse in top five most popular development environments).

So, modern trends in the development of application development technologies include a decrease in the share of application development in IT projects, a gradual transition from small-scale production of exclusive software to mass industrial production of standard solutions, an increasingly active use of tools to support the application development life cycle (including projects for the implementation of integrated platforms for application development). Recently, there has also been an increased interest in creating applications for mobile platforms. A characteristic trend recent years is also the emergence of high-quality open source tools. It is possible that these trends will continue for at least several more years.

To optimally develop a software environment, it is necessary to combine different programming languages, since each of them is aimed at achieving specific goals and objectives. For example, a few PHP commands can create an entire Web page, but in practice the script is almost always used in conjunction with HTML, and usually the source text of the script contains a large number of lines. However, it should be noted that PHP code can be located anywhere in an HTML document, but it does not have to use HTML. You just need to ensure that the PHP code produces the correct HTML code, which will then be correctly displayed by the Web browser.

HTML is a hypertext markup language that is used to create documents on the Internet. With its help, the necessary structure and grid of the page are created, the appearance of which is further improved by CSS and JavaScript. Currently the latest version is HTML5, which was preceded by HTML4.01. Most Web resources are built on the basis of this particular language.

Unlike HTML 4, which has 3 validators, HTML 5 has one validator:. HTML 5 supports MathML and SVG.

New tags: section, article, aside, hgroup, header, footer, nav, dialog, figure, video, audio, source, embed for inserting content with the plugin (only), mark, progress, meter, time, ruby, rt, rp , canvas, command, details, datalist, keygen, output.

New input types: tel, search, url, email, datetime, date, month, week, time, datetime-local, number, range, color.

New attributes for tags: ping media attributes for a and area, etc.

The disappearance of some tags, due to the fact that they can be replaced with CSS: basefont, big, center, font, s, strike, tt, u.

Frames disappearing due to negative impact on the entire page

The disappearance of some tags, replaced in the updated specification with more relevant ones: acronym (abbr is used), applet (object is used), isindex, dir.

Some tag attributes are not supported due to lack of necessity: rev and charset for link and a, shape and coords for a, etc.

Some attributes of tags are not supported due to the fact that when using CSS the best effect is achieved: align for all tags, alink, link, text, vlink for the body and so on.

New APIs: drawing 2D pictures in real time; control over the playback of media files; storing data in the browser; editing; Drag-and-drop; working with the network; MIME; new elements in the DOM.

CSS is a formal language for describing the appearance of a document written using a markup language. CSS is an acronym for Cascading Style Sheets. CSS is a styling language that defines the display of HTML documents. For example, CSS works with fonts, color, margins, lines, height, width, background images, positioning of elements and many other things. HTML can be used to design Web sites, but CSS is more powerful and more precise and refined. CSS is currently supported by all browsers.

HTML is used to structure the content of a page. CSS is used to format this structured content. As the Web evolved, designers began to look for ways to format online documents. To meet increased consumer demands, browser manufacturers (then Netscape and Microsoft) invented new HTML tags, such as , which differed from the original HTML tags in that they defined appearance rather than structure. This also led to original structuring tags such as

, have become increasingly used for page design instead of text structuring. Many new design tags such as , were supported by only one browser. “You need browser X to view this page” has become a common disclaimer on Web sites.

CSS was created to correct this situation by providing Web designers with precision design capabilities that are supported by all browsers. At the same time, the presentation and content of the document were separated, which greatly simplified the work.

The advent of CSS was a revolution in the world of Web design. Specific benefits of CSS:

Control the display of multiple documents using a single style sheet;

More precise control over appearance pages;

Different views for different media (screen, print, etc.);

Complex and sophisticated design technique.

There are ways to apply CSS rules to the HTML document.

Method 1: Inline/In-line (style attribute). You can apply CSS to HTML using the HTML style attribute. The background color can be set to red like this:

Example

This is a red page

Method 2: Internal (style tag). The second way to insert CSS codes is an HTML tag