Software Engineering Week 12

Software workshop, software crisis, software process control, heavy control, agile, DevOps

These terms summarizeseveral important concepts and phases in the history and practice of software development. Let's break them down one by one:

  1. Software Craftsmanship: This is an early model of software development that emphasizes personal skills and experience. In this model, programmers act like craftsmen, working individually or in small teams with less formal structure and processes. Itfocuses more on individual capabilities than on teamwork or process control.

  2. Software Crisis: This term describes a series of problems in software development in the 1960s and early 1970s. With the popularity of computers and the increase in software complexity, the industry has begun to face problems such as project overtime, over budget, and low quality. This has led to the need for more rigorous software engineering practices.

  3. Software Process Control: In response to the software crisis, the industry began to adopta more systematic approach to manage software development< /span>. This includes well-defined development phases, documentation standards and quality assurance measures. This approach is designed to improve predictability and quality control.

  4. Heavyweight Processes: Among the early responses to process control emerged methodologies characterized by strict rules and procedures , such as waterfall model. These methods are considered "heavy" because they tend to be linear, require extensive documentation work and stage reviews, and lack flexibility.

  5. Agile: Agile development emerged in the early 21st century as a reaction to heavy control methods, emphasizing faster and more adaptable development processes. Agile methodologies such as Scrum and Extreme Programming (XP) encourage iterative development, team collaboration, customer feedback, and adaptive planning.

  6. DevOps: DevOps is a further development of agile, focusing not only on software development, but also on operations and maintenance. It is designed to work throughautomation, continuous integration and continuous delivery (CI/CD) andclose collaboration between teams< /span> to improve software delivery speed and quality.

These concepts reflect the evolution of the field of software development, from early individual craftsman-style development, to process control in response to software crises, to agile and DevOps practices that pursue greater speed, flexibility, and collaboration. Each stage is a response to the challenges of the previous period, demonstrating the software industry's ability to continuously evolve and adapt to new technologies and new needs.


DevOps

DevOps is a collection of cultures and practices designed to improve collaboration and efficiency in software development and IT operations. Its core concept is to break down the barriers between traditional software development (Dev) and operation and maintenance (Ops) and speed up the process through automation and continuous improvement methods. Deliver software faster, improve service quality, and ensure more efficient workflows.

Here are a few key elements of DevOps:

  1. Continuous Integration and Continuous Delivery (CI/CD): Automatically move code from the development stage to the production environment, ensuring that software can be released quickly and frequently while maintaining high quality .

  2. Automation:Automation processes reduce human error and increase efficiency and consistency. This includescode deployment, testing, monitoring and infrastructure management.

  3. Collaboration and Communication: Encourage close collaboration between development and operations teams to solve problems and share knowledge more effectively.

  4. Monitoring and Feedback: Continuously monitor the performance of software and infrastructure, respond quickly to issues, and use feedback to make improvements.

  5. Microservices and containerization: Breaking applications into small, independent services that can be developed and deployed quickly and independently. Container technologies such as Docker and Kubernetes are very popular in this space.

  6. Agile Methodology: Agile development methods promote a faster and more flexible development process, which is consistent with the goals of DevOps.

Through these practices, DevOps helps shorten the system development cycle, improve delivery efficiency, reduce the risk of deployment failure, ensure higher software quality, while improving customer satisfaction and business competitiveness.


Basic model of cloud computing services

There are three main models of cloud computing services: IaaS (Infrastructure as a Service), SaaS (Software as a Service), and one is PaaS (Platform as a Service). Let me briefly explain their respective meanings and differences:

IaaS (Infrastructure as a Service, Infrastructure as a Service)

  • Meaning: IaaS providesvirtualized hardware resources, such as virtual machines, storage space, and network wait. It allows users to access and manage these infrastructures over the Internet without the need to purchase and maintain physical servers.
  • 例子:Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform。
  • Purpose: Suitable for scenarios that require a high degree of customization and control of hardware resources, such as running a specific operating system or application.

PaaS (Platform as a Service, platform as a service)

  • Meaning: PaaSProvides a platform that allows developers to build, test, deploy and manage applications. This platform includes software and hardware infrastructure, as well as development tools, database management systems, etc.
  • 例子:Heroku、Google App Engine、Microsoft Azure App Services。
  • Usage: Ideal for developers because it simplifies setting up a programming environment so they can focus on software development rather than infrastructure management.

