Development tactics

From Computer Science Wiki

Students must be able to explain the purpose of using development tactics, how to develop requirements, and common constraints including cost, time, and quality.[edit]

The purpose of using development tactics is to plan and execute a software development project in a structured and organized way. This typically involves identifying the goals of the project, developing a set of requirements that define what the software should do, and creating a plan for how to build and test the software.

To develop requirements, you need to gather and analyze information about the users, their needs, and the business goals of the project. This can involve talking to stakeholders, conducting user research, and analyzing market data. Based on this information, you can create a set of requirements that define what the software should do, and how it should behave.

Common constraints in software development include cost, time, and quality. Cost constraints refer to the budget available for the project, and can impact the resources and technologies that are used to build the software. Time constraints refer to the deadline for completing the project, and can impact the scope and complexity of the software. Quality constraints refer to the standards and expectations for the software, and can impact the testing and validation that is done to ensure that the software meets those standards.

Managing these constraints is an important part of the development process, and requires careful planning and coordination to ensure that the project stays on track and meets its goals. This may involve trade-offs between different constraints, such as prioritizing certain features over others, or using simpler or less expensive technologies in order to meet a tight deadline. Ultimately, the goal is to find a balance that allows you to deliver a high-quality software product within the available resources and constraints.

Students must be able to describe agile development and waterfall development, and discuss the advantages and disadvantages of each. Students must be able to decompose each task into four main attributes: task owner, target completion criteria, completion date, and status.[edit]

Agile development and waterfall development are two common approaches to software development.

Agile development is an iterative and incremental approach to software development that focuses on flexibility, collaboration, and rapid delivery. In agile development, the requirements for the software are broken down into small, self-contained chunks called "user stories." Each user story is developed and delivered in a short time frame called an "iteration," and the software is released to the users at the end of each iteration. This allows the development team to quickly respond to changes in the requirements or the market, and to deliver value to the users on a regular basis.

Waterfall development is a linear approach to software development that involves breaking the project down into a series of sequential phases, each with its own specific deliverables. In the waterfall model, the requirements for the software are defined up front, and the design, implementation, and testing of the software are done in separate phases. This can be a good approach for projects with well-defined requirements and a stable environment, but it can be less flexible and adaptable to change.

Each task in a software development project can be decomposed into four main attributes: task owner, target completion criteria, completion date, and status. The task owner is the person or team responsible for completing the task. The target completion criteria define what needs to be done in order to consider the task complete. The completion date is the date by which the task should be finished. And the status is the current progress of the task, such as "in progress," "complete," or "blocked."

Some of the advantages of agile development include:

Flexibility: Agile development allows you to respond quickly to changes in the requirements or the market. Collaboration: Agile development emphasizes collaboration between the development team and the users, which can lead to better communication and a better product. Rapid delivery: Agile development allows you to deliver value to the users on a regular basis, which can help to build trust and keep the project on track. Some of the disadvantages of agile development include:

Complexity: Agile development can be more complex than other approaches, because it involves frequent iterations and a lot of coordination between the development team and the users. Risk: Agile development can involve more risk, because it relies on being able to respond quickly to changes in the requirements or the market. Some of the advantages of waterfall development include:

Predictability: Waterfall development is a predictable and structured approach, which can be good for projects with well-defined requirements and a stable environment. Ease of planning: Waterfall development is easy to plan, because it involves breaking the project down into a series of sequential phases. Some of the disadvantages of waterfall development include:

Inflexibility: Waterfall development is less flexible and adaptable to change than other approaches. Risk: Waterfall development can involve more risk, because it relies on being able to accurately predict the requirements and the development schedule up front.


Students must be able to discuss the advantages of Distributed version control.[edit]

Distributed version control is a type of version control system that allows multiple developers to work on the same codebase simultaneously, and helps to coordinate their changes. Some of the advantages of distributed version control include:

Flexibility: With distributed version control, each developer has a complete copy of the code repository on their local machine, which allows them to work offline and make changes at their own pace. Collaboration: Distributed version control makes it easy for multiple developers to collaborate on the same codebase, by allowing them to share their changes with each other and merge their changes together. Robustness: Distributed version control systems are generally more robust and resilient than centralized systems, because each developer has a complete copy of the repository and can continue working even if the central server goes down. Speed: Distributed version control systems can be faster than centralized systems, because developers can push and pull changes directly from each other's repositories, rather than having to go through a central server. Overall, distributed version control can be a powerful tool for coordinating the work of multiple developers, and can help to improve collaboration, speed, and flexibility in the development process.