UNIT 7 DATABASE DESIGN AND DEVELOPMENT Ramazan Yamadaev [DATE] [COMPANY NAME] [Company address] UNIT 7 DATABASE DESIGN AND DEVELOPMENT Ramazan Yamadaev [DATE] A software life cycle refers to the process of creating and maintaining software. There are different software development methodologies that follow either an iterative or a sequential approach. Iterative Software Life Cycles: Agile Software Development: Agile is an iterative approach that emphasizes collaboration, flexibility, and customer satisfaction. In this method, the software is developed in small increments, and feedback is incorporated at each step. The focus is on delivering working software quickly and responding to change. Below is a diagram explaining the Agile Software Life Cycle: Agile Software Development is an iterative approach to software development that emphasizes flexibility and collaboration. The process starts with defining the requirements, followed by a planning stage. The development stage is then followed by testing and deployment, with each iteration building upon the previous one. Feedback from stakeholders is continuously gathered throughout the process, and the software is refined and improved based on this feedback. The Agile approach is best suited for projects with rapidly changing requirements and a focus on delivering high-quality software quickly. RAD (Rapid Application Development): RAD is an iterative approach that focuses on delivering a working prototype quickly. This method is suitable for projects with tight timelines and high levels of uncertainty. In RAD, the software is developed in short cycles, and feedback is incorporated at each step. Below is a diagram explaining RAD (Rapid Application Development), Rapid Application Development (RAD) is an iterative approach to software development that emphasizes speed and the rapid creation of working prototypes. The process starts with defining the requirements, followed by a prototyping stage. The development stage is then followed by the gathering of user feedback and refinement. This cycle continues until the final product is deployed. RAD is best suited for projects where speed is a critical factor and a working prototype is needed quickly to validate the requirements. Sequential Software Life Cycles: Waterfall Model: The Waterfall model is a sequential approach where each phase of the software development process is completed before moving on to the next phase. This method is suitable for projects with well-defined requirements and limited scope for change. In the Waterfall model, phases like requirements gathering, design, coding, testing, and maintenance are completed in a linear sequence. Below is a diagram explaining the Waterfall Model: The diagram shows the six stages of the Waterfall Model: Requirements, Analysis, Design, Implementation, Testing, and Deployment. The stages are completed in a sequential order, with each stage building upon the previous one. Once a stage is completed, it cannot be revisited until the final product is deployed. This model is best suited for projects with well-defined and unchanging requirements, where the focus is on completing each stage as efficiently as possible. Spiral Model: The Spiral model is a sequential approach that combines elements of both the Waterfall model and the Iterative model. This method is suitable for projects with high levels of uncertainty and risk. In the Spiral model, the software is developed in a series of iterations, each of which involves several phases like requirements gathering, design, coding, and testing. At the end of each iteration, feedback is incorporated, and the next iteration begins. Note: The choice of a software life cycle depends on the specific requirements and constraints of a project. Below is a diagram explaining the Spiral Model: The Spiral Model is a iterative software development process that combines elements of the Waterfall Model and the Iterative Model. The process starts with defining the requirements and conducting a risk analysis. Then, a planning stage is performed to determine the next steps. The development stage is followed by testing, deployment, and a customer review. The process then repeats, with each iteration building upon the previous one, until the final product is deployed. The Spiral Model is best suited for projects with high risks and uncertainty, as it allows for continuous risk assessment and mitigation throughout the development process. Advantages of Iterative Software Life Cycles: 1. Flexibility: Iterative software development allows for changes and modifications to be made throughout the development process, making it easier to accommodate new requirements and changes in direction. 2. Early Feedback: By delivering smaller portions of the software product, stakeholders are able to provide early feedback and have a better understanding of the software's functionality. 3. Continuous Improvement: Iterative development enables continuous improvement of the software product through regular feedback and testing. 4. Reduced Risk: By breaking the software development process into smaller stages, the risks associated with large-scale projects are reduced. Disadvantages of Iterative Software Life Cycles: 1. Time-Consuming: Iterative development can be more time-consuming than traditional waterfall development, as each iteration must be thoroughly tested and reviewed. 2. Increased Cost: The continuous development and testing associated with iterative software development can lead to increased costs. 3. Complexity: The iterative process can be complex, as multiple iterations may be required before the final product is completed. 4. Communication Challenges: Effective communication between all stakeholders is critical for the success of iterative development, as changes and modifications must be communicated and understood by all parties involved. Advantages of the Sequential Software Life Cycle: 1. Predictability: The sequential nature of the software development process provides a clear roadmap for the project and makes it easier to predict the timeline for completion. 2. Simplicity: The sequential life cycle is a straightforward approach that is easy to understand and follow. 3. Well-Defined Process: Each stage of the sequential life cycle has welldefined objectives, making it easier to track progress and identify potential issues. 4. Better Control: The sequential life cycle provides better control over the development process, as each stage must be completed before the next one can begin. Disadvantages of the Sequential Software Life Cycle: 1. Inflexibility: The sequential nature of the software development process makes it difficult to accommodate changes and modifications once a stage has been completed. 2. Lack of Feedback: Feedback from stakeholders is only obtained at the end of each stage, which can lead to a lack of early feedback and a better understanding of the software's functionality. 3. Missed Requirements: Requirements may not be fully understood until later stages of the development process, leading to the possibility of missed requirements or significant changes in direction. 4. Time and Cost Overruns: If issues are not identified early, the sequential software life cycle can lead to time and cost overruns as changes must be made in later stages of the development process. Risk management is a crucial aspect of the software development life cycle as it helps identify, assess, and mitigate potential threats to the project's success. The following steps describe the process of managing risk in software development: 1. Risk Identification: The first step in managing risk is to identify potential threats to the project. Risks can arise from various sources such as changes in project scope, technical difficulties, resource constraints, and so on. 2. Risk Assessment: Once the risks have been identified, the next step is to assess the potential impact of each risk on the project. The impact could be in terms of cost, schedule, quality, or any other project objective. 3. Risk Prioritization: After assessing the impact of each risk, the next step is to prioritize the risks based on their potential impact. Risks with higher impact should receive more attention and be addressed first. 4. Risk Mitigation: The next step is to implement risk mitigation strategies to reduce the impact of risks on the project. Strategies may include contingency plans, risk transfer, risk avoidance, or risk reduction. 5. Risk Monitoring and Control: After implementing the risk mitigation strategies, it is important to continuously monitor the risks and update the mitigation plans as necessary. This helps ensure that risks are effectively managed throughout the software development life cycle. 6. Risk Communication: Effective communication of risks and risk management plans is important to ensure that stakeholders are aware of the risks and the steps being taken to manage them. Note: The process of risk management may vary based on the specific requirements and constraints of a project, but the general principles remain the same. Discuss using an example why a particular life cycle model is selected for a development environment. Choosing a software development life cycle model is an important decision in the software development process as it impacts the overall quality and success of the project. A particular life cycle model is selected based on the specific requirements and constraints of a project. For example, consider a project to develop a mobile application for a new startup. The requirements for the project are unclear, and there is a tight deadline for delivery. In this scenario, the Agile software development life cycle model would be a suitable choice. Real Life Examples of Agile Methodology - GAP (growthaccelerationpartners.com) What is Agile software development life cycle model. Agile software development is a method of software development that emphasizes flexibility, collaboration, and customer satisfaction. It is a iterative and incremental approach to software development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. The Agile software development life cycle model involves regular reassessment and adaptation, as opposed to following a predetermined plan. Popular Agile methodologies include Scrum, Kanban, and Extreme Programming (XP). Reasons for selecting Agile in this scenario are: 1. Flexibility: Agile is flexible and allows for changes in the requirements as the project progresses. This is important in this scenario because the requirements are unclear and may change as the project progresses. 2. Customer Satisfaction: Agile emphasizes customer satisfaction and encourages regular feedback and communication with stakeholders. This is important in this scenario because the startup needs to ensure that the final product meets the needs of its customers. 3. Rapid Delivery: Agile focuses on delivering a working product quickly. This is important in this scenario because the startup has a tight deadline for delivery. 4. Collaboration: Agile encourages collaboration between the development team and the stakeholders. This is important in this scenario because the startup needs to ensure that all stakeholders are on the same page and working towards a common goal. In conclusion, the Agile software development life cycle model was selected for this development environment because it is flexible, emphasizes customer satisfaction, focuses on rapid delivery, and encourages collaboration. These factors are critical to the success of the project given the specific requirements and constraints. Assess the merits of applying the waterfall life cycle model to a large software development project. The waterfall model has several advantages when applied to large software development projects: 1. Clear and defined processes: The waterfall model provides a clear and defined process for each phase of software development, allowing for better project management and control. 2. Better planning: The model requires comprehensive planning before starting each phase, which helps to identify potential risks and issues early on and plan for their resolution. 3. Better documentation: The model emphasizes documentation, which is important for large software development projects where there are many stakeholders and complex requirements. 4. Predictable outcomes: The model allows for a more predictable outcome as each phase must be completed and approved before the next phase can start. However, the waterfall model also has some drawbacks that need to be considered: 1. Inflexibility: The model does not allow for changes to be made to the requirements once the project has started, which can be problematic for large software development projects where requirements are often unclear or subject to change. 2. Lack of user involvement: The model does not allow for user involvement until the final stages, which can result in a product that does not meet the user's needs. 3. Long lead times: The model can lead to long lead times as each phase must be completed before the next phase can start. In conclusion, the waterfall model can be suitable for large software development projects where requirements are well-defined and unlikely to change. However, it is important to be aware of its limitations and to consider alternative models such as Agile, which may be better suited to projects with uncertain or rapidly changing requirements. Purpose of feasibility report Importance A feasibility study is crucial because an organization must "get it right" before devoting time, money, and resources. The conclusions of a feasibility study may force a complete reevaluation of the project's objectives. Knowing these factors in advance is preferable to learning the hard way that the project won't function afterwards. The feasibility study's findings will give you and other parties a precise picture of the proposed project. The following are significant benefits of doing a feasibility study: Aids teams in sharper project concentration. creates new opportunities. Aids in making a wise decision on whether to go or not to go. Decreases alternatives, enhancing business. Provides justification for the project's implementation. By taking a larger variety of elements into account, the possibility of success is increased. Aids in the decision-making process for projects argues for stopping the existing path of action. Feasibility study A feasibility study evaluates how feasible a project or system is. An impartial and reasonable examination of a new business or venture is conducted as part of a feasibility study to identify its strengths and weaknesses, possible opportunities and threats, the resources required to implement it, and the likelihood that it will succeed in the long run. The needed expense and the anticipated value are two parameters that should be considered while assessing feasibility. Throughout the feasibility study, significant issues relating to the potential firm will be covered, including: Just who is this business attempting to draw in? Who are the competitors here? How much money will I need to start my business? Can you discuss the potential results of this work, both positive and negative? How much money do you anticipate making from this business? What is our stance on this company's anticipated profit and loss? How large is the market's potential for growth? A feasibility study evaluates the likelihood of success for a project or endeavor in writing. An objective evaluation of the project's viability in terms of finances, operations, technology, and environmental factors is what a feasibility study is intended to give interested parties. The report would often include a description of the project's goals, objectives, and scope as well as an assessment of the project's viability in light of the resources, time, and funding that are now available. A list of recommendations for overcoming the project's risks, limitations, and challenges may also be included. Every feasibility study should have as its objective to provide stakeholders enough knowledge to decide whether to move on with the project and, if so, how to do so successfully. The report is an essential tool for project planning and decisionmaking since it increases the possibility that the project will ultimately succeed by lowering its risk of failure, ensuring its financial viability, and ensuring its sustainability. Technical solutions which can be compared There are various factors to take into account when contrasting technology options in a feasibility assessment. The following describes what can be done. You must specify the issue. You must be clear about the issue you're trying to solve and the project's goals. Create potential answers. Consider a range of technological solutions that may be used to address a challenge. setting up assessment standards. Provide details on the standards used to compare technical solutions. Some examples of evaluation criteria are cost, duration of implementation, complexity, scalability, dependability, and maintainability. Analyze each choice. Compare each suggested response to the established benchmarks. Making a table or matrix that shows the outcomes side by side might be useful. Consider Your Evaluation Standards. Give each of the assessment criteria a weight in order of importance. Different elements might have varied weights in terms of relevance; for instance, cost may be assigned a higher priority than other considerations. Rank each choice. Analyze the strategies that best satisfy the demands. It is possible to utilize a numerical scale or an objective evaluation. Examine the outcomes. Find out what worked and what didn't in each of the suggested solutions with this analysis. Make a suggestion. Using the analysis, suggest a technically sound strategy that would be the best for resolving the issue. When supporting your conclusion, be sure to carefully describe how the assessment standards and your analysis of the findings do so. In general, while assessing technical solutions in a feasibility study, a methodical approach to assessment and careful examination of a number of criteria are necessary. In order to find the most practical and effective solution to a problem or project, it is crucial to compare technological ideas in a feasibility study. Cost, development time, complexity, scalability, dependability, and maintainability are all important considerations when assessing any solution. These requirements have to be specified in light of the project's aims and objectives. When the evaluation is complete, the data should be examined, and suggestions should be given based on the benefits and drawbacks of each possibility. In a feasibility study, many technological choices are compared to decide which is best for a project or organization. Software investigation to meet a business need Content diagram The system is represented as a high-level process and its connections to external entities in the context diagram. Level 0 or context level data flow diagrams are other names for context diagrams. Context diagrams are specialized forms of data flow diagrams, and understanding them is helpful. The scope and bounds of a system or process in respect to external entities are shown visually in a context diagram. A context diagram's goal is to give a broad picture of a system or process, together with information about its inputs, outputs, and relationships with other systems and processes. System Organizational group External data store Benefits Clarification - By displaying the extent and limitations of a system or process, a context diagram may help clear up confusion and misunderstandings. Communication - Drawing a context diagram that illustrates the interaction between a system or process and other entities might be useful for better understanding how it fits into the wider ecosystem. Requirements - As a communication tool, a context diagram may be used to explain a system or process to stakeholders and other interested parties. Planning - The inputs and outputs of a system or process may be identified using a context diagram to create requirements for the system or process. A context diagram may generally be a useful tool for comprehending, debating, and designing a system or process. It can also assist guarantee that stakeholders have a clear grasp of the system or process and its interaction with other entities. Data flow diagram A data flow diagram (DFD) shows how information moves through any system or process. It displays input, output, storage locations, and routes between each destination using specialized symbols such boxes, circles, and arrows as well as brief text descriptions. Data flow diagrams can range from straightforward, sometimes even hand-drawn summaries of procedures to sophisticated, layered DFDs that gradually dive deeper into the processing of data. They can be used to model a new system or examine an existing one. Like the greatest charts and diagrams, DFD is appropriate for both technical and non-technical users, from developers to CEOs, and can frequently "speak" in a way that is difficult to express verbally. Because of this, DFDs are still very well-liked today. Although they are effective for software and systems that visualize data flow, they are no longer as useful for interactive, real-time, or database-oriented software and systems. Benefits Communication is improved: because DFDs are a fantastic approach to convey challenging ideas to project managers, programmers, and end users. The diagrams significantly help in explaining the system's function and goal. System Simplification: DFDs reduce complicated systems to a concise and unambiguous visual representation. It helps in identifying areas where the system may be improved, simplified, or automated. Better Documentation: DFDs are a useful documentation tool because they provide a thorough description of the system that developers, testers, and other stakeholders may refer to. Early Problem Detection: DFDs aid in the early detection of difficulties during the development cycle. The data flow may be viewed, which makes it easier to identify problems before they become more serious. ERD Entity Relationship (ER) diagrams demonstrate how "entities" are connected to one another in a specific system using people, objects, or concepts as "entity". ER diagrams are frequently employed while dealing with relational databases in academic and scientific research, corporate information systems, and software development. Entity Relationship Diagrams (ERDs) and Entity Relationship Models (ERMs) are two types of comparable diagrams that are used to show how different entities are related to one another as well as how their properties interact with one another. Similar to how they do in regular language, essences serve as nouns and verb connections. An example of an ER diagram is a data structure diagram (DSD), which is a subset of ER diagrams and is similar to ER diagrams but focuses on interactions between components within objects rather than between objects themselves. In conjunction with ER diagrams, data flow diagrams (DFDs) are frequently used to depict the information flow for systems or processes. Benefits Imagery - ER diagrams make the database schema visible to stakeholders, designers, and developers. Communicator - Communication between technical and non-technical individuals is aided by communicator ER diagrams. Complex database linkages are made simpler by it. Clarity - Database design is made simpler with Clarity ER diagrams. By identifying entities, qualities, and relationships, they support design. Data management - Databases are arranged in ER diagrams. By defining entity relationships, designers may remove unused data and improve database performance. Scalability - Database scalability is aided by ER diagrams. By defining things and links between them, designers may anticipate growth and build the database. Maintenance - Database administration is also made simpler with ER diagrams. It is simple to make modifications using a database overview without jeopardizing the database's structure and functionality. ER diagrams are essential for developing, expressing, organizing, and sustaining databases. They also assist database development stakeholders. Use appropriate software tools and techniques DLA Dla is a free diagramming program with all the features. The GPLv2 licensing for this program makes it completely open source. It is strong, adaptable, and simple to use. YED The excellent and often updated yEd Graph Editor is a great tool for flowcharts, graphs, treeplots, network diagrams, etc. The program is available for download as an EXE or JAR file (Java must be installed on the computer) (includes a Java installer). The program has a Swing-based interface and is quite strong and adaptable. Draw.io The UI of Draw.io is simple to use, with tools in the left column and an artboard on the right. To use Draw.io, you don't need to make an account; simply go to the website and choose to save your work to your hard drive or to cloud services like Google Drive and OneDrive. You can collaborate on a project with another person using Draw.io if you link it to your Google account. Draw is not a sophisticated tool and doesn't have as many in-depth capabilities as some other drawing applications. DFD diagram Level 0 ContextDiagram is another name for DFD Level 0. This is an outline of the complete system or process that is being studied or modeled. Its purpose is to provide a brief overview of the system as a single, high-level process with connections to other entities. Level 1 Context diagrams, also known as level 0 DFDs, are diagrams in which the entire system is depicted as a single process. The key sub-processes that collectively make up a full system are all referred to as Level 1 DFD. An "exploded perspective" of a context diagram is how we may conceptualize a Level 1 DFD. ERD diagram The connections between groups of entities contained in a database are displayed in an entity relationship diagram (ERD). In this usage, an object refers to a data component. An entity set is a group of related entities. These things could have characteristics that describe them. Flow chart A flowchart is a sequential depiction of all the phases in a process. It is a flexible tool that may be customized to serve a range of needs and used to represent many processes, including industrial processes, administrative or maintenance procedures, or project plans. Code A short explanation of an algorithm's or other system's processes is known as pseudocode in computer science. The structural norms of a traditional programming language are frequently used in pseudocode, which still has the goal of being human-readable rather than machine-readable. User software requirements The fundamental representation of system/software requirements for an unfinished new application is the UML Use Case Diagram. Use cases specify desired behavior (what), not the precise procedure to be followed (how). Use cases can be conveyed by verbal and graphic representation after being specified (i.e. use case diagram). Use case modeling's basic idea is that it aids in system design from the viewpoint of the end user. By describing all of the system's exterior activity, this method works well for explaining system behavior from the viewpoint of the user. Most use case diagrams are straightforward. It merely briefly describes some of the connections between use cases, actors, and systems; it does not depict the specifics of use cases. It omits displaying the sequence in which each use case's objectives are accomplished. A use case diagram is supposed to be straightforward and comprise just a few shapes. You could not be utilizing the use case diagram properly if your diagram has more than 20 use cases. The hierarchy of the UML diagram and the position of the UML use case diagram are depicted in the image below. Use case diagrams are a subset of behavioral diagrams, as you can see. Major use case Admin functions Delete Add Edit Use case Register function Guest functions Register Log in Search Download Here they can input their information, after create account to continue. Log in The customer can proceed by logging in with the username and password they made. References Simplilearn (2023) What is feasibility study in project management and its types?: Simplilearn, Simplilearn.com. Simplilearn. Available at: https://www.simplilearn.com/feasibility-studyarticle#:~:text=A%20feasibility%20study%20is%20a%20preliminary%20exploration%20 of%20a%20proposed,%2C%20legal%2C%20and%20environmental%20considerations. (Accessed: March 22, 2023). What is technical feasibility? (process and best practices) (no date). Available at: https://in.indeed.com/career-advice/career-development/what-is-technical-feasibility (Accessed: March 21, 2023). PricewaterhouseCoopers (no date) The importance of legal feasibility assessments in IBR Projects, PwC. Available at: https://www.pwc.com/gx/en/services/legal-businesssolutions/corporate-and-commercial/the-importance-of-legal-feasibility-assessments-inibrprojects.html#:~:text=A%20legal%20feasibility%20assessment%20is,consolidated%20and %20integrated%20tax%20and (Accessed: March 22, 2023). Context diagram (no date) Edrawsoft. Available at: https://www.edrawsoft.com/contextdiagrams.html (Accessed: March 22, 2023). Data flow diagram examples symbols, types, and tips (2019) Lucidchart. Available at: https://www.lucidchart.com/blog/data-flow-diagram-tutorial (Accessed: March 22, 2023).