SaaS (Software as a Service, software as a service)

  • Meaning: SaaS is a model for providing software applications over the Internet. Users typically use the software on a subscription basis without having to install and maintain any hardware or software.
  • Examples: Google Workspace (formerly G Suite), Microsoft Office 365, Salesforce.
  • Purpose: Suitable for most end users and enterprises because it provides out-of-the-box software services without having to worry about software installation, updates, and maintenance.

In summary, IaaS provides infrastructure in the cloud, PaaS provides a platform for developing applications, and SaaS directly provides available software applications. These service models are designed to simplify users' IT operations, reduce dependence on physical hardware and complex software, while improving scalability and flexibility.


Waterfall model and agile model

The waterfall model is plan-driven, while the agile model is value-driven. Let’s explore the features and differences between these two methods in more detail.

Waterfall model (plan driven)

The waterfall model is a traditional software development method whose characteristics include:

  • Linear and sequential: The waterfall model divides the software development process into several sequential stages, such as requirements analysis, design, implementation, testing, deployment, and maintenance. Each phase waits for the previous phase to complete before starting.

  • Emphasis on planning and documentation: In the waterfall model, project plans and detailed documentation are considered very important. Requirements and designs should be fully defined and documented before the project begins.

  • Difficulty responding to changes: Due to its linear and predetermined nature, the waterfall model has difficulty adapting to changes in project needs or goals.

  • Risks and problems may not manifest until later: Because the testing and implementation phases are late in the development cycle, problems and risks may be discovered late.

Agile model (value driven)

In contrast, agile models take a different approach:

  • Iterations and Increments:Agile methods break projects into small, manageable parts called iterations< a i=3>. Each iteration includes its own requirements analysis, design, implementation, and testing.

  • Responsive to change: The agile model emphasizes adaptability and rapid response to change. Requirements and solutions evolve throughout the project.

  • Valuing customer collaboration: Agile models encourage continuous communication and collaboration with customers to ensure that the final product meets the actual needs of users.

  • Delivering value first: Agile methods focus on delivering software with business value rather than following a preset plan or completing extensive documentation work.

Summarize

In general, the waterfall model is suitable for projects whose requirements are stable, clear, and unlikely to change during development. The agile model is more suitable for environments with changing needs and rapid response to market changes. Through its flexibility and focus on value, the agile model provides a more effective way to manage rapidly evolving and changing projects.


Agile software development methods

Scrum and Scrum/XP are two forms of agile software development methodologies. They are all based on agile principles, but have some differences and characteristics. Let me explain the characteristics of each of them.

Scrum

Scrum is a popular agile development framework whose main features include:

  • Roles: Scrum teams usually includeProduct Owner, Scrum Master andDevelopment Team.
  • Sprints: Development work is divided into a series of fixed-length iterations called . 2-4 weeks, usually lasting Sprints
  • Daily Meetings: Short dailystand-up meetings to discuss progress, plans and challenges.
  • Sprint Planning Meeting: At the beginning of each sprint, the team determines what work will be accomplished in the upcoming sprint.
  • Retrospectives and Reflections: Conduct retrospective meetings at the end of each sprint to evaluate the results and learn from them.

Scrum focuses on managing and organizing the software development process, but does not have particularly specific guidance on actual development practices.​ 


Let’s look at two key components of the Scrum framework in more detail: sprints and daily stand-ups.

Sprints

Sprint is the core element in the Scrum framework. Its specific characteristics are as follows:

  1. Definition: A sprint is a fixed-time work cycle in which a Scrum team works to complete a shippable product increment. Each sprint has a clear goal and a planned set of work.

  2. Duration: The duration of a sprint is usually fixed, typically 2 to 4 weeks. The length chosen depends on the complexity of the project and the needs of the team. Once determined, the length of the sprint is typically kept constant throughout the project to maintain consistency and rhythm.

  3. Planning: Before the start of each sprint, the team will conduct a sprint planning meeting to determine the work to be completed in the following sprint. These tasks are usually picked from the Product Backlog and converted into the Sprint Backlog.

  4. Goal: Each sprint has a specific goal around which the backlog is chosen and focus is maintained throughout the sprint.

  5. End : At the end of the sprint, the team should deliver a "completeable" product increment, that is, work that meets the defined quality standards and completion standards (Definition of Done) .

