Software design

Cards (50)

  • Software development 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 the whole 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