How To Software Engineer
Initial considerations
Software engineering is …
Defined as a systematic, measurable, disciplined and quantified approach to plan, manage, create or maintain software. Used to solve non satisfying processes, Unsuccessful endeavors, erros and prejudices
People don’t want to use your software. They want to lose weight, laugh, be entertained, get smarter, spend time with loved ones, go home on time, sleep adequately, eat good food, be happy. Your product is only as good as the experiences it enables people to have.
The life cycle has two different macro phases
It has also 5 micro phases
Requirements Gathering
Design & Project
Implementation
Verification and Validation
Maintenance
Written Process:
Planning 1
Start with project managment: gather user requirements analyze what they think they want study what they are doing decide to commit to do what they are asking, decide if I can go with existing solutions If not design a solution
Design means: either thinking about the new solution and delivering results or make a new proof of concept and from there iterate
its better to double check and follow an agile procedure Think about the other end, what they think the problem is and what do they really need
My background is a javascript specialization, this involves a lot of frontend development along with some backend integrations or development. I’ve been using next js, react, and some component library or custom made css.
Requirements Engineering
Software requirements express the needs and constraints placed on a software product that contribute to the solution of some real-world problem.
The process-based breakdown reflects the fact that the requirements process, if it is to be successful, must be considered as a process involving complex, tightly coupled activities (both sequential and concurrent), rather than as a discrete, one-off activity performed at the outset of a software development project.
By thinking on the requirements it is possible to calculate what is the cost and the resources needed to actualize the development of the system.
Design & Project
A way of solving problems.
It is defined as a process to map the characteristics of the system. Ensuring that it has a good Human computer Interaction.
The design activity comprises the entire design and modeling effort designed to describe how the software will be implemented.
The design/project phase includes:
-
Conceptual design: That involves the elaboration of basic ideas and concepts that determine the fundamental elements of the software in question. Conceptual design influences user interface and software architecture.
-
The design of the user interface: It involves the elaboration of how the user can interact to perform his tasks, the choice of interface objects, the layout of windows and screens, etc. The interface should ensure good usability of the software.
-
The Software Architecture design: You must work out a macroscopic view of the software in terms of components that interact with each other.
-
Design of algorithms and data structures: It aims to determine, independently of the adopted programming language, the algorithmic solutions, and the associated data structures.
The Design or Design phase is the final phase of the Planning 1 process and results in the architecture document.
Implementation:
Involves the activities of coding, compilation, integration and testing.
The coding aims to translate the design into a program, using appropriate languages and tools.
- It should reflect the structure and behavior described in the design.
- Architectural components should be encoded independently and then integrated.
- Tests can be started during the implementation phase.
- Debugging errors occur during programming using some techniques and tools.
- It is fundamental to control and manage versions so that one has a correct control of everything that is being codified.
Verification and Validation:
They are intended to show that the system conforms to the specification. Makes sure that it meets the expectations of customers and users.
Validation aims to ensure that the program is doing what it has defined in its specification.
The verification is to verify that the program is correct, that is to say, it does not have execution errors.
The tests are for correction, performance, and reliability, guaranteeing the quality of the software.
Maintenance:
The maintenance part involves upgrading the software to the customer’s demand (s), either for program failures or simply for improvements that the customer needs.
It takes 40% up to 80% of the cost of the project.
Can be:
- Corrective
- Evolutive
- preventive
- adaptative
- of support
- Ethereum Smart Contract Security Best Practices
https://github.com/frag997/p5-plus-plus/tree/master/3.Projects/06.RainbowFlowField
Final Considerations:
It’s important to emphasize a well aligned process of development. Be it by considerating the software as a product or as a service.