SOFTWARE DEV LIFECYCLE Flashcards
Feasibility Study
Before initiating system development, securing funding is essential. This typically begins with a feasibility study, which involves thorough investigation and research to assess the project’s viability. Key questions addressed include:
What are the system's requirements? What problem does it address? What are the projected costs? Who will develop it? What's the estimated timeline? What's the project deadline? Once these questions are answered, the findings are presented to management for project approval. If the project demonstrates potential profitability, it may receive approval to proceed.
Requirements Engineering
This stage focuses on establishing a clear understanding of the business requirements for the proposed system. It entails providing a precise explanation of the system’s objectives and how it will address specific challenges or needs. Various methods, including discussions with clients and potential customers, are utilized to ensure developers comprehend all demands and requirements thoroughly
Design
During the design stage, potential solutions meeting the requirements are evaluated. The selected design is then detailed enough for developers to implement. Tools like UML simplify requirement explanations and prioritize essential features. The project scope is defined within the design, often illustrated through Use Cases and Flowcharts.
Development/Programming
During the development phase, technical components, including hardware and software, are created, procured, or configured. Developers adhere to the design specifications to ensure the system meets business or customer requirements. This involves writing code according to the system’s defined scope outlined in the design.
Testing
During testing, the components developed are thoroughly evaluated to ensure they function correctly and meet system requirements. Often, a prototype is implemented and subjected to test data sets. Adjustments and refinements are made based on user feedback to enhance performance and usability.
why a group of software developers developed the Agile Manifesto and what are the main principles of this approach to software development?
The “Agile Manifesto” emerged from software developers recognizing a crisis in the industry due to the high failure rates and costly outcomes of projects. It challenged traditional linear life-cycles like Waterfall, advocating for more incremental approaches. The manifesto prioritized:
1. Individuals and interactions over process and tools.
2.Working software over comprehensive documentation.
3.Customer collaboration over contract negotiation.
4.Responding to change over following a plan.
difference between Waterfall and Agile processes
Waterfall represents a linear software development model where tasks are sequentially completed, advancing to the next step only after the previous one is finished. It culminates in the release of the system, ensuring thorough understanding via formal documentation and review for a quality product.
On the other hand, Agile exemplifies an evolutionary approach, often termed “iterative” development. The system evolves gradually through successive versions, each more comprehensive than the last, fostering adaptability and responsiveness to change.
advantages and disadvantages of a Waterfall
Strengths of Waterfall:
-Well-suited for projects with clearly defined and stable requirements.
-Provides structured control and milestone markers for effective project management.
-Simple and straightforward due to its rigid stage-based approach.
Ideal for safety-critical systems that demand strict adherence to regulations.
Weaknesses:
-Costly to accommodate changes, particularly during testing phases.
Working software is only delivered at the end of the process, delaying feedback and validation.
-Poor planning can lead to significant project delays and cost overruns.
-Limited customer collaboration beyond initial requirements gathering and user testing, risking disengagement over time.
-Challenges in incorporating feedback or new ideas into the rigid structure.
-Restrictive nature may stifle creativity and individual contributions.
advantages and disadvantages of an Agile methodology
Advantages of Agile:
-Suitable for projects with unclear problems or solutions at the outset, allowing for flexibility.
-Enables the creation of working prototypes, enhancing clarity and cost estimation.
-Promotes collaboration with users throughout the process, leading to higher customer buy-in.
-Facilitates easier management of change due to less stringent control over requirements.
Disadvantages:
-Project management can be challenging due to multiple iterations and teams.
-Evolving requirements may lead to scope creep without careful management.
-Overall costs may be higher due to additional prototyping and testing across multiple versions.
Describe and explain Scrum methods
Scrum is a widely used Agile approach to software development, known for its unique framework for planning and monitoring work by small teams. It involves key roles:
-Product Owner: Represents the business and customer voice. -Development Team: Cross-functional, self-organizing group delivering working software. -Scrum Master: Accountable for removing obstacles hindering team progress.
Scrum employs a prioritized list of requirements called the Product Backlog. Iterations, known as “Sprints,” typically last a few weeks and aim to deliver a functional product increment. Sprints are monitored through daily, structured meetings called “Daily Stand-Ups” or “Scrum Meetings,” where team members address three questions:
1)What did I do yesterday? 2)What am I doing today? 3)What problems or impediments do I have?