Why is Artificial Intelligence important?

Image
The AI learning adventure explores intelligence and its connection to engineering and technology.  Using ideas about human intelligence and intelligence more broadly, engineers can create “artificial intelligence,”; that is, impart “human” intelligence into machines or technology (Classical AI) or design technology that can itself “create” intelligence (future AI).  In fact, understanding how the brain works—”reverse-engineering the brain”—and understanding how engineers design intelligent machines—machines that replicate human intelligence—is one of the “Grand Challenges of Engineering” as set forth by The National Academy of Engineering (NAE). The implications and benefits of understanding the brain are many.  In addition to advances in the treatment of brain injuries and diseases and advancements in communications technology and computer simulations, understanding the brain will allow the design of intelligent machines with even more signicant societal impacts.  Already, mac

Waterfall vs Agile and Scrum Methodology

What Is Agile?

Agile software development is based on an incremental, iterative approach. Instead of in-depth planning at the beginning of the project, Agile methodologies are open to changing requirements over time and encourages constant feedback from the end users. Cross-functional teams work on iterations of a product over a period of time, and this work is organized into a backlog that is prioritized based on business or customer value. The goal of each iteration is to produce a working product.
In Agile methodologies, leadership encourages teamwork, accountability, and face-to-face communication. Business stakeholders and developers must work together to align the product with customer needs and company goals. 
Agile refers to any process that aligns with the concepts of the Agile Manifesto. In February 2001, 17 software developers met in Utah to discuss lightweight development methods. They published the Manifesto for Agile Software Development, which covered how they found “better ways of developing software by doing it and helping others do it” and included four values and 12 principles. The Agile Manifesto is a dramatic contrast to the traditional Project Manager’s Body of Knowledge (PMBOK) guide and standards.

Advantages of Agile

Agile evolved from different lightweight software approaches in the 1990s and is a response to some project managers’ dislike of the rigid, linear Waterfall methodology. It focuses on flexibility, continuous improvement, and speed. 
Here are some of the top advantages of Agile:
  • Change is embraced: With shorter planning cycles, it’s easy to accommodate and accept changes at any time during the project. There is always an opportunity to refine and reprioritize the backlog, letting teams introduce changes to the project in a matter of weeks.
  • End-goal can be unknown: Agile is very beneficial for projects where the end-goal is not clearly defined. As the project progresses, the goals will come to light and development can easily adapt to these evolving requirements.
     
  • Strong team interaction: Agile highlights the importance of frequent communication and face-to-face interactions. Teams work together and people are able to take responsibility and own parts of the projects.
     
  • Customers are heard: Customers have many opportunities to see the work being delivered, share their input, and have a real impact on the end product. They can gain a sense of ownership by working so closely with the project team.
     
  • Continuous improvement: Agile projects encourage feedback from users and team members throughout the whole project, so lessons learned are used to improve future iterations.

The Agile Development Cycle


Here are the phases in the Agile development cycle. It’s important to note that these phases shouldn’t happen in succession; they are flexible and always evolving. Many of these phases happen in parallel.  
  • Planning: Once an idea is deemed viable and feasible, the project team comes together and works to identify features. The goal of this phase is to break down the idea into smaller pieces of work (the features) then to prioritize each feature and assign it to an iteration.
     
  • Requirements analysis: This phase involves many meetings with managers, stakeholders, and users to identify business requirements. The team needs to gather information like who will use the product and how they will use it. These requirements must be quantifiable, relevant, and detailed.
     
  • Design: The system and software design is prepared from the requirements identified in the previous phase. The team needs to think about what the product or solution will look like. The test team also comes up with a test strategy or plan to proceed. 
  • Implementation, coding or development: This phase is all about creating and testing features, and scheduling iterations for deployment (following the iterative and incremental development approach [IID]). The development phase starts with iteration 0, because there are no features being delivered. This iteration lays down the foundation for development, with tasks like finalizing contracts, preparing the environments, and funding.
     
  • Testing: Once the code has been developed, it is tested against the requirements to make sure the product is actually solving customer needs and matching user stories. During this phase, unit testing, integration testing, system testing, and acceptance testing are done. 
  • Deployment: After testing, the product is delivered to customers for them to use. However, deployment isn’t the end of the project. Once customers start using the product, they may run into new problems that the project team will need to address.

What Is Scrum?

Scrum is a subset of Agile and one of the most popular process frameworks for implementing Agile. It is an iterative software development model used to manage complex software and product development. Fixed-length iterations, called sprints lasting one to two weeks long, allow the team to ship software on a regular cadence. At the end of each sprint, stakeholders and team members meet to plan next steps. 
Scrum follows a set of roles, responsibilities, and meetings that never change. For example, Scrum calls for four ceremonies that provide structure to each sprint: sprint planning, daily stand-up, sprint demo, and sprint retrospective. During each sprint, the team will use visual artifacts like task boards or burndown charts to show progress and receive incremental feedback.Jeff Sutherland created the Scrum process in 1993, taking the term “Scrum” from an analogy in a 1986 study by Takeuchi and Nonaka published in the Harvard Business Review. 

Advantages of Scrum

