0 likes | 36 Views
Project management is a discipline that involves planning, executing, and closing projects. It is aimed at achieving specific goals within given constraints such as time, budget, and resources. The primary objective of project management is to meet project goals and deliverables while adhering to scope, quality, and schedule requirements. This involves tasks such as defining the project scope, setting objectives, creating a project plan, allocating resources, and managing risks.
E N D
IT COMPANIES IT ITES ITeS stands for Information Technology Enabled Services IT stands for Information Technology IT focuses on developing and maintaining technology systems ITeS focuses on providing services that improve business operations
SOFTWARE DEVELOPMENT HIERARCHY Chairman Intern Software Developer CEO Junior Software Developer CTO Software Developer CIO/Chief Digital Officer/Chief Innovation Officer Software Engineer Senior Software Engineer/Senior Software Developer VP of Engineering/Director of Engineering Technical Lead/Engineering Lead/Team Lead Chief Architect Engineering Project Manager/Engineering Manager Software Architect
WHAT IS AGILE PROCESS • Def 1: The Agile methodology is a project management approach that involves breaking the project into phases and emphasizes continuous collaboration and improvement. • Def 2: Agile methodology is a project management framework that breaks projects down into several dynamic phases, commonly known as sprints. • Def 3: The Agile methodology is a project management and software development approach that emphasizes flexibility, collaboration, and customer-centricity. It follows the iterative as well as incremental approach that emphasizes the importance of delivering of working product very quickly. • Def 4: Agile methodologies are iterative and incremental, which means it’s known for breaking a project into smaller parts and adjusting to changing requirements.
Phases of Agile Model: Following are the phases in the Agile model are as follows: Requirements gathering: In this phase, you must define the requirements. You should explain business opportunities and plan the time and effort needed to build the project. Based on this information, you can evaluate technical and economic feasibility. Design the requirements: When you have identified the project, work with stakeholders to define requirements. You can use the user flow diagram or the high-level UML diagram to show the work of new features and show how it will apply to your existing system. Construction/ iteration: When the team defines the requirements, the work begins. Designers and developers start working on their project, which aims to deploy a working product. The product will undergo various stages of improvement, so it includes simple, minimal functionality. Testing: In this phase, the Quality Assurance team examines the product's performance and looks for the bug. Deployment: In this phase, the team issues a product for the user's work environment. Feedback: After releasing the product, the last step is feedback. In this, the team receives feedback about the product and works through the feedback.
HAPPY CUSTOMER Deliver Value That Meets customer Needs People in a Company Customer Needs Change Customer Feedback gets reflected in Roadmap Customer Feedback is Implemented
Developers develop their code Commit the code to local Git repository (Git keeps track of source code changes in developer’s local system) Once code is ready, developers push the code to remote GitHub repository. When multiple developers are working on a common project, GitHub distributed repository ensures code integrity and solves collaboration issues between developers We use Jenkins to integrate all the tools and it ensures that the code moves from one stage to another stage automatically. So, Jenkins clones the GitHub repository Jenkins will execute Maven command for build process. Maven compiles and packages the source code into an artefact Once build is success, Jenkins will ask Maven to push the source code to sonarqube for code quality analysis Once code quality is ‘Pass’, Maven publishes the artefact to JFrogartifactory Once artefacts are ready in JFrogartifactory, the artefacts can be deployed to application servers. The app server can be a standalone (apache tomcat) OR it can be a Docker container Jenkins calls Ansible scripts to run playbooks to create custom docker image (that includes our artefact). Ansible playbook will take care of publishing custom images to the docker hub Once customized image is available at docker hub, Jenkins will run the deployment manifest and service manifest on kubernetes cluster. The kubernetes master starts creating the application instances (viz deploy the application) on the worker nodes (pods) Once the application is running successfully, we can now access the application using a URL which is mapped to specific application endpoint. End users can now access the application.
What is Scrum Scrum is a management framework that teams use to self-organize tasks and work towards a common goal. It is a framework within which people can address complex adaptive problems while the productivity and creativity of delivering products are at the highest possible value. • Scrum allows us to develop products of the highest value while making sure that we maintain creativity and productivity. • The iterative and incremental approach used in scrum allows the teams to adapt to the changing requirements.
Key Components of Scrum: Scrum Team: Usually consists of a Product Owner, Scrum Master, and Development Team. Product Backlog: A prioritized list of features, enhancements, and fixes to be worked on. Sprint: A time-boxed period (usually 2-4 weeks) during which a set of work from the product backlog is completed. Daily Scrum: A short daily meeting where the team discusses progress and plans for the next 24 hours. Sprint Review: A meeting at the end of each sprint to review what was accomplished. Sprint Retrospective: A meeting after the Sprint Review to discuss what went well and what can be improved.
Extreme Programming (XP) is an Agile software development methodology that focuses on delivering high-quality software through frequent and continuous feedback, collaboration, and adaptation. XP emphasizes a close working relationship between the development team, the customer, and stakeholders, with an emphasis on rapid, iterative development and deployment. Extreme programming is one of the most popular and well-known approaches in the family of agile methods. an XP project starts with user stories which are short descriptions of what scenarios the customers and users would like the system to support. Each story is written on a separate card, so they can be flexibly grouped.
Code Review: Code review detects and corrects errors efficiently. It suggests pair programming as coding and reviewing of written code carried out by a pair of programmers who switch their work between them every hour. • Testing:Testing code helps to remove errors and improves its reliability. XP suggests test-driven development (TDD) to continually write and execute test cases. In the TDD approach, test cases are written even before any code is written. • Incremental development: Incremental development is very good because customer feedback is gained and based on this development team comes up with new increments every few days after each iteration. • Simplicity: Simplicity makes it easier to develop good-quality code as well as to test and debug it. • Design: Good quality design is important to develop good quality software. So, everybody should design daily. • Integration testing: Integration Testing helps to identify bugs at the interfaces of different functionalities. Extreme programming suggests that the developers should achieve continuous integration by building and performing integration testing several times a day.
1. Incremental Development: - XP promotes incremental development, where software is built in small, manageable increments. Teams deliver working features frequently, allowing stakeholders to provide feedback early. - Example: Imagine a startup building an e-commerce platform. Instead of waiting months to release the entire system, they develop and release individual features like user registration, product search, and checkout one by one. 2. Continuous Integration (CI): - CI ensures that code changes are integrated into the main codebase frequently. Developers commit their changes multiple times a day, and automated tests run to catch any regressions. - Example: A startup team commits code to the shared repository several times a day. Automated tests validate the changes, preventing integration issues. 3. Test-Driven Development (TDD): - TDD is a fundamental XP practice. Developers write tests before writing the actual code. This ensures that code meets requirements and remains maintainable. - Example: A developer working on a payment gateway feature writes a failing test for processing payments. They then implement the payment logic to make the test pass.
4. Pair Programming: - In XP, developers work in pairs—two people at one computer. One writes code while the other reviews, suggests improvements, and catches errors. - Example: Two startup developers collaborate on implementing a recommendation engine. One writes the algorithm, and the other reviews the code, ensuring quality. 5. Refactoring: - Refactoring involves improving code without changing its external behavior. XP encourages continuous refactoring to keep the codebase clean and maintainable. - Example: A startup team identifies duplicated code in their inventory management module. They refactor it into a reusable function, enhancing code quality. 6. Collective Code Ownership: - Everyone on the team owns the entire codebase. No single person is solely responsible for specific modules. This fosters collaboration and knowledge sharing. - Example: A startup developer can modify any part of the application, even if they didn't originally write it. This shared ownership accelerates development.