The core goal of a sprint is to complete the current backlog items of greatest value. this means:

  1. Focus on the most important tasks: At the beginning of each sprint, the team selects the most important tasks from the Product Backlog Priority tasks. These tasks are considered to be those that currently bring the most value to the project.

  2. Clear Goal: Each sprint is set with a clear goal, usually around delivering a specific product feature or functionality. This goal helps the team stay focused and provides direction for all work during the sprint.

  3. Iterative Delivery: By delivering a working product increment at the end of each sprint, the Scrum approach ensures that the project continues to deliver value while allowing the team to build on the feedback received Make adjustments.

Daily stand-up meeting

Daily stand-up meetings are the key mechanism for Scrum team communication and coordination, as follows:

  1. Definition: This is a short meeting held daily to synchronize work and challenges among team members.

  2. Time: These meetings are usually short, around 15 minutes, to maintain efficiency.

  3. Standing: Meetings are usually held standing to keep the pace of the meeting fast and focused.

  4. Content: During the meeting, each team member typically answers three questions:

    • What did I accomplish yesterday?
    • What do I plan to accomplish today?
    • What obstacles or challenges have I encountered?
  5. Purpose: The purpose of these meetings is to quickly identify issues and roadblocks and to facilitate communication within the team. They are not used to discuss solutions in detail, but to provide status updates and identify issues that require subsequent discussion.

Theessence of the daily stand-up meeting (also known as Daily Scrum) is to ensure that team members are in sync with each other on the day's work. It is A daily iterative process. Specifically:

  1. Daily Sync: This meeting allows team members to share their progress, plans, and challenges. Doing this ensures that everyone has a clear understanding of the current status of the project.

  2. Identify blockers: Through daily communication, teams can quickly identify and resolve issues that may impede progress, which helps keep workflow flowing.

  3. Adaptation: Daily stand-ups also provide an opportunity for the team to make necessary adjustments based on the previous day’s work and challenges, which enhances the team’s understanding of Adaptability to change.

Summarize

Sprints and daily stand-ups are two core practices in the Scrum methodology. Sprints allow teams to maintain focus and rhythm, delivering products incrementally. Daily stand-ups provide a mechanism for daily synchronization and identification of challenges facing the team, ensuring all members stay on the same page. Together, these two practices support a flexible, responsive development environment.


Scrum/XP

Scrum/XP combines the characteristics of Scrum and Extreme Programming (XP for short). It includes the iteration planning and team structure of Scrum, and the engineering practices of XP. Key features include:

  • The Scrum Framework: Use Scrum roles, sprints, meetings, etc.
  • XP technical practices: including continuous integration, test-driven development (TDD), code refactoring and pair programming, etc.
  • Emphasis on technical excellence:Scrum/XP pays more attention to development practices to ensure code quality and continuous Technical Improvement.

Scrum and Scrum/XP are both agile methodologies, but they have a slightly different focus. Scrum focuses more on project management and organizational processes, while Scrum/XP combines the process management of Scrum and the technical practices of XP, providing a more comprehensive framework that focuses on both project management and technical practice excellence. Which method to choose depends on the specific needs of the team, the complexity of the project, and the skill levels of the team members.


burn down chart

Burn-down Chart is a tool commonly used in agile project management to track the reduction of remaining work in a sprint or the entire project. It is a visual representation that helps teams understand how far they are on completing tasks and whether they are on track to complete their tasks. Here are some key points about burndown charts:

Features

  1. Chart type: A burndown chart is usually a line chart, with the horizontal axis representing time (such as the number of days in a sprint) and the vertical axis representing the remaining work (such as story points, hour or other unit of measurement).

  2. Track Progress: The lines in the chart show the expected and actual reduction in effort from the start of the sprint to the current date.

  3. Expected Progress Line: There is usually a line representing the ideal effort reduction trend that slopes from the initial total effort to zero. This line represents how the workload should be reduced if the task is completed according to plan.

  4. Actual progress line: Another line showing the actual reduction in effort. The starting point of this line is also the total effort at the beginning of the sprint, but its evolution over time reflects actual completion.

