READ COMPLETE BLOG ON ankushgandhi.com.
- It is a systematic, disciplined, cost-effective technique for software development.
- It is an Engineering approach to develop software.
1) Software Development Lifecycle
2) Requirements & Specification (SRS)
4) Software Design Process
And visit ankushgandhi.com for more usefull content
It is a process used by the software engineering industry to design develop and test high-quality software SDLC tends to produce high-quality software that meets customer expectations.
There are processes, methodologies and frameworks range from specific prescriptive steps that can be used by the organization there are many SDLC models that have been developed to achieve the different required objective the model specifies various stages of the process and the order in which they are carried out.
- Waterfall Model
- V Model
- Incremental Model
- Iterative Model
- Spiral Model
- RAD Model
- Prototype Model
- Agile Model
It is a breakdown of project activities into linear sequential phases where each face depends on the deliverables of the previous one.
The incremental build model is a method of software development where the model is designed, implemented, and tested incrementally (a little more is added each time) until the product is finished the product defined finished when it satisfies all requirements
Each iteration passes through the requirement, design, coding, and testing phase and each subsequent release of the system adds function to the previous release until all designed functionality has been implemented.
The iterative model is a particular implementation of a software development life cycle (SDLC) that focuses on an initial, simplified implementation, which then progressively gains more complexity and a broader feature set until the final system is complete. When discussing the iterative method, the concept of incremental development will also often be used liberally and interchangeably, which describes the incremental alterations made during the design and implementation of each new iteration.
Unlike the more traditional waterfall model, which focuses on a stringent step-by-step process of development stages, the iterative model is best thought of as a cyclical process. After an initial planning phase, a small handful of stages are repeated over and over, with each completion of the cycle incrementally improving and iterating on the software. Enhancements can quickly be recognized and implemented throughout each iteration, allowing the next iteration to be at least marginally better than the last.
The spiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model. This Spiral model is a combination of the iterative development process model and sequential linear development model i.e. the waterfall model with a very high emphasis on risk analysis. It allows incremental releases of the product or incremental refinement through each iteration around the spiral.
READ COMPLETE BLOG ON ankushgandhi.com.
The meaning of Agile is swift or versatile." Agile process model" refers to a software development approach based on iterative development. Agile methods break tasks into smaller iterations or parts that do not directly involve long-term planning. The project scope and requirements are laid down at the beginning of the development process. Plans regarding the number of iterations, the duration, and the scope of each iteration are clearly defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model, which typically lasts from one to four weeks. The division of the entire project into smaller parts helps to minimize the project risk and to reduce the overall project delivery time requirements. Each iteration involves a team working through a full software development life cycle including planning, requirements analysis, design, coding, and testing before a working product is demonstrated to the client.
Agile is a methodology. It's a way of thinking. It is NOT a model in and of itself.
Agile was invented because the scope of software development was changing. Waterfall methods aren't bad, they're just slow, and not built for a lot of modern problems.
This is largely due to the complexity of modern systems which make them hard to plan 100%. This means at some point, a change will be required, and production will stop until all the documents are updated.
With agile however, we can move a little bit quicker. We are constantly looking for and adjusting to change.
The agile manifesto is a set of guiding principles for agile development. They are:
🔺Individuals and interactions over process and tools.
🔺Working software over comprehensive documentation.
🔺Customer collaboration over contract negotiation.
🔺Responding to change over following a plan.
With this set of rules, all agile models are created. Note, in here we aren't throwing out processes and tools, and we aren't going without a plan. We are simply just creating priorities within the development process. We want to make the piece of software that is needed. To do this, we need to keep communication channels open and collaborate with all involved.
Through this manifesto, models were created that fit these rules.
🔺Scrum - Scrum is focused on sprints. Sprints are these 1-4 week production cycles. We take the software, come up with a goal of where we want it to be, and then build it to there.
Once we finish a sprint, we then go back to the stakeholders, show them the software, take suggestions, and move on to the next sprint.
All of this allows us to stay flexible. We are communicating with the stakeholders almost every 2 weeks with this model. This means we are constantly able to take those suggestions and change the direction of development.
🔺Kanban - The kanban system is one of optimization. With kanban, we are trying to analyze the flow of production and figure out the slowdowns.
To do this, we usually use some sort of visual flowchart. We break the project up into tasks and fill up the chart. We are then able to see if any part of production has a slowdown. Maybe for example, our review process is slowing us down, or maybe it's planning.
With kanban, we are trying to make small adjustments into the right direction. We want to work with the existing process, not replace it.
🔺Lean Startup - Lean startup is a way of testing out the market before spending on development. Here we create a MVP (Minimum Viable Product) to see if there is interest in the product we are developing.
Production costs a lot of money. It would be really bad if we spent $500,000 on a project, just to figure out that nobody is actually interested in that product.
An example of this would be to build a website that sells a certain product. Get it working to the point where people can place that item into a cart. Then when they go to purchase, have it give them a friendly message stating that this feature will be coming soon. We then track how many people are actually interested in buying products off our website.
If we have a lot of interest, then we are good to go ahead with production. If we don't have as much interest, then maybe we need to rethink our design.
- collecting email & message
- store in db
- prevent bad input
- using HTML & CSS for building
- JS for input verification
- MySQL for backend
- actual coding
- does form collect input
- does it send info. to db
- does it prevent bad input
- deploying on AWS
- fixing bugs
- adding features
A way of figuring out the exact specification of what the software should do all things that define the goal of the system.
A non-tech definition of something the user requires from the system.
Anyone can understand.
ex - ability to submit a request for medical treatment form.
A more technical way of figuring out exactly what the software should do we can say it is the technical aspect of requirements.
A technical definition of what users require from the system.
Keep it simple we are not trying to design.
ex - send AES 256 form data from the frontend to the server.
- The tire must work on SUV automobiles.
- Must support 75,00lbs pressure.
- Tire must fill US DOT standards.
- T or greater speed quality.
What are the functions of the program
what should the system do
what goals should be met
How should the system work
must have of the product itself
ex - the app must be coded in kotlin
company policies, standards, style, etc
ex - data should be encrypted by AES 256
ex - project should be developed by SCRUM
external law, regulations, trends, etc
ex - it must use SSL due to law Xyz in the US
And visit ankushgandhi.com for more usefull content
Architecture is the highest level of design within a system. It is the link between idea and reality. It takes our idea for the system, and creates a plan for it. We focus on only the largest areas of the system here. We want to break it down from idea, into concrete areas to build.
In software, bad architecture is something that CAN'T be fixed with good programming. It is a critical step within the development process. Once we decide on an architecture, we have to understand that it can't be changed.
Software architecture is all about breaking up larger systems and ideas, into smaller focused systems. Our first step is to take the requirements, and build an initial architecture. We take this broad set of ideas and guidelines, and have to organize it into functioning areas.
Each of these areas are then put through the same process to break them up into smaller and smaller pieces. Eventually we will have a blueprint for the entire system designed.
Good architecture is hard. It takes a lot of resources to develop correctly. However, this upfront cost is almost always recovered from how maintainable the software is. This will reduce the amount of bugs, and the time to fix those bugs.
Good architecture also helps for faster development and better resource utilization. If we break up the project into small pieces, we will understand how to have multiple developers work at the same time on it.
1.We are going to design an architecture of a game.
2.now we should divide these layers based on functionality.
3.now we will add another layer that controls the interaction between frontend and game logic.
The pipe and filter pattern is a good pattern to use to process data through multiple different layers. The key to this pattern is the ability of each step to input, and output the same type of data. So if you send a set of numbers in one side, you will get a set of numbers out the other side.