[Software Engineering: System Objectives for Secure UML Models]

in #steemstem6 years ago (edited)

The architecture of an IT (Information technology) project must be clear about the objectives of the project. This is intended to be understandable as possible, while accurate in technical terms, then it proceeds to production with modern methodologies that optimize the development process by identifying tasks and effective time management with work teams.

Initial guidelines

Due to the diversity of forms of work, we need state-of-the-art statistics and assistance to conclude which methodology is most effective for project management and completion, budget management, risk control, project quality, available resources, so we can think clearly how to scale up the project.
Observing statistics and the effectiveness of methods in terms of their effects on project management factors is always good practice. The data and decisions will be assisted by data science and artificial intelligence, ideally, to feed the intelligence of the platform or software as well as its competitiveness.

Use Cases

Simplicity and clarity, each case of use must have a unique identifier which, when read, communicates understandable the specific functionality.
Its structure is with a verb and an object.
Example:

ZPI02 enroll-course

ZQK04 create-ICO

Each identifier is then given a very brief description of the functionality in common everyday language.
Then pre-conditions (necessary conditions that must exist for the use case to occur) and post-conditions (states of the use case already completed) are established, so that the complexities of the language or logical systems are not misinterpreted or confused. Next, a series of steps are listed that show the functionality of the production use case, such as "Normal Workflow".
With this clarity, more and more portions of source code can be systematically increased while considering scalability, cost-effectiveness and maintenance.
Example:

Creation date: dd/m/y | author: SatoshSon
Last update date: dd/m/y | author: user02

Use Case ID ZPI02Create-contract
Ver.0.02
Dependencias*Automated web system working for content curation
Pre-condición1.-Micro-economy designed in terms of liquidity and competition in the market is sustainable 2.-We have a simple KYC in the user database.
DescripciónThrough an account you can create a smart contract in the interface as simple as ordering components.
Secuencia Normal1- The user creates a contract and saves it for the net test 2.-The interface shows the functionality of the contract in a simple and complete way with simple statistics. 3.-The user decides whether to publish it, if so he would have to pay for the gas.
Post condiciónThe system keeps a log of which contracts and accounts are being created, the statistics are focused on making the deploy of a smart contract simpler.
ExcepcionesIf the user has malicious behaviors and tests, they are denied subsequent access to the platform and their ip is published as dangerous.
Notas importantesWithin the infrastructure, the computational load of machine learning for data insights must be taken into account.

Development tools

UML Models

These diagrams are widely used and effective because the purpose of these models is to find the classes that can abstract/model the characteristics of the system well in order to establish relationships between these same classes that reflect what really happens in the real world from the implementation of the application.

Identify classes

Concepts that may be or be worth as classes are identified.

Then we apply the information a little to include attributes and preconditions in each class.
Then, you have to establish relationships between the classes because it has to be consistent, that is, there must be relationships between the classes so that you can navigate and manipulate the information in the system.


Identify relationships between classes

Fig.2

There are four types of relationships between classes:

  • Dependence

When a class A depends on another B, that is, when a class A in a method receives a parameter of a certain class type B.

  • Association

It is a closer relationship between classes, it occurs when the objects/instances of one class are related to the objects of another class.

  • Generalization

Or known as "inheritance".

  • Realization

When a class implements an interface with a contract that is defined.

In addition, these models are very useful because they can be stored as text, simplify integration with a variety of tools (such as version control systems) that programmers already use in their daily work, and programmers usually feel more comfortable.
Of course there are alternative tools like ERs, but considering that there are UML extensions for code editors as intuitive as Visual Studio Code . That you can create:
Class, Activity, Usage case, Status, Deployment, Package, Sequence (development almost complete).... it is worth continuing to pay attention to the UML diagrams.


Fig.2

SCRUM

With this work done, it is then natural to implement a man-hours work methodology in the construction of the source code.


GIT

Git is usually used after the features have been developed, added to the product roadmap, and the development team is ready. But to step back here is a quick course of developing agile features: product, design, quality assurance, and engineering come together to come to a shared understanding of what will be a feature. These tasks, also known as user stories, are assigned to individual developers.
Git (which is a version driver devised by Linus Torvalds) starts to fit into your agile workflow at this point, some tips for the quick adoption of this software start thinking about tasks as branches of Git.
It depends on how you want to manage the project if you decide if the features, bug fixes should have its own branch, that is, you have to manage the project at this point so you have the ability to address the tasks individually but in different repositories, ie, that developers can focus on small pieces of work in separate repositories of the main repository preferably.
Also, to minimize overhead, it is best to create the release branch as close as possible to the scheduled release date because one branch of the version will need to be merged regularly into its master branch to ensure that its features work in future versions.

Git also plays a key role in being able to perform'tests'. Successful agile teams practice code reviews and set up automated testing to make it easier for the rest of your team and that the job is ready to be reviewed by specialists if it needs to be reviewed.
It is necessary to be very clear about the notions of time, in case a branch does not join with the master for a long time or if you want to implement shorter code release cycles, or more co-contracted personnel.

Fixed Expenses

It is then time to make an accounting record of the fixed costs for your infrastructure project. From the beginning we can recommend the following that will generate good competition in the market:

  • Marketing and sales

  • Finance

  • Administration

  • Safe development and maintenance

  • Intelligent Analytics & Data Science

Also keep in mind that it is not necessary to make a contract for every role within your organization, there are alternatives and markets where outsourcing and freelance are the engine of many projects. In the following links you can find information about prices and capacities:

Codility

stack verflow

Thank you!

Learn more:


Hasta pronto, colegas!


Imágenes

Referencia 1

Referencia 2

Referencia 3


Resources:



-Discord Server-

2019-05-01 22-39-04.png



(Español)
Cultura Bitcoin

Sort:  

@cultura.bitcoin you were flagged by a worthless gang of trolls, so, I gave you an upvote to counteract it! Enjoy!!

Coin Marketplace

STEEM 0.19
TRX 0.14
JST 0.030
BTC 60023.73
ETH 3191.15
USDT 1.00
SBD 2.45