Chapter-3-Application-Development-and-Emerging-Technologies.pdf
Document Details
Uploaded by GenerousCobalt
Tags
Full Transcript
APPLICATION DEVELOPMENT AND EMERGING TECHNOLOGIES Adapted from SLSU PRE-TEST What is SDLC? What are the application development methodologies? Phases of software development. LEARNING PLAN Intended Learning Outcome: I...
APPLICATION DEVELOPMENT AND EMERGING TECHNOLOGIES Adapted from SLSU PRE-TEST What is SDLC? What are the application development methodologies? Phases of software development. LEARNING PLAN Intended Learning Outcome: I. Define what are the development process, methodologies and life cycles. II. Distinguish the different application development process, methodologies and life cycles. Introduction Software Development Life Cycle (SDLC) is a framework that defines the steps involved in the development of software at each phase. It covers the detailed plan for building, deploying and maintaining the software. SDLC, or Software Development Life Cycle, is a set of steps used to create software applications. These steps divide the development process into tasks that can then be assigned, completed, and measured. SDLC defines the complete cycle of development i.e. all the tasks involved in planning, creating, testing, and deploying a Software Product. In this course, we will understand and learn the following: 1. What is SDLC? 2. Phases of Software Development, Models and Best Practices. 3. Application Development Methodologies. 4. Designing basic SDLC Software Development Life Cycle What is SDLC? - is the application of standard business practices to building software applications. It’s typically divided into six to eight steps: Planning, Requirements, Design, Build, Document, Test, Deploy, Maintain. Some project managers will combine, split, or omit steps, depending on the project’s scope. These are the core components recommended for all software development projects. - is a way to measure and improve the development process. It allows a fine-grain analysis of each step of the process. This, in turn, helps companies maximize efficiency at each stage. As computing power increases, it places a higher demand on software and developers. Companies must reduce costs, deliver software faster, and meet or exceed their customers’ needs. SDLC helps achieve these goals by identifying inefficiencies and higher costs and fixing them to run smoothly. - is a framework defining tasks performed at each step in the software development process. The life cycle define a methodology for improving the quality of software and the overall development process. How the Software Development Life Cycle Works The Software Development Life Cycle simply outlines each task required to put together a software application. This helps to reduce waste and increase the efficiency of the development process. Monitoring also ensures the project stays on track, and continues to be a feasible investment for the company. Many companies will subdivide these steps into smaller units. Planning might be broken into technology research, marketing research, and a cost-benefit analysis. Other steps can merge with each other. The Testing phase can run concurrently with the Development phase, since developers need to fix errors that occur during testing. Software Development Life Cycle Process SDLC is a process that defines the various stages involved in the development of software for delivering a high-quality product. SDLC stages cover the complete life cycle of a software i.e. from inception to retirement of the product. Adhering to the SDLC process leads to the development of the software in a systematic and disciplined manner. Purpose: Purpose of SDLC is to deliver a high-quality product which is as per the customer’s requirement. SDLC has defined its phases as, Requirement gathering, Designing, Coding, Testing, and Maintenance. It is important to adhere to the phases to provide the Product in a systematic manner. For Example, A software has to be developed and a team is divided to work on a feature of the product and is allowed to work as they want. One of the developers decides to design first whereas the other decides to code first and the other on the documentation part. This will lead to project failure because of which it is necessary to have a good knowledge and understanding among the team members to deliver an expected product. Phases included in the Software Development Life Cycle Generally, the software development life cycle (SDLC) comprises the step by step processes of developing the software. Planning In the Planning phase, project leaders evaluate the terms of the project. This includes calculating labor and material costs, creating a timetable with target goals, and creating the project’s teams and leadership structure. Planning can also include feedback from stakeholders. Stakeholders are anyone who stands to benefit from the application. Try to get feedback from potential customers, developers, subject matter experts, and sales reps. Planning should clearly define the scope and purpose of the application. It plots the course and provisions the team to effectively create the software. It also sets boundaries to help keep the project from expanding or shifting from its original purpose. Define Requirements Defining requirements is considered part of planning to determine what the application is supposed to do and its requirements. For example, a social media application would require the ability to connect with a friend. An inventory program might require a search feature. Requirements also include defining the resources needed to build the project. For example, a team might develop software to control a custom manufacturing machine. The machine is a requirement in the process. Design and Prototyping The Design phase models the way a software application will work. Some aspects of the design include: Architecture – Specifies programming language, industry practices, overall design, and use of any templates or boilerplate User Interface – Defines the ways customers interact with the software, and how the software responds to input Platforms – Defines the platforms on which the software will run, such as Apple, Android, Windows version, Linux, or even gaming consoles Programming – Not just the programming language, but including methods of solving problems and performing tasks in the application Communications – Defines the methods that the application can communicate with other assets, such as a central server or other instances of the application Security – Defines the measures taken to secure the application, and may include SSL traffic encryption, password protection, and secure storage of user credentials Prototyping can be a part of the Design phase. A prototype is like one of the early versions of software in the Iterative software development model. It demonstrates a basic idea of how the application looks and works. This “hands-on” design can be shown to stakeholders. Use feedback o improve the application. It’s less expensive to change the Prototype phase than to rewrite code to make a change in the Development phase. Software Development This is the actual writing of the program. A small project might be written by a single developer, while a large project might be broken up and worked by several teams. Use an Access Control or Source Code Management application in this phase. These systems help developers track changes to the code. They also help ensure compatibility between different team projects and to make sure target goals are being met. The coding process includes many other tasks. Many developers need to brush up on skills or work as a team. Finding and fixing errors and glitches is critical. Tasks often hold up the development process, such as waiting for test results or compiling code so an application can run. SDLC can anticipate these delays so that developers can be tasked with other duties. Software developers appreciate instructions and explanations. Documentation can be a formal process, including wiring a user guide for the application. It can also be informal, like comments in the source code that explain why a developer used a certain procedure. Even companies that strive to create software that’s easy and intuitive benefit from the documentation. Documentation can be a quick guided tour of the application’s basic features that display on the first launch. It can be video tutorials for complex tasks. Written documentation like user guides, troubleshooting guides, and FAQ’s help users solve problems or technical questions. Testing It’s critical to test an application before making it available to users. Much of the testing can be automated, like security testing. Other testing can only be done in a specific environment – consider creating a simulated production environment for complex deployments. Testing should ensure that each function works correctly. Different parts of the application should also be tested to work seamlessly together—performance test, to reduce any hangs or lags in processing. The testing phase helps reduce the number of bugs and glitches that users encounter. This leads to a higher user satisfaction and a better usage rate. Testing involves in almost every phase in the modern SDLC methodologies. Once the coding is done, it undergoes testing for quality assurance. Testing includes various functional testing like system testing, acceptance testing, unit testing, integration testing, and also non-functional testing. Deployment In the deployment phase, the application is made available to users. Many companies prefer to automate the deployment phase. This can be as simple as a payment portal and download link on the company website. It could also be downloading an application on a smartphone. Deployment can also be complex. Upgrading a company-wide database to a newly-developed application is one example. Because there are several other systems used by the database, integrating the upgrade can take more time and effort. Operations and Maintenance At this point, the development cycle is almost finished. The application is done and being used in the field. The Operation and Maintenance phase is still important, though. In this phase, users discover bugs that weren’t found during testing. These errors need to be resolved, which can spawn new development cycles. In addition to bug fixes, models like Iterative development plan additional features in future releases. For each new release, a new Development Cycle can be launched. SDLC Models & Methodologies Waterfall The Waterfall Model was the first Process Model to be introduced. It is also referred to as a linear- sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases. The Waterfall model is the earliest SDLC approach that was used for software development. The waterfall Model illustrates the software development process in a linear sequential flow. This means that any phase in the development process begins only if the previous phase is complete. In this waterfall model, the phases do not overlap. The Waterfall SDLC model is the classic method of development. As each phase completes, the project spills over into the next step. This is a tried-and-tested model, and it works. One advantage of the Waterfall model is each phase can be evaluated for continuity and feasibility before moving on. It’s limited in speed, however, since one phase must finish before another can begin. Agile Agile SDLC model is a combination of iterative and incremental process models with focus on process adaptability and customer satisfaction by rapid delivery of working software product. Agile Methods break the product into small incremental builds. These builds are provided in iterations. Each iteration typically lasts from about one to three weeks. Agile model believes that every project needs to be handled differently and the existing methods need to be tailored to best suit the project requirements. In Agile, the tasks are divided to time boxes (small time frames) to deliver specific features for a release. The AGILE model was designed by developers to put customer needs first. This method focuses strongly on user experience and input. This solves much of the problems of older applications that were arcane and cumbersome to use. Plus, it makes the software highly responsive to customer feedback. Agile seeks to release software cycles quickly, to respond to a changing market. This requires a strong team with excellent communication. It can also lead to a project going off-track by relying too heavily on customer feedback. Iterative In the Iterative model, iterative process starts with a simple implementation of a small set of the software requirements and iteratively enhances the evolving versions until the complete system is implemented and ready to be deployed. An iterative life cycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the software, which is then reviewed to identify further requirements. This process is then repeated, producing a new version of the software at the end of each iteration of the model. In the Iterative development model, developers create an initial basic version of the software quickly. Then they review and improve on the application in small steps (or iterations). This approach is most often used in very large applications. It can get an application up and functional quickly to meet a business need. However, this process can exceed its scope quickly and risks using unplanned resources. DevOps The DevOps security model incorporates operations – the people who use the software – into the development cycle. Like Agile, this seeks to improve the usability and relevance of applications. One significant advantage of this model is the feedback from actual software users on the design and implementation steps. One drawback is that it requires active collaboration and communication. Those additional costs can be offset by automating parts of the development process. V-Model The V-model is an SDLC model where execution of processes happens in a sequential manner in a V-shape. It is also known as Verification and Validation model. The V-Model is an extension of the waterfall model and is based on the association of a testing phase for each corresponding development stage. This means that for every single phase in the development cycle, there is a directly associated testing phase. This is a highly-disciplined model and the next phase starts only after completion of the previous phase. V-shaped model is inspired by the Waterfall model, wherein V stands for Validation and Verification. Each development stage has a parallel testing stage. Testing is done at each and every stage of development. The development team moves to the next stage only after the previous stage is completed. Spiral SDLC The spiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model. This Spiral model is a combination of iterative development process model and sequential linear development model i.e. the waterfall model with a very high emphasis on risk analysis. It allows incremental releases of the product or incremental refinement through each iteration around the spiral. The Spiral model is considered to be the most flexible software development life cycle model mostly adopted for full-blown projects. The development process is divided into small stages for easier follow-up. This methodology passes through four different phases-mainly planning, risk analysis, engineering, and evaluation. The spiral model helps to develop a highly customized project. RAD The RAD (Rapid Application Development) model is based on prototyping and iterative development with no specific planning involved. The process of writing the software itself involves the planning required for developing the product. Rapid Application Development focuses on gathering customer requirements through workshops or focus groups, early testing of the prototypes by the customer using iterative concept, reuse of the existing prototypes (components), continuous integration and rapid delivery. Rapid application development is a software development methodology that uses minimal planning in favor of rapid prototyping. A prototype is a working model that is functionally equivalent to a component of the product. In the RAD model, the functional modules are developed in parallel as prototypes and are integrated to make the complete product for faster product delivery. Since there is no detailed preplanning, it makes it easier to incorporate the changes within the development process. RAD projects follow iterative and incremental model and have small teams comprising of developers, domain experts, customer representatives and other IT resources working progressively on their component or prototype. The most important aspect for this model to be successful is to make sure that the prototypes developed are reusable. Big Bang The Big Bang model is an SDLC model where we do not follow any specific process. The development just starts with the required money and efforts as the input, and the output is the software developed which may or may not be as per customer requirement. This Big Bang Model does not follow a process/procedure and there is a very little planning required. Even the customer is not sure about what exactly he wants and the requirements are implemented on the fly without much analysis. Usually this model is followed for small projects where the development teams are very small. The Big Bang Model comprises of focusing all the possible resources in the software development and coding, with very little or no planning. The requirements are understood and implemented as they come. Any changes required may or may not need to revamp the complete software. This model is ideal for small projects with one or two developers working together and is also useful for academic or practice projects. It is an ideal model for the product where requirements are not well understood and the final release date is not given. Software Prototype The Software Prototyping refers to building software application prototypes which displays the functionality of the product under development, but may not actually hold the exact logic of the original software. Software prototyping is becoming very popular as a software development model, as it enables to understand customer requirements at an early stage of development. It helps get valuable feedback from the customer and helps software designers and developers understand about what exactly is expected from the product under development. Prototype is a working model of software with some limited functionality. The prototype does not always hold the exact logic used in the actual software application and is an extra effort to be considered under effort estimation. Prototyping is used to allow the users evaluate developer proposals and try them out before implementation. It also helps understand the requirements which are user specific and may not have been considered by the developer during product design. Following is a stepwise approach explained to design a software prototype. Basic Requirement Identification This step involves understanding the very basics product requirements especially in terms of user interface. The more intricate details of the internal design and external aspects like performance and security can be ignored at this stage. Developing the initial Prototype The initial Prototype is developed in this stage, where the very basic requirements are showcased and user interfaces are provided. These features may not exactly work in the same manner internally in the actual software developed. While, the workarounds are used to give the same look and feel to the customer in the prototype developed. Review of the Prototype The prototype developed is then presented to the customer and the other important stakeholders in the project. The feedback is collected in an organized manner and used for further enhancements in the product under development. Revise and Enhance the Prototype The feedback and the review comments are discussed during this stage and some negotiations happen with the customer based on factors like – time and budget constraints and technical feasibility of the actual implementation. The changes accepted are again incorporated in the new Prototype developed and the cycle repeats until the customer expectations are met. Prototypes can have horizontal or vertical dimensions. A Horizontal prototype displays the user interface for the product and gives a broader view of the entire system, without concentrating on internal functions. A Vertical prototype on the other side is a detailed elaboration of a specific function or a sub system in the product. The purpose of both horizontal and vertical prototype is different. Horizontal prototypes are used to get more information on the user interface level and the business requirements. It can even be presented in the sales demos to get business in the market. Vertical prototypes are technical in nature and are used to get details of the exact functioning of the sub systems. For example, database requirements, interaction and data processing loads in a given sub system. Software Prototyping - Types There are different types of software prototypes used in the industry. Following are the major software prototyping types used widely − Throwaway/Rapid Prototyping Throwaway prototyping is also called as rapid or close ended prototyping. This type of prototyping uses very little efforts with minimum requirement analysis to build a prototype. Once the actual requirements are understood, the prototype is discarded and the actual system is developed with a much clear understanding of user requirements. Evolutionary Prototyping Evolutionary prototyping also called as breadboard prototyping is based on building actual functional prototypes with minimal functionality in the beginning. The prototype developed forms the heart of the future prototypes on top of which the entire system is built. By using evolutionary prototyping, the well-understood requirements are included in the prototype and the requirements are added as and when they are understood. Incremental Prototyping Incremental prototyping refers to building multiple functional prototypes of the various sub- systems and then integrating all the available prototypes to form a complete system. Extreme Prototyping Extreme prototyping is used in the web development domain. It consists of three sequential phases. First, a basic prototype with all the existing pages is presented in the HTML format. Then the data processing is simulated using a prototype services layer. Finally, the services are implemented and integrated to the final prototype. This process is called Extreme Prototyping used to draw attention to the second phase of the process, where a fully functional UI is developed with very little regard to the actual services. Software Prototyping - Application Software Prototyping is most useful in development of systems having high level of user interactions such as online systems. Systems which need users to fill out forms or go through various screens before data is processed can use prototyping very effectively to give the exact look and feel even before the actual software is developed. Software that involves too much of data processing and most of the functionality is internal with very little user interface does not usually benefit from prototyping. Prototype development could be an extra overhead in such projects and may need lot of extra efforts. Best Practices Of Software Development In addition to the models and stages of software development, there are a few other helpful practices. These can be applied to part or all of the development cycle. Source Control Source Control is a security plan to secure your working code. Implement Source Control by keeping the code in a single location, with secure and logged access. This could be a physical location where files are stored and accessed in a single room in the building. It could also be a virtual space where users can log in with an encrypted connection to a cloud-based development environment. Source Control applications include a change management system to track work done by individuals or teams. As with any storage, use a backup system to record development progress in case of a disaster. Continuous Integration Continuous Integration evolved out of a case of what not to do. CI works to make sure each component is compatible through the whole development cycle. Before CI, different teams would build their own projects independently. This created significant challenges at the end when developers stitched the application together. Continuous Integration ensures all teams use similar programming languages and libraries, and helps prevent conflicts and duplicated work. SDLC Management Systems A software development cycle management system works to control and manage each step of the development cycle. Management Systems add transparency to each phase and the project as a whole. They also add analytics, bug-tracking, and work management systems. These metrics or KPI’s can be used to improve parts of the cycle that aren’t running efficiently. ASSESSMENT Test I 1. In your own opinion, why you should learn software development life cycle? 2. Do you think learning SDLC helps you improve your software development? Why? 3. Which of the model would you prefer to use in software development? Why? 4. Define is the difference between waterfall and agile? 5. How software development life cycle works? Test II 1. Let see, you have your own IT company and you want your company to be unique. How would you create your own software development life cycle? Enumarate development processes and give an explaination to each of the process. 2. Draw a diagram of your own software development life cycle. TEST POST 1. What are the different types of models? 2. A model is based on prototyping and iterative development with no specific planning involved. 3. Also called as breadboard prototyping is based on building actual functional prototypes with minimal functionality in the beginning The process of analysis of large volumes of diverse data sets, using advanced analytic techniques. 4. What are the types of software prototyping? 5. In addition to the models and stages of software development, there are a few other helpful practices. These can be applied to part or all of the development cycle. What are they? 6. It is a security plan to secure your working code? 7. Refers to building software application prototypes which displays the functionality of the product under development, but may not actually hold the exact logic of the original software. 8. It evolved out of a case of what not to do? 9. It was the first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. 10. It is a way to measure and improve the development process? 11. Name REFERENCES 1. Striebig, B., Ogundipe, A. A., & Papadakis, M. (2015). Engineering Applications in Sustainable Design and Development (1st ed.). Cengage Learning. 2. Price, M. J. (2019). C# 8.0 and.NET Core 3.0 – Modern Cross-Platform Development: Build applications with C#,.NET Core, Entity Framework Core, ASP.NET Core, and ML.NET using Visual Studio Code, 4th Edition (Illustrated ed.). Packt Publishing. 3. Zhong, X. (2015). Development and Application of Offline Learning System in College Teaching. International Journal of Emerging Technologies in Learning (IJET), 10(5), 35. https://doi.org/10.3991/ijet.v10i5.4794 4. M. (2019). Emerging Technologies for Economic Development (Science, Technology and Innovation Studies) (1st ed. 2019 ed.). Springer. 5. Udell, C., & Woodill, G. (2019). Shock of the New: The Challenge and Promise of Emerging Learning Technologies. Association for Talent Development. 6. Blokdyk, G. (2019). Software Development Life Cycle SDLC A Complete Guide - 2020 Edition. Emereo Pty Limited. 7. Blokdyk, G. (2021). Application Development Process A Complete Guide - 2019 Edition. 5STARCooks. 8. Langer, A. M. (2016). Guide to Software Development: Designing and Managing the Life Cycle (2nd ed.). Springer. 9. Percival, H., & Gregory, B. (2020). Architecture Patterns with Python: Enabling Test- Driven Development, Domain-Driven Design, and Event-Driven Microservices (1st ed.). O’Reilly Media. 10. Douglass, B. P. (2021). Agile Model-Based Systems Engineering Cookbook: Improve system development by applying proven recipes for effective agile systems engineering. Packt Publishing. 11. Muller, G. (2021). System Modeling and Analysis: A Practical Approach. Retrieve from SystemModelingAndAnalysisBook.pdf (gaudisite.nl) 12. Wasson, C.S. (2006). System Analysis, Design, and Development Concepts, Principles, and Practices. Retrieve from System Analysis, Design, and Development : Concepts, Principles, and Practices (zu.edu.jo) Internet Sources 13. https://www.qat.com/9-emerging-technologies/ 14. https://phoenixnap.com/blog/software-development-life-cycle 15. https://www.conceptdraw.com/How-To-Guide/uml-diagram-types-list 16. https://kissflow.com/low-code/rad/types-of-application-development- methodologies/#:~:text=Application%20development%20is%20the%20process,by%20a %20single%20freelance%20developer.&text=Application%20development%20is%20clo sely%20linked,life%2Dcycle%20(SDLC).