Application Development and SDLC

Document Details

TimeHonoredCrocus1183

Uploaded by TimeHonoredCrocus1183

Tags

Software Development Life Cycle Application Development System Design Systems Analysis

Summary

This document introduces the concepts of software development, focusing on application development and the Systems Development Life Cycle (SDLC). It explains the key stages of SDLC, including system analysis, design, coding, testing, and implementation, and highlights the benefits and phases involved in the process. Additional topics discussed include different types of application development such as Web, Citizen, and Enterprise app development.

Full Transcript

INTRODUCTION ============ Software drives business, and developers drive software. The world is reliant on software, and programming is at the heart of this. Professionalism and critical thinking, supported by an ability to work independently and as part of a team, are core skills of a developer. I...

INTRODUCTION ============ Software drives business, and developers drive software. The world is reliant on software, and programming is at the heart of this. Professionalism and critical thinking, supported by an ability to work independently and as part of a team, are core skills of a developer. If you can think logically and you enjoy exploring and dismantling problems, working with others to consider requirements, and creating ideas and possible solutions, you can gain the experience and learn the skills needed to excel as an Application Developer ================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== **At the end of this lesson, the students will be able to:** - Define the Application Development ================================== - Understand the wide coverage of Application Development ======================================================= Application Development ======================= Application development is creating a computer program or a set of programs to perform the different tasks a business requires. From calculating monthly expenses to scheduling sales reports, applications help businesses automate processes and increase efficiency. Application developers have a computer programming background. As you might imagine, it\'s called application development instead of computer programming because there are many more steps involved before and after the actual writing of the computer program. All of those steps are very typical and are collectively called a **systems development lifecycle**. Every app-building process follows the same steps of SDLC. **What is Systems Analysis?** Analysis is a process of collecting and interpreting facts, identifying problems, and decomposing a system into its components. It is a problem-solving technique that improves the system and ensures that all its components work efficiently to accomplish their purpose. Analysis specifies **what the system should do.** **What is System Design** It is a process of planning a new business system or replacing an existing system by defining its components or modules to satisfy specific requirements. Before planning, you need to understand the old system thoroughly and determine how computers can best be used to operate efficiently. ##### ##### **THE SYSTEMS DEVELOPMENT LIFE CYCLE** SDLC or the Software Development Life Cycle is a process that produces software with the highest quality and lowest cost in the shortest time. SDLC includes a detailed plan for how to develop, alter, maintain, and replace a software system. SDLC involves several distinct stages, including planning, design, building, testing, and deployment. Popular SDLC models include the waterfall model, spiral model, and Agile model. **How SDLC Works** SDLC works by lowering the cost of software development while simultaneously improving quality and shortening production time. SDLC achieves these apparently divergent goals by following a plan that removes the typical pitfalls to software development projects. That plan starts by evaluating existing systems for deficiencies. Next, it defines the requirements of the new system. It then creates the software through the design, development, testing, and deployment stages. By anticipating costly mistakes like failing to ask the end user for suggestions, SLDC can eliminate redundant rework and after-the-fact fixes. **Benefits of SDLC** SDLC done right can allow the highest level of management control and documentation. Developers understand what they should build and why. All parties agree on the goal up front and see a clear plan for arriving at that goal. Everyone understands the costs and resources required. Several pitfalls can turn an SDLC implementation into more of a roadblock to development than a tool that helps us. Failure to take into account the needs of customers and all users and stakeholders can result in a poor understanding of the system requirements at the outset. The benefits of SDLC only exist if the plan is followed faithfully. There are following eight phases in every Software development life cycle model: 1. Preliminary study 2. Feasibility study 3. System analysis 4. System design 5. Coding 6. Testing 7. Implementation 8. Maintenance **Preliminary study** 1. Problem identification and project initiation 2. Background analysis 3. Finding **Feasibility study** When management accepts a system proposal, the next stage is to examine its feasibility. A feasibility study basically tests the purpose of the system in terms of workability. The main goal of the feasibility study is not to solve the problems but to achieve the scope. In this feasibility study, the cost and benefits are estimated with greater accuracy to find the Return on Investment In this stage, a feasibility **report / Output - Cost Benefit Analysis Report** are produced. It is not merely an investigation but at the same time a plan or a framework on how the operation of a business project shall be accomplished. A feasibility study contains 4 major components namely: 1. Technical feasibility 2. Organizational feasibility 3. Economic feasibility 4. Schedule feasibility The first technique in the feasibility analysis is to assess the technical feasibility of the project, the extent to which the IT group can successfully design, develop, and install the system. When analysts are unfamiliar with the business application area, they are more likely to misunderstand the users or miss opportunities for improvement. The risks increase dramatically when the users themselves are less familiar with an application, such as with the development of a system to support a new business innovation The final technique used for feasibility analysis is to assess the organizational feasibility of the system: How well the system ultimately will be accepted by its users and incorporated into the organization\'s ongoing operations. Many organizational factors can impact the project, and seasoned developers know that organizational feasibility can be the most difficult feasibility dimension to assess. The next element of feasibility analysis is to perform an economic feasibility analysis (also called a cost--benefit analysis). Economic feasibility is determined by identifying costs and benefits associated with the system, assigning values to them, calculating future cash flows, and measuring the financial worthiness of the project. Economic feasibility means that the projected benefits of the proposed system outweigh the estimated cost, usually considered the total cost of ownership - People including IT staff and users - Hardware and equipment - Software, including in-house development as well as purchases from vendors. **Formal or informal user training** - When we move to manual system to a computerized system, we have to train employees A project will fail if it takes too long to be completed before it is useful. Typically, this means estimating how long the system will take to develop and whether it can be completed in a given time period using methods like the payback period. **A feasibility study** collects all the requirements, estimates the cost, and calculates the total time to complete any project. Sometimes, the customer gives a timeline for the completion of the project. At that time, you have to set all the development according to the timelines. Then, it helps to schedule the feasibility study. **System analysis** The analysis phase answers the questions of who will use the system, what it will do, and where and when it will be used. During this phase, the project team investigates any current system(s), identifies improvement opportunities, and develops a concept for the new system. This phase has three steps: 1. An analysis strategy is developed to guide the project team's efforts. 2. The next step is requirements gathering 3. The analyses, system concept, and models are combined into a document called the system proposal **System Design** The design phase decides how the system will operate, including the hardware, software, and network infrastructure that will be in place, the user interface, forms, and reports that will be used, and the specific programs, databases, and files that will be needed. The design phase has two steps 1. The design strategy must be determined. 2. The interface design specifies how the users will move through the system **Implementation / Coding** The next phase in the SDLC is the implementation phase, during which the system is actually built. This phase usually gets the most attention because, for most systems, it is the longest and most expensive part of the development process. **This phase has three steps:** 1. System construction is the first step. 2. The system is built and tested to ensure that it performs as designed. 3. The system is installed. Installation is the process by which the old system is turned off and the new one is turned on. 4. The analyst team establishes a support plan for the system. **Testing** Testing is the process of checking for errors, bugs, and interoperability before implementing the new system into operation. The system is tested to remove errors. There are different forms of testing 1\. Program test 2\. System test **Program test** When the programs have been coded, complied with, and brought to working consideration. They must be individually tested with the prepared test data. Any undesirable happening must be noted and debugged **System test** The system test is completed after carrying out a program test for each of the system\'s programs and removing errors. At this stage, the test is done on actual data. The complete system is executed on the actual data. When it is ensured that the system is running error-free, the user is called with their own actual data to show the system running as per their requirements. In this testing phase, there are some other testing forms 1. Unit testing- testing the smallest program units. This is usually carried out by the programmer. 2. Integrated testing is carried out when these logically independent units are integrated. 3. System testing -- this testing is performed considering the total system. 4. Acceptance Testing -conducted to determine if the requirements of a specification or contract are met. It may involve chemical **tests**, physical **tests**, or performance **tests**. **System test** **Deployment** In this stage, a new system is installed in the real business environment. This is the most expensive activity in the system life cycle. There are 3 major steps involved at this stage. - 1\. Gaining & installing hardware and software - Before we implement hardware and software for running, the system must be fully operational. - 2\. Conversion - Here, we move all old data with security and recovery procedures fully defined. - 3.User training---After we implement the new system in the company, the users who operate it must be trained. **Maintenance** After implementing the system, we have to maintain that system. We must consider system performance, the required changes, the full capability of the system, etc.... If the system contains errors or bugs, they must be noted and corrected as soon as possible. On the other hand, if a major change is needed, a new project must be set up to carry out the change. **At the end of this lesson, the students will be able to:** - Learn the different types of Application Development. ===================================================== - Enumerate the different Application Development in Business =========================================================== The [different types of applications](https://kissflow.com/application-development/types-of-applications/) that can be developed are, ### **1. Rapid application development** [Rapid Application Development (RAD)](https://kissflow.com/application-development/rad/rapid-application-development/) is a more flexible method of app development that focuses on speeding up the development process without compromising quality. In this approach, developers can accelerate their feedback, make multiple iterations, and roll out updates without starting from scratch every time. This helps in achieving a more quality-focused output that also meets the demands of end-user requirements. Keeping speed and agility as precedence, RAD enables developers to deliver project outcomes in a matter of weeks or even days. ### **2. Custom application development** [Custom app development](https://kissflow.com/application-development/custom-application-development-guide/) is a tailored method of designing and deploying applications for specific users to fulfill business requirements. This method has a narrow focus and is opted for by organizations looking to address a particular need or objective. This approach offers functionalities that an off-the-shelf solution doesn\'t and allows developers to create and deploy apps by precisely replicating the idea conceived. Custom apps are mostly built by in-house developers who know the requirements in and out or outsourced to a third party. ### **3. Database application development** A database application is developed with the primary focus of entering, centrally storing, and retrieving information. Managing data accumulated from multiple sources becomes time-consuming and tedious as businesses expand. With database applications, users can define custom roles, relate data from diverse systems, launch business-specific workflows, and allow user-based authorizations. ### **4. Enterprise application development** [Enterprise application development](https://kissflow.com/application-development/enterprise-application-development-overview/) is a collaborative method of building customized applications for large enterprises to meet their complex business needs. This approach helps automate specific functionalities and processes, allowing users to perform their tasks quickly. These [enterprise low-code applications](https://kissflow.com/application-development/enterprise-low-code-application-platform/) are created by analyzing and incorporating the end user\'s needs, enabling businesses to scale and perform their operations hassle-free. ### **5. Web application development** Web apps are websites that function like mobile apps. Users don\'t need to download a separate app, just a web browser. Among the types of apps, web apps are the cheapest and easiest to develop. Yet, a web application developed from scratch can cost \$50,000--\$250,000, according to ScienceSoft. The downside is that they are also the worst in UX, as they tend to be slower, have less intuitive UI design, and interact less with other device features. Web apps are not featured in app stores, so there's low market visibility. However, [creating a web application](https://kissflow.com/application-development/how-to-create-a-web-application/) is easy. However, any web browser can still access web apps, making them accessible even on device browser functionality, such as smart TVs. ### **6. Citizen application development** Citizen app development is the process of creating applications by non-professional developers, often referred to as \"citizen developers.\" These developers typically have little or [no coding knowledge](https://kissflow.com/application-development/how-to-create-an-app-without-coding/) but are interested in creating their own applications. [Citizen development](https://kissflow.com/citizen-development/overview-of-citizen-development/) has become increasingly popular in recent years, as low-code and no-code development tools have made it easier for non-technical individuals to create simple applications. These tools allow citizen developers to build applications by dragging and dropping pre-built components rather than writing code from scratch. **EXAMPLES OF APPS DEVELOPED FOR BUSINESSES** --------------------------------------------- The following are some examples of business applications that can be created by [an application development platform](https://kissflow.com/application-development). - Marketing apps - Inventory management apps - Collaboration apps - Project management apps - HRMS apps - Expense tracking apps **Marketing apps:** These apps help businesses improve their marketing efforts, such as social media management, email marketing, and content creation, allowing them to reach a wider audience and engage with customers more effectively. **Inventory management apps:** These apps help businesses manage their inventory levels and track product availability, allowing them to reduce waste, [optimize their supply chain](https://www.scnsoft.com/scm/automated-inventory), and improve their bottom line. **Collaboration apps:** These apps help teams work together more effectively, allowing them to communicate, share files, and collaborate on projects in real-time. **Project management apps: **These apps help businesses manage and track their projects, including assigning tasks, setting deadlines, and monitoring progress. **Human Resource Management System apps: **HRMS apps can be designed to automate and streamline various HR processes, including recruitment, onboarding, payroll, performance management, and employee engagement. **Expense tracking apps:** These apps can help businesses track and manage expenses by allowing employees to capture and categorize expenses and enabling managers to approve and reimburse expenses. **Security in Application Development ** ---------------------------------------- Security plays a crucial role in modern application development. As low-code and no-code platforms rise in popularity, developers must prioritize[ security in application development](https://kissflow.com/application-development/application-development-security/) by building measures into every process stage. Implementing data encryption and role-based access controls prevents data breaches and ensures compliance with regulatory standards.  **Definition of application development security and its need for businesses** ------------------------------------------------------------------------------ Application development security refers to measures put in place to prevent a data breach or code hijacks in software applications. This often involves a combination of software and hardware security techniques, best practices, and standard procedures intended to protect enterprise apps from all forms of external and internal security threats. Application security includes all measures taken during app development and additional precautions after deployment. Software vulnerabilities are more common than many realize. A 2019 Application Security Statistics Report indicates that up to 50 percent of apps in organizations without a DevSecOps approach are vulnerable to attacks. A Veracode study scanning 85,000 apps found that 83 percent had at least one security flaw. While not all flaws are critical, they can lead to severe vulnerabilities that threaten business operations. A breach in a poorly secured application can cause downtime or, in worse cases, result in the theft of sensitive data. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- **Common security issues in applications** ------------------------------------------ Every day, new security threats and issues arise, making it difficult to build fully secure applications. However, there are a few common issues you should at least mitigate against as part of your standard application development security. They're highlighted below. ### **1. Access control**   If anyone can access your application due to poor access control, it poses a significant threat to your business. That\'s because malicious actors often try to brute-force their way into apps by exploiting security issues with access authentication and authorization. This is why access control has to be a top priority in [enterprise app development](https://kissflow.com/kissflow-platform-for-enterprise/) to prevent attackers from getting freeway access to your database or server. Access control is necessary for both offline and online applications.  ### **2. Insecure storage**   Enterprise apps often handle and store critical and sensitive business (and user) data. So, it is important to prioritize application security to secure all of this data. Insecure data increases the risk of cyberattack since attackers can easily access the database to steal or manipulate data. In addition to securing your database, you also need to invest in data encryption, especially when transmitting or sending data is necessary. This ensures that attackers cannot read the data even if they\'re intercepted or hijacked.  ### **3. Injecting attack**   Malicious actors may sometimes enter malicious commands or inject harmful codes that negatively impact an app or its users. The absence of an efficient system to validate data entered from external sources makes your app an easy target for attackers. An injection attack may result in data loss or corruption, denial of access, or even a total takeover of your application.  ### **4. Insider attack**   An insider attack is a type of software vulnerability that involves current or former employees of the organization. It occurs when these individuals misuse their legitimate access, intentionally (malicious insider) or inadvertently (careless insider), exposing the organization to security threats. Although insider attacks are often difficult to prevent, organizations can limit the impact of such attacks by limiting access for individual users based on roles, protecting critical assets, and putting measures in place to ensure visibility.  **THE IMPACT OF INSECURE APPLICATIONS** --------------------------------------- ### Businesses rely heavily on software and apps, making the stakes high during cyberattacks. Without proper security in app development, hackers can exploit vulnerabilities, leading to financial losses, reputational harm, sanctions, fines, or even business failure. ### ### **Financial costs ** Arguably, the most obvious negative impact of insecure applications is the financial loss caused by cyber-attacks. According to an IBM report, the global average data breach cost in 2023 was USD 4.45. This cost varies depending on the type and nature of the attack. For instance, a ransomware attack on a major application that powers your day-to-day operation can halt operations completely, leading to significant revenue costs. The business will also have to spend money on remediating the attack and sometimes pay hefty fines or settle lawsuits due to such attacks.  ### **Operational impacts** Malicious actors can exploit security vulnerabilities to launch attacks that take your system offline or hinder operations for an extended period. According to Allianz Risk Barometer, 45 percent of experts view cyber incidents as the top cause of business interruptions. Software attacks can disrupt productivity and make it difficult to serve customers. In the aftermath, your IT team may spend more time on maintenance and updates, distracting them from essential tasks. Data breaches can also result in the loss of critical information, which competitors may exploit. It's vital to implement strong security measures to prevent breaches and protect sensitive data. ### **Reputational damage ** The reputational damage from security breaches is another reason you must take app security seriously. Customers who use your application entrust their data to you. When a security breach causes this data to be exposed, it erodes customer trust and loyalty to your brand, leading to a loss of business and brand value. Insecure applications can also raise red flags for investors and partners, impacting future business opportunities. ### **Small attacks may lead to bigger attacks.** Sometimes, the risk of software vulnerabilities is not apparent right away. Malware can remain dormant within your software for a long time. During this time, malicious actors can slowly gather data, steal information, and even leverage your software for a larger attack. Long-term cyber attacks like this can harm your business, customers, and employees significantly. Also, smaller and seemingly insignificant software vulnerabilities can be combined and used in larger attack chains with a bigger impact on business. **The ripple effect of secure applications: Benefits for businesses and users** ------------------------------------------------------------------------------- Software security must be integral to creating trustworthy apps for any security-conscious business. This intricate task involves securing the technical tools you use to build, designing secure apps, and ensuring the app development process follows standard security protocols. Your team\'s people and culture can also impact your application\'s security. When implemented correctly, some of the potential benefits for businesses include: ### **Reduced risk of attacks** Building secure apps involves implementing measures to reduce security vulnerabilities and detect potential threats before malicious actors can exploit them. Reducing app vulnerabilities reduces the risk of attacks, which saves you from the cost, downtime, and stress that comes from trying to remediate attacks after they have occurred. ### **Boost in confidence** Building secure apps protects your application\'s internal and external users\' data. A lack of confidence in app security is one factor that may limit the adoption of business apps. Building a secure system enhances customer confidence. It fosters a sense of trust and peace of mind that enhances customers\' overall experience. ### **No business disruptions** Identifying security risks and mitigating them at the development stage of your application prevents costly security breaches from happening later on. It also prevents disruptions or downtime and the other cascading issues that come with them, such as a drop in productivity, financial loss, and an overstretched IT. ### **Competitive advantage** In a world where data breaches have become commonplace, companies that manage to build secure apps are more likely to stand out in the market. Your software is likely to get adopted faster, leading to greater market reach, growth, and new business opportunities.  **How to secure app development** --------------------------------- In [enterprise app development](https://kissflow.com/kissflow-platform-for-enterprise/), making your app more secure has to be a top priority. Following standard procedures and best practices can help preserve your software\'s integrity. In addition to these practices, advanced security solutions like managed detection and response services, which have proven crucial in averting emergencies, must be considered. These services enhance threat identification and quicken response times, thereby ensuring that vulnerabilities are mitigated before they can be exploited by malicious actors. Some of these best practices to secure app development include:  ### **Secure coding** Application security begins with designing and writing your code. Secure coding refers to the practice of designing and writing code in a way that adheres to standard security practices. Following these security standards protect your code from unexpected, unknown, and known vulnerabilities that hackers may try to exploit.  ### **Encrypt data**   Encrypting your software source code and all data stored or transmitted through it is one way to secure your application data. While encryption does not prevent your app data from getting hijacked, it makes it unusable for the attackers who stole it. Use the latest encryption protocols, such as AES and SHA256, to protect your apps better. Encryption keys should also be stored away from the app and never on it.  ### **Test your application** Many developers ignore security testing in a rush to deploy apps or roll out new features quickly. Pen-testing before deploying your app helps determine any vulnerability or security flaw. Mobile app pen-testing can also help identify new vulnerabilities you were not aware of while verifying if the measures you put in place to detect known vulnerabilities were efficient. ### **Keep software up-to-date** After deploying an app, patches and security updates should be released as frequently as possible. You should update software code based on internal quality tests as well as feedback from users. Performing patches, releasing updates, and encouraging users to download these updates will prevent hackers from exploiting any loopholes in the previous versions of your app.  **Conclusion ** --------------- The risk of malicious activities is ever-present and with the present and projected increase in enterprise app adoption, it is only bound to increase. Therefore, developers need to prioritize app security during development and after their apps have been deployed. Following the best practices stipulated above will ensure the integrity of enterprise apps and prevent the potential loss and damage that may result from the exploitation of security vulnerabilities. 

Use Quizgecko on...
Browser
Browser