Scrum is a highly prescriptive framework with specific roles and ceremonies. While it can be a lot to learn, these rules have a lot of advantages. The benefits of Scrum include:
  • More transparency and project visibility: With daily stand-up meetings, the whole team knows who is doing what, eliminating many misunderstandings and confusion. Issues are identified in advance, allowing the team to resolve them before they get out of hand.
     
  • Increased team accountability: There is no project manager telling the Scrum Team what to do and when. Instead, the team collectively decides what work they can complete in each sprint. They all work together and help each other, improving collaboration and empowering each team member to be independent.
     
  • Easy to accommodate changes: With short sprints and constant feedback, it’s 
  • easier to cope with and accommodate changes. For example, if the team discovers a new user story during one sprint, they can easily add that feature to the next sprint during the backlog refinement meeting.
     
  • Increased cost savings: Constant communication ensures the team is aware of all issues and changes as soon as they arise, helping to lower expenses and increase quality. By coding and testing features in smaller chunks, there is continuous feedback and mistakes can be corrected early on, before they get too expensive to fix.

Steps in the Scrum Process

Scrum cycle

There are a specific, unchanging set of steps in the Scrum flow. They include:
  • Product backlog: The Product Owner and Scrum Team meet to prioritize the items on the product backlog (the work on the product backlog comes from user stories and requirements). The product backlog is not a list of things to 
  • be completed, but rather it is a list of all the desired features for the product. The development team then pulls work from the product backlog to complete during each sprint.
     
  • Sprint planning: Before each sprint, the Product Owner presents the top items on the backlog to the team in a sprint planning meeting. The team then chooses which work they can complete during the sprint and moves the work from the product backlog to the sprint backlog (which is a list of tasks to complete in the sprint).
     
  • Backlog refinement/grooming: At the end of one sprint, the team and Product Owner meet to make sure the backlog is ready for the next sprint. The team may remove user stories that aren’t relevant, create new stories, reassess the priority of stories, or split user stories into smaller tasks. The purpose of this “grooming” meeting is to ensure the backlog only contains items that are relevant and detailed, and that meet the project’s objectives.
  • Daily Scrum meetings: The Daily Scrum is a 15-minute stand-up meeting where each team member talks about their goals and any issues that have come up. The Daily Scrum happens every day during the sprint and helps keep the team on track.
     
  • Sprint review meeting: At the end of each sprint, the team presents the work they have completed at a sprint review meeting. This meeting should feature a live demonstration, not a report or a PowerPoint presentation.
     
  • Sprint retrospective meeting: Also at the end of each sprint, the team reflects on how well Scrum is working for them and talks about any changes that need to be made in the next sprint. The team may talk about what went well during the sprint, what went wrong, and what they could do differently.

What Is Waterfall?

Waterfall methodology follows a sequential, linear process and is the most popular version of the systems development life cycle (SDLC) for software engineering and IT projects. It is sometimes planned using a Gantt chart, a type of bar chart that shows the start and end dates for each task. Once one of the eight stages are complete, the development team moves onto the next step. The team can’t go back to a previous stage without starting the whole process from the beginning. And, before the team can move to the next stage, requirements may need to be reviewed and approved by the customer.

Advantages of Waterfall

Waterfall is best used for simple, unchanging projects. Its linear, rigid nature makes it easy to use and allows for in-depth documentation. 
The advantages of Waterfall include:
  • Easy to use and manage: Because the Waterfall model follows the same sequential pattern for each project, it is easy to use and understand. The team doesn’t need any prior knowledge or training before working on a Waterfall project. Waterfall is also a rigid model; each phase has specific deliverables and review, so it’s easy to manage and control.
     
  • Discipline is enforced: Every phase in Waterfall has a start and end point, and it’s easy to share progress with stakeholders and customers. By focusing on requirements and design before writing code, the team can reduce the risk of a missed deadline.
  • Requires a well documented approach: Waterfall requires documentation for every phase, resulting in better understanding of the logic behind the code and tests. It also leaves a paper trail for any future projects or if stakeholders need to see more detail about a certain phase. 

Stages of Waterfall


  1. Conception: This phase starts with an idea. The concept phase involves a rough assessment of the project, why it’s beneficial, and looks at any initial cost estimates. 
  2. Initiation: Once the idea is formed, you need to hire the project team, and define objectives, scope, purpose, and deliverables.
  3. Requirement Gathering and Analysis: Requirements are gathered and analyzed to see if the project is actually feasible. All this information is documented in a requirement specification document. 
  4. Design: The design specifications created in this phase are used in the coding phase to actually write the code. The requirements are studied and evaluated, and the design of the system is prepared. The team’s goal is to understand what actions need to be taken and what they should look like.
  5. Implementation/Coding: The actual coding of the software begins. Any flowcharts or algorithms created in the design phase are translated into a programming language.
  6. Testing: Once the code is complete, the software needs to be tested for any errors. When the testing is finished, the software is delivered to the customer. Some teams may choose to include user acceptance testing (UAT), where users test the software before it is deployed to the general public.
  7. Maintenance: Once customers have been using the software in the real world, they may find additional problems. The development team will need to resolve, change, or modify the software to continue to be effective.

Comments

Post a Comment

Popular posts from this blog

Data Analyst vs Data Scientist vs Data Engineer

Top 10 companies working on DevOps | NIIT digiNxt