Categories
Cloud DevOps History Software Engineering

Kanban Software Development

Return to Timeline of the History of Computers, Networking

Kanban (Japanese 看板, signboard or billboard) is a lean method to manage and improve work across human systems. This approach aims to manage work by balancing demands with available capacity, and by improving the handling of system-level bottlenecks.

Work items are visualized to give participants a view of progress and process, from start to finish—usually via a Kanban board. Work is pulled as capacity permits, rather than work being pushed into the process when requested.

In knowledge work and in software development, the aim is to provide a visual process management system which aids decision-making about what, when, and how much to produce. The underlying Kanban method originated in lean manufacturing,[1] which was inspired by the Toyota Production System.[2] Kanban is commonly used in software development in combination with other methods and frameworks such as Scrum.[3]

Fair Use Sources:

Categories
Cloud DevOps History Software Engineering

Scrum Software Development

Return to Timeline of the History of Computers, Networking

Scrum is an agile framework for developing, delivering, and sustaining complex products,[1] with an initial emphasis on software development, although it has been used in other fields including research, sales, marketing and advanced technologies.[2] It is designed for teams of ten or fewer members, who break their work into goals that can be completed within timeboxed iterations, called sprints, no longer than one month and most commonly two weeks. The Scrum Team track progress in 15-minute time-boxed daily meetings, called daily scrums. At the end of the sprint, the team holds sprint review, to demonstrate the work done, and sprint retrospective to improve continuously.

Fair Use Sources:

Categories
Cloud DevOps DevSecOps-Security-Privacy History Software Engineering

Agile Software Development

Return to Timeline of the History of Computers, Networking

Agile Software Development – “Agile software development — also referred to simply as Agile — is a type of development methodology that anticipates the need for flexibility and applies a level of pragmatism to the delivery of the finished product.”

Fair Use Source: 809137

In software developmentagile (sometimes written Agile)[1] practices approach discovering requirements and developing solutions through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s).[2] It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages flexible responses to change.[3][4][further explanation needed]

It was popularized by the Manifesto for Agile Software Development.[5] The values and principles espoused in this manifesto were derived from and underpin a broad range of software development frameworks, including Scrum and Kanban.[6][7]

While there is much anecdotal evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations, the empirical evidence is mixed and hard to find.[8][9]

The Manifesto for Agile Software Development

Agile software development values

Based on their combined experience of developing software and helping others do that, the seventeen signatories to the manifesto proclaimed that they value:[5]

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is to say, the items on the left are valued more than the items on the right.

As Scott Ambler elucidated:[21]

  • Tools and processes are important, but it is more important to have competent people working together effectively.
  • Good documentation is useful in helping people to understand how the software is built and how to use it, but the main point of development is to create software, not documentation.
  • A contract is important but is no substitute for working closely with customers to discover what they need.
  • A project plan is important, but it must not be too rigid to accommodate changes in technology or the environment, stakeholders’ priorities, and people’s understanding of the problem and its solution.

Some of the authors formed the Agile Alliance, a non-profit organization that promotes software development according to the manifesto’s values and principles. Introducing the manifesto on behalf of the Agile Alliance, Jim Highsmith said,

The Agile movement is not anti-methodology, in fact many of us want to restore credibility to the word methodology. We want to restore a balance. We embrace modeling, but not in order to file some diagram in a dusty corporate repository. We embrace documentation, but not hundreds of pages of never-maintained and rarely-used tomes. We plan, but recognize the limits of planning in a turbulent environment. Those who would brand proponents of XP or SCRUM or any of the other Agile Methodologies as “hackers” are ignorant of both the methodologies and the original definition of the term hacker.— Jim Highsmith, History: The Agile Manifesto[22]

Agile software development principles

The Manifesto for Agile Software Development is based on twelve principles:[23]

  1. Customer satisfaction by early and continuous delivery of valuable software.
  2. Welcome changing requirements, even in late development.
  3. Deliver working software frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the primary measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention to technical excellence and good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. Best architectures, requirements, and designs emerge from self-organizing teams
  12. Regularly, the team reflects on how to become more effective, and adjusts accordingly

Fair Use Sources:

Categories
Cloud DevOps History Software Engineering

Project Management

Return to Timeline of the History of Computers, Networking

Project management is the process of leading the work of a team to achieve goals and meet success criteria at a specified time. The primary challenge of project management is to achieve all of the project goals within the given constraints.[1] This information is usually described in project documentation, created at the beginning of the development process. The primary constraints are scope, time, quality, and budget.[2] The secondary challenge is to optimize the allocation of necessary inputs and apply them to meet pre-defined objectives.

The objective of project management is to produce a complete project which complies with the client’s objectives. In many cases the objective of project management is also to shape or reform the client’s brief to feasibly address the client’s objectives. Once the client’s objectives are clearly established they should influence all decisions made by other people involved in the project – for example project managers, designers, contractors and sub-contractors. Ill-defined or too tightly prescribed project management objectives are detrimental to decision making.

project is a temporary endeavor designed to produce a unique product, service or result with a defined beginning and end (usually time-constrained, and often constrained by funding or staffing) undertaken to meet unique goals and objectives, typically to bring about beneficial change or added value.[3][4] The temporary nature of projects stands in contrast with business as usual (or operations),[5] which are repetitive, permanent, or semi-permanent functional activities to produce products or services. In practice, the management of such distinct production approaches requires the development of distinct technical skills and management strategies.[6]

Fair Use Sources:

Categories
Cloud Data Science - Big Data DevOps DevSecOps-Security-Privacy Networking Operating Systems Software Engineering

Software Project Management

Return to Timeline of the History of Computers, Networking

Software project management is an art and science of planning and leading software projects.[1] It is a sub-discipline of project management in which software projects are planned, implemented, monitored and controlled.

Fair Use Sources:

Categories
DevOps

Agile Velocity



Agile velocity – “Agile velocity is a metric that predicts how much work a software development team can successfully complete within a two-week sprint (or similar time-boxed period).”

Fair Use Source: 809137

Categories
DevOps

Agile Test Automation Pyramid



agile test automation pyramid – “The agile test automation pyramid is a graphical strategy guide for implementing automated software testing.”

Fair Use Source: 809137

Categories
DevOps

Agile Project Management (APM)


Agile Project Management – “Agile Project Management (APM) is an iterative approach to planning and guiding project processes, that breaks it down into smaller cycles called sprints.”

Fair Use Source: 809137

Categories
Cloud DevOps

12 Factor App – Twelve-Factor Applications

12 factor app (twelve-factor app) – “Twelve-factor app is a methodology for building distributed applications that run in the cloud and are delivered as a service.” Fair Use Source: 809137