use

  1. Monitor progress: Burndown charts allow teams to visually see the difference between project progress and plan, helping them determine whether they are behind or ahead of schedule.

  2. Forecasted completion time: By analyzing the burndown chart, the team can estimate the completion time of the remaining work and make corresponding plan adjustments.

  3. Facilitate communication: The burndown chart serves as a visual tool that facilitates communication between team members, stakeholders, and management so that everyone understands the project current status.

importance

  • The burndown chart is an important information radiator in agile development. It provides a way to quickly assess the status of the project. By observing the burndown chart, the team can identify problems in a timely manner, such as lagging progress or inaccurate workload estimates, and take steps to make adjustments.

  • However, a burndown chart only shows a quantitative measure of the amount of work remaining; it does not provide information about the quality of the work or changes in the project scope. Therefore, it is best used in conjunction with other tools and metrics to get a comprehensive project view.


Signboard Kanban

Kanban is a popular agile method for visualizing workflows and promoting work efficiency. It originated from Toyota's production system and was later adapted to software development and other areas of knowledge work. The core of the Kanban method is to visually manage tasks and workflows to increase transparency and team productivity.

Core Principles of Kanban

  1. Visual workflow:

    • In Kanban, the workflow is broken down into stages, each with its corresponding area or column. These stages may include To Do, In Progress, Review, and Done.
  2. Limit the amount of work in progress:

    • Kanban boards encourage limiting the number of tasks that can be done at any given time. This is called a "work in progress (WIP) limit". By limiting the amount of work in progress, teams can focus more on the current task, reduce the overhead of context switching, and complete work faster.
  3. Flowability work

    • The Kanban method emphasizes that tasks should flow continuously and smoothly through different stages, rather than moving in batches.
  4. Drive work based on demand:

    • In a Kanban system, new tasks are "pull" based on the capacity and demand of the current workflow, rather than being pushed. This means that new tasks will only be started when there is enough capacity to handle them.

Advantages of Kanban

  1. Height transparency :

    • By visualizing all tasks, team members can clearly see the status of the entire workflow, making it easier to identify bottlenecks and blockers.
  2. 灵Activity

    • The Kanban approach allows teams to flexibly adjust tasks based on current workloads and priorities.
  3. Enhance team collaboration:

    • Kanban boards promote better teamwork and communication because the entire team can see the status of each task.
  4. Change of order

    • Kanban boards encourage teams to continually review and improve their work processes to become more efficient and effective.

Summarize

Kanban board is a simple but powerful agile tool that helps teams effectively manage work processes through visual means. Its flexibility and emphasis on continuous improvement make it the preferred approach for many agile teams.


Other terms

Epic

  • Definition: An Epic is a larger unit of work that usually covers a broad goal or requirement. It is the highest level in the hierarchy of requirements and typically spans functional areas of multiple projects or products.
  • Features: Epics are more abstract and broad, and usually take longer to complete. They need to be further broken down into smaller parts to be implemented.

Feature

  • Definition: Feature is a subset of Epic, representinga specific product function or a set of functions .
  • Features: Feature is a further refinement of Epic, but still maintains a certain breadth. It covers a relatively large area of ​​functionality, but is more specific than Epic.

Story

  • Definition: Story (often called User Story) is a further refined requirement that Describes the need for a specific feature or improvement from a user's perspective.
  • Features: Stories are relatively small, specific functional requirements that can usually be completed in one iteration or sprint. User stories help teams focus on user value.

Task

  • Definition: Task is the specific work item to implement Story.
  • Characteristics: Tasks are the most specific part of the requirements hierarchy and representactual work instructions. A user story can be broken down into multiple tasks.

Increasing granularity from Epic to Task

  • From Epic to Feature to Story to Task, each step is about breaking down large requirements into smaller, more specific parts.
  • This decomposition helps the team better understand complex requirements and translate them into concrete work plans.
  • As you transition from Epic to Task, requirements gradually increase in granularity and become more specific and actionable.

Through this hierarchical and step-by-step approach, agile teams can effectively plan and track complex software development projects while ensuring that the work remains focused on delivering user value.

Guess you like

Origin blog.csdn.net/qq_65052774/article/details/134548441