Softwaredevelopment is the process of taking a set of requirements from a user, analyzing them, designing a solution, and implementing that solution on a computer
Programming is central to software development, but it's not thewhole thing
Software engineering involves software development and the entire management side of creating a computer program that people will use
Software development is a narrowing of the focus of software engineering to just the creation of the actual software
In software development, a small, well-integrated team is needed for effective communication and collaboration
Good communication among team members and with the customer is essential for successful project completion
Every project, regardless of size, follows a process; larger projects tend to be more plan-driven, while smaller projects tend to follow agile development processes
Flexibility in the development process is crucial as requirements change and unexpected events occur
A project plan is essential for implementing a software development project successfully
Regular status meetings help developers stay informed about the project's progress and sync up with the team
Selecting the right tools and practices for each project is crucial for its success
Software development projects require flexibility as new requirements emerge and circumstances change
Being able to acknowledge delays in a project schedule is important for effective project management
Every program goes through a life cycle with steps like conception, requirements gathering, design, coding, testing, release, maintenance, and retirement
Software development projects involve four variables: cost, time, quality, and features
The waterfall model is a traditional plan-driven process model that progresses through various phases but has limitations in handling changes and backing up
Iterative process models recognize that requirements evolve and mistakes happen, leading to a more flexible approach in building software products
In the iterative model, the highest priority requirements are picked and a series of iterations are planned, where each iteration is a complete project
For each iteration, a set of the next highest priority requirements is added, and the project is repeated
Completing a project with a subset of requirements at the end of each iteration results in a complete, working, and robust product, albeit with fewer features than the final product will have
Evolutionary prototyping is a traditional way of implementing the iterative model
Evolutionary prototyping prioritizes requirements as they are received and produces increasingly feature-rich versions of the product
Each version in evolutionary prototyping is refined using customer feedback and the results of integration and system testing
Agile development focuses on working code as the goal of any software development project
Agile methodologies emphasize writing tests before code, frequent product releases, significant customer involvement in development, common code ownership, and refactoring
The Agile Manifesto values individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, and responding to change over following a plan
Extreme Programming (XP) was created around 1995 by Kent Beck and Ward Cunningham
XP relies on heavy customer involvement, continuous unit testing, pair programming, and short iteration cycles with frequent releases
XP's four fundamental ideas are heavy customer involvement, continuous unit testing, pair programming, and short iteration cycles with frequent releases
XP's four basic activities are designing, coding, testing, and listening to partners and customers
XP's 12 practices include the planning game, small releases, metaphor, simple design, testing, refactoring, pair programming, collective ownership, continuous integration, and maintaining a 40-hour work week
XP philosophy shares similarities with Tom DeMarco’s Peopleware arguments
People are less productive working 60-70 hours a week compared to 40 hours
Scrum is a management approach in software development
Scrum is a variation on the iterative development approach and incorporates features of XP
Scrum uses teams of typically no more than ten developers
Scrum defines three roles: product owner, Scrum master, and development team
The development team in Scrum is self-organizing and decides on tasks and development processes during the sprint
Scrum is characterized by sprints, iterations of between one and four weeks
Scrum requirements are encapsulated in two backlogs: product backlog and sprint backlog