A multi-module program has a complex source code, often with uncertainty, strong and complex connection of modules, and failure instability. We solve the problem of reducing not only the cost, but also the complexity and instability of software.
Aspect-Oriented AspectJ Libraries
End-to-end functionality is relevant in tasks:
- authentication and authorization;
- cryptographic privacy;
- search for invariants and testing;
- multi-threaded execution;
- logging and profiling (program tracing), etc.
The widespread object-oriented methodology of OOPP does not save from uncertainties and complexities. Therefore, the solution is sought on the basis of AOPP (aspect-oriented approach, AspectJ libraries).
The IEEE 610.12 standard regulates the basic steps and specifications for the design, development, operation, and maintenance of software. A relevant software cost estimate is an important factor, it affects the design and performance parameters, project management (Project Management). It is necessary to model the life cycle of the project.
The cost of software (growing exponentially) will be affected by the relevance of the methodology, in particular, the Agile methodology promoted recently.
Effective methodologies for rapid development of software systems
The relevance of the project (complex) is influenced by various factors:
- analytical inconsistencies in the assessment (specifications, cost, labor intensity, etc.);
- underestimation of project risks;
- lack of experience, competencies, adequate methods;
- compressed schedule of design work;
- inaccuracies in specifications, documentation, etc.
The Agile methodology allows you to approach the project goal with an iterative procedure based on testing and adaptive adjustment of the stage results.
The Agile family of methodologies (technologies) includes important components:
- XP — extreme programming with a continuous, short feedback cycle, understood by all metaphors and standards (Extreme Programming);
- SCRUM is a development with rigidly fixed iterations in time, sprints, end user tools (one of the translations is SCRibingUnifiedMethodology).
The XP methodology allows you to practically minimize the cost of changes in the project (and they are always in software packages). Based on the principles of unit testing, pair programming, the simplest solution, etc., the “XP-oriented” manager analyzes the estimates of the lead programmer and tester, together with the customer either corrects the iterative process or refuses to change.
You can drop some of the specifications or modify them, or move the changes to the next iteration. The main thing is to prevent an unpredictable amount of functionality, although this is beneficial to the customer. This can lead to overloading the development team, reducing the quality of the software.
The manager warns the customer about this, discusses the conditions for the functional expansion of the software. In XP, not only the experience, professionalism of everyone, the team, but also the date of completion of the iteration are important.
In traditional programming, development is carried out “horizontally”: first, specifications are developed, then sequentially the database, business classes, interface, test system (exceptions are possible here). A delay in a linear (network, critical path) project work structure can equivalently delay the completion of the entire project, and the customer does not receive a relevantly analyzed version of the project.
In XP, all work (including testing) at the iteration is developed and analyzed “vertically”, and the customer has the opportunity to analyze the result of the iteration, make appropriate changes, moreover, use the iteration product, for example, the “beta-gamma-…” version. In addition, the project starts, perhaps with a simplified version, because modular and OOP approaches are also XP toolkit.
SCRUM methodology and website development
SCRUM is a methodology for iterative increase in the functionality of the project, the correctability of its implementation based on flexible teams, without rigidly defined specialization, feedback from users.
SCRUM defines planning/control rules for project specifications with the goal of maximizing:
- profits from functionality (without their «bloat»);
- the interest of the team (each participant) in the result and their cohesion;
- efficiency, adaptability of response to the current iterative situation.
The methodology is especially effective in web projects, site building. You can immediately show the navigation, layout, banner places to the customer, correct it. SCRUM iterations are implemented according to the scheme: «resource planning — fixing the situation — implementing events — analyzing the results.»
SCRUM adapts developers to changing requirements, just like a product adapts to customer requirements, using feedback and prioritizing, taking into account the capabilities of the project team effectively. SCRUM-team consists of 5-9 professional programmers, creative and proactive. Its tasks are orientation towards achieving the goal in conditions of limited resources, given deadlines and quality.
Software quality is a complex property of a software system, which consists in providing, satisfying consumer needs with a guarantee of parameters according to the terms of reference and quality standards. The team is constantly involved in the implementation of the above scheme. Changes are allowed if it is necessary to include additional tasks in the iteration, or fix errors that further affect the iteration process.
Methodology and models for evaluating software development
Let’s decompose the software into modules, elementary processes — active and passive. Passive ones are identified by statistical, monitoring data. Active — based on dynamic models, using analytics.
For all elements, operations, we determine the «confidence interval», for example, 95%. Note that this is a high figure. For example, 65% is selected. For m% significance, we find the construction coefficient (according to statistical data) by weight coefficients, the degree of influence of characteristics, the number of characteristics taken into account.
For example, characteristics to consider include:
- complexity (network structure, logical);
- connectivity, distribution (data processing);
- transaction frequency;
- ultimate efficiency;
- the number of consumers; updateability, etc.
We solve problems, for example, by separating the problems of its business functionality from the problems of end-to-end (system-wide) functionality that introduces certain uncertainties into the project.