Lesson 3 Software Development Tools Link to digital lesson www.ien.edu.sa Software Development Tools and Programs Developers use a wide range of tools to develop software applications, each of which has its advantages and disadvantages. The programming process requires developers to be flexible and creative to take full advantage of the capabilities of different software development tools to deliver high-quality work for their clients. Software development tools and programs are used to assist the software development team in various tasks, including creating, modifying and maintaining programs, as well as debugging and implementing software tasks and development processes. There are also many specialized programs that provide or support specific tasks in the stages of the software development cycle. Table 1.4: Classification of software development tools Software development tools Code Editors Compilers and Linkers Debuggers Project Builders Code Management Tools Integrated Development Environment (IDE) Profilers Network Analyzers Database Explorer and Analyzer علة التعليم Description Used to write and make changes to code. Translate programs into executable machine language. Help us correct errors in the software. Make sure that all the necessary files will be compiled and linked to one final program. Ensure that program files are not accidentally replaced when multiple programmers are working on the same program concurrently. Provides programmers with an integrated software environment that includes a text editor, compiler, linker, and debugger. Usually give us a good idea of the program's needs and handling of processor time and memory resources while running. Necessary when writing software for networking applications in particular. Allows dealing with databases and analyzing the performance of specific database queries. Ministry of Education 42 2U24-1446

Lesson 3 Software Development Tools

Software Development Tools and Programs

Table 1.4: Classification of software development tools

Code Editors A code editor allows us to create and edit several connected programming language files, and usually it can handle many different languages like HTML, CSS, JavaScript, PHP, Ruby, Python, C, etc. Code editors use indents and different colors to format the code into code sections. This makes them much more suitable for writing code than ordinary word processors and text editors like Microsoft Word or Notepad. Features of Code Editors • Error-checking • Auto-completing and code suggestions • Code snippets • Syntax highlighting • Facilitate navigation of code files and resources Adding more functionality via extensions 1 2 3 4 5 6 7 8 9 10 average.py # calculate the average class grade total_grades =0 0 int(input("Enter the number of students: ")) total_students 13 for n in range (1, total_students + 1): print("Student #", n) student_name = input("Enter the name of the student: ") student_grade = input("Enter the grade of " + student_name + ": ") total grades = total grades + float(student_grade) total_grades average grade = total_grades/total_students print("The average grade of the class is ", average grade) Figure 1.14: Python script in a code editor There are many code editors that can be chosen by the programmer according to their preferences. The only criterion for choosing an editor is the efficiency of that editor for the required task. Some examples of code editors are: • Sublime Text • Espresso . Notepad++ • Atom Python IDLE • Vim • Ultraedit • Visual Studio Code • Coda 2 • BBedit Advantages and Challenges of Using Code Editors Advantages • They can rival the Integrated Development Environment (IDE) Editor for standard programming tasks when appropriate extensions to support different programming languages are used. ⚫They are smaller and faster to load than IDEs. • Their streamlined interfaces make it easy to focus on our code. Challenges They lack a a lot of editing features which only IDEs provide, such as smart editing. • Users may need to configure the code editor with the appropriate extensions before use. وزارة التعليم Ministry of Education 2024-1446 43

Lesson 3 Software Development Tools

Code Editors

Advantages and Challenges of Using Code Editors

Integrated Development Environments (IDES) Integrated development environments are usually presented with their own built-in applications, which include a number of software development tools such as an interpreter for use during the program creation phase, and a compiler for finalizing and publishing the program. Modern integrated development environments are not limited to providing a compiler for the programming language only, but rather contain all the necessary programs and tools to help write and implement code, and most importantly, to diagnose and correct programs. Among the most important tools included in integrated programming environments are: • File Explorer • Interpreter • Linker • Code Editor • Compiler • Debugger . Output Viewer IDEs must include an editor dedicated to facilitating the creation of graphical objects such as forms, menus, and dialog boxes, in order to provide the developer with the appropriate tools to create the code blocks related to these objects. Features of IDEs • Smart completion of code in the code editor. Integration with code management tools for version control. • Advanced testing tools • Automatic linking of source code libraries. • Tools for automating code creation and deployment. All these services can be accessed through a unified user interface. Examples of IDEs In the past, most IDEs supported only one programming language and were usually created by the software companies or organizations that created that specific language. Nowadays, most software development projects integrate different technologies and programming languages, which requires IDE development environments that can support a wide range of languages. For example, Microsoft Visual Studio supports C, C++, C#, VB.Net, Python, Ruby, Node.js, JavaScript, HTML/CSS, etc. Other popular IDE tools include NetBeans, Eclipse, Atom-IDE, Xcode, Android Studio, IntelliJ IDEA and PyCharm. Xcode is used to develop mobile application software for iOS devices. For Android devices, Android Studio is used. وزارة التعليم Ministry of Education 44 2024-1446

Lesson 3 Software Development Tools

Integrated Development Environments (IDE)

Features of IDEs

Examples of IDEs

Advantages and Challenges of Using integrated Development Environments (IDE) Advantages: • Provide intelligent code completion and analysis tools for faster programming with fewer errors. • • • They provide powerful code browsing and discovery tools, and make it easy to access any part of the program, no matter how large the project. They offer multiple ways to debug and test code without leaving the editor. They support many programming languages natively and provide many code navigation and code analysis tools to facilitate work and productivity on large projects. Challenges: • The interfaces are packed with a lot of features which can make them complicated and difficult to use. • They require a certain amount of training to use them correctly. • Excessive functions often lead to slow performance. Cloud Software Environments Besides traditional software development environments, there are web-based cloud development environments, such as Amazon Cloud9. Cloud software environments provide the ability to work on our project from any computer, anywhere in the world, as our software development project data resides in the cloud. One of the main drawbacks of these environments is the need to connect to the Internet to access data and do work. وزارة التعليم Ministry of Education 2024-1446 Advantages of Using Cloud Software Development Environments • Access to software development tools from anywhere in the world. • Possibility of using any device with a web browser. • There are no requirements to download and install the software environment. • Can facilitate collaboration between remote developers. 45

Lesson 3 Software Development Tools

Advantages and Challenges of Using integrated Development Environments (IDE)

Cloud Software Environments

Advantages of Using Cloud Software Development Environments

Commands Negate Environment AW'S Cloud9 File Edit Find View Goto Run Tools Window Support Preview Run lambda function py 1 import boto3 2 option table-boto3.resource('dynamodb'). Table('options') 3 vote table-boto3.resource('dynamodb').Table('votes') more cowbell 4 5 def build_response(message, message type-"Close", session_attributes- resp - { 6 "dialogAction": { "type": message_type, "message": { "contentType": "PlainText", "content": message Environment Members ReadWrite You (online) effar (one) Otaraker (offline) Group Chat Share Chat story is stored on the comment and can be both read and modifest by leadite There's You Collaborate AWS Resources Debugger 14 15 if message type is 'Close': 16 resp["dialogAction"]["fulfillmentState"] = "Fulfilled" 17 if session attributes: 18 19 return resp resp['sessionAttributes'] session attributes 21 def lambda_handler(event, context): if 'GetName' event ['current Intent']['name']: name event['current Intent']['slots']['name'] Hi Tara Could you hep me figure out beter way to use DynamoDB are @tarawaker HI Randall Sure los atan by making those satles vonment variation? You Beet Foxed Should we invite jeff to give it a once over? Gtarwalker Absolutely, but don't give him write access He'll change all the variables to wingdings session attributes ('name': event['currentIntent']['slots'] @jeffbar return build response("Thanks you can ask me to describe t This is great Handall & if 'DescribeEpisodesTwo event['currentIntent']['name']: options option table.get_item(Key-['poll': 'episodes']['It cowbet Figure 1.15: Amazon Cloud9 environment Programmers spend most of their programming time in testing and debugging, so integration of the code editor with the compiler and debugger is very convenient. This is the main feature of the IDE. Specialized Tools for Specific Stages of Software Development Creating professional software solutions requires working in a team and using a variety of tools that are not limited to the programming stage only, but extend to the process as a whole. There are many tools that can be used during the SDLC of a software product, and it can be difficult to list all the software and other essentials needed to develop business software, but a selection of these tools are described below. Prototype Creation A software prototype is usually an organization chart, an image, or a set of images that show the functional elements of an application, or it may be a website used to map out applications or the structure and functionality of the website. Examples of tools used: • Pencil • Balsamiq Mockups • Adobe Xd Desktop version My Account Figure 1.16: Balsamiq Mockups tool Version Control Management - Source Code The source code is subject to many modifications during the development process, and it may be necessary to undo certain steps in the program or reuse code that has been changed or deleted. When working in a team of programmers, two or more may need to work on the same files at the pil same time and make changes to the same code. Ministry of Education 46 2024-1446

Lesson 3 Software Development Tools

Figure 1.15: Amazon Cloud9 environment

Specialized Tools for Specific Stages of Software Development

Prototype Creation

Version Control Management - Source Code

The tool we can use to control this process is called "version control management" or "code management". This tool enables the following: 1. Different team members can access the source code simultaneously without creating work conflicts. 2. Previous versions of code files can be kept for reference when some problems occur. Version control uses a repository to record all changes made and creates a working copy of the project's code files, sometimes called a checkout copy, when a programmer wants to work on the code. All changes to the code are approved by the version control management software when changes to the code are saved to the repository. Examples of tools used: • Git • Subversion • Mercurial • Azure DevOps • DiffMerge DOWNRTISTUSE A gts sefiereste ain Aix chege is being Present sets, art On branch star #Your but afrigter bell, Tag your face! cor Changes to be committal new File: Now FIZA! Now file: new files new file: now filer -git contig -tamplate gt-hooks/came git-hooks/prepare-commit-ong globel-gitigas Dunges et staged for samit shrc modifint: dified subl odified dified autetadi تأهية. down.sublime-settings Package Control.bt-settings www.stime-settings message subline settings Figure 1.17: Version control management Code Deployment Until a few years ago, it was easy to deploy an application since the compiled output of the program was placed on a disk ready to use. With the advent of the Internet, it became necessary to "publish" applications via the Internet, as installable software through application stores or directly as web applications, and accordingly special programs and tools appeared for publishing code on the web. Examples of tools used: • TeamCity • Google Cloud Deployment Manager • GitLab • Jenkins • AWS CodeDeploy • Azure DevOps 5445& #0.1.11 Update azure-pipelines yami for Azure Pipelines Summary Test Summary 1 100% 10s 567ms 0 But cew Owen Aborted (+1) X وزارة التعليم Ministry of Education 2024-1446 Figure 1.18: Code deployment INFORMATION "Branching" is a very useful feature of version control. It is the ability to copy all project code as a new parallel project to allow testing or making changes to create an updated or new version of the application. Parts of the new code can later be ported over to the original project to be used in the original application as well. 47

Lesson 3 Software Development Tools

The tool we can use to control this process is called

Code Deployment

"Branching" is a very useful feature of version control.

Testing Testing is not just debugging the code, but also includes testing the operation of the program and the effectiveness of its use by a large number of users, as well as performing security and other tests. Examples of tools used: • Apache JMeter • Selenium • Ghostlab • Telerik Test Studio • Azure DevOps • IronWASP • Zed Attack Proxy • Wapiti Project Management, Collaboration and Issue Tracking As we have already learned, having a successful product requires keeping track of the entire process and sharing knowledge with the entire team, especially when the team is expanding. This is where the project management process becomes especially important. Examples of tools used: • Microsoft Teams for collaboration and communication. • Scrum Trello for Agile Planning and Tracking. • Jira to track specific issues and manage projects. • MeisterTask for task management. • Slack for collaboration and communication. • Basecamp for managing projects and communicating with clients. • Azure DevOps for Application Lifecycle Management (ALM) Team Gout Setting Carra وزارة التعليم Ministry of Education 48 2024-1446 Roadmap D Figure 1.19: Examples of project management, collaboration and issue tracking tools 13

Lesson 3 Software Development Tools

Testing

Project Management, Collaboration and Issue Tracking

Examples of tools used:

Using Development Tools to Provide Different Solutions Development teams rely on the tools we described earlier to produce a wide range of IT solutions, many of which we use today to build applications of various kinds, such as: ⚫ Web applications ● Smartphone Applications. Building a Web Application • General applications Embedded systems A web application is an interactive program that is built using HTML, CSS, and JavaScript web technologies, and which stores data on database servers. This application is used by users who perform tasks over the Internet. Stages of Building a Web Application 1. The Ideation Stage: Before creating a web application, we must set the goals and main idea of the application. 2. Market Research: We must do what is called market analysis to find out: Whether the target consumer has a need for this product or service. • Whether a similar product or service exists. 3. Define Web Application Functionality: We must identify functions that provide solutions to the problems of the target market. 4. Wireframing or Prototyping: Wireframing is about designing the layout of our web application, and prototyping takes the organization chart a step further by adding interactivity to test the functionality of the application. 5. Seek Validation: At this stage, constructive opinions and feedback are collected from relevant parties and potential users regarding the design. 6. Architect and Build Database: At this stage, the data needed by programmers and users is determined as well as the tool used to •••build the required database for the web application. وزارة التعليم Ministry of Education 2024-1446 49

Lesson 3 Software Development Tools

Using Development Tools to Provide Different Solutions

Building a Web Application

Stages of Building a Web Application

There are many database design tools that are used for different purposes, but the nature of the program and how it is proposed to deploy our software solution will determine the choice of a specific tool. Examples of tools used in designing and building databases are: • MySQL • Amazon DynamoDB • MongoDB • SQL Server • Azure SQL • Firebase 7. Building the Frontend The front end is the visual element of our web application, and it represents the interface between the user and the system. This interface represents what the user sees and interacts with. Examples of tools used to build an optimized user interface for the web include: • jQuery • Reactjs · Django • Vue.js • Angular 8. Building the Backend The backend is used to manage the data in the program. It refers to the databases and servers as well as all other parts that are not visible to the user within the web application. Building the backend includes writing the core code that provides the application's functionality, as well as preparing the database, the networks, and verifying the integration between the different subsystems. Security and performance considerations become of particular importance. Examples of tools used in building the backend are: • Express JS • ASP.NET • Ruby on Rails • Laravel • Flask • Spring Boot 9. Hosting our Web Application To run our web application on a specific server, we need a web hosting provider. The hosting service may be simple and cheap, or it may be a large cloud computing service that allows our cloud ⚫infrastructure to grow as the number of application users grows and our needs grow. وزارة التعليم Ministry of Education 50 2024-1446

Lesson 3 Software Development Tools

There are many database design tools that are used for

User Table 1.5: Web hosting providers Types Bluehost • HostGator Examples Hosting Providers • GoDaddy • Rackspace Cloud Service Providers Frontend Collect Data Display Results وزارة التعليم Ministry of Education 2024-1446 • IBM Cloud • Microsoft Azure • Amazon Web Services • Google Cloud Platform • Alibaba Cloud Web Application Architecture Request Backend Contains App Logic Response PHP, Javascript, Python, Java I What the Use Sees Web Server and Interacts with HTML, CSS, Javascript Figure 1.20: Basic web application architecture I File System HTML, CSS, Images Database I MySQL, PostgressSQL, I MariaDB | 51

Lesson 3 Software Development Tools

Table 1.5: Web hosting providers

Figure 1.20: Basic web application architecture

The Cloud-Ready Application Architecture It is preferable to develop and deploy cloud-based web applications as a set of cloud services. This process involves building data structures and then creating services, which are combined to form an integrated system. The following diagram shows how to build a scalable and high-performance web application using Microsoft Azure services. The same concept applies to all cloud computing providers. Azure Active Directory Authentication Internet App Service plan Web front end Azure Front Door Queue Web App DNS lookup DNS Azure CDN Blob Static content Azure DNS Function App Redis cache Figure 1.22: Building a web application with Microsoft Azure Data storage SQL Azure SQL Cosmos DB Database The most important points to consider when using cloud application architecture are: • The design of the application as a set of services. • The separation of data, security and performance standards. • The requirements for communication through networks between application components. • The scalability of the design. . System security must be a core part of the application and not something to be planned for later. • The physical distance from users is the most important consideration when choosing data centers. وزارة التعليم Ministry of Education 52 ZU24-1446 Azure Search Resource group

Lesson 3 Software Development Tools

The Cloud-Ready Application Architecture

The most important points to consider when using cloud application architecture are:

Building an Application for Smartphones The steps for creating a mobile application are similar to those for a web application but with some special considerations. The mobile application is used on a phone which usually has a small screen, and, as the name suggests, the user will use the application "on the go", which means it is important to consider the convenience of the interface. The user should be able to adjust the screen size and access important information in a clear and simple way. It is also important to note that the difference in devices leads to the need for responsive applications. The two major mobile platforms, iOS and Android, each support a different but similar set of technologies. For example, iOS recommends Xcode and Swift for software development, while Android recommends Android Studio and Java. These environments only allow building a final app that is ready to be published to the specific app store in that environment. However, there are environments that try to solve this problem by supporting app deployment to multiple stores. With the following tools, a single application can be developed in a way that runs in different software environments: • Xamarin • React Native • lonic • Kotlin Testing mobile applications is a big challenge and it is difficult for a programmer or even a software development company to have all the mobile devices available in the market to do the testing. This is why there are online services that offer simulations for a wide range of mobile devices where we can simulate testing our application for compatibility on the different devices. Examples of tools that enable application testing are: • Xamarin Test Cloud • BrowserStack • Firebase Test Lab وزارة التعليم Ministry of Education 2024-1446 9:37 AM NOKIA 10:00 Sales 6-Week Sales Sales 6-Week Sales sales $1,056.60 $1,056.60 6-Week Sales WEEKLY AVERAGE $1,056.60 LEADS Bay Tech Credit Union 343000 LEADS Bay Tech Credit Union City of Richmond LEADS Bay Tech Credit Union Cityview Consulting 50% Vue Proposin City of Richmond 755-Proposal $4,500,00 11.500.00 City of Richmond Cityview Consulting East Ray Commercial Bank 130000 1000.0 10% - Prospect $2,000.00 Global Manufacturing Cityview Consulting Figure 1.23: Same mobile application on different devices 53

Lesson 3 Software Development Tools

Building an Application for Smartphones

Examples of tools that enable application testing are:

Building a General-Purpose Application General purpose software is a type of application that can be used to perform many tasks, as is the case with traditional office software such as word processors, graphic design software, Enterprise Resource Planning (ERP) business applications, or Customer Relationship Management (CRM) software. Despite the focus of new software development technologies on the web and mobile applications, these traditional applications still retain their importance. The development of such applications relies on ready-made and reusable code libraries, especially user interface components and reporting tools. ERP-FM ID: 176577-F-Acting Serings-577hams Walk the 10 AUK Hersham Golf Clu O South Weylands Farm Start 1101 www " $ 22564/Sell 42.50/ Players Company Type 34019 ( 40 8 50 1 Figure 1.24: General-purpose application Building an Embedded Application An embedded system is a special computer with a real-time operating system, often without a user interface. Software on the embedded system handles sensors, actuators, and mechanisms for wired or wireless data exchange. These programs must be reliable, secure and fast. These applications require real-time operating systems such as RTLinux, Windows 10 IoT, and QNX as well as programming languages that are optimized for data processing, and network connectivity. Examples of embedded systems are traffic lights, fire alarms and home security systems. Embedded systems can be programmed using the following programming languages: • Assembly language (difficult and unsuitable for practical use). • C, Embedded C, nesC, Rust. • Object Oriented languages such as C#, C++, and Java. وزارة التعليم Ministry of Education 54 2024-1446 01707 Figure 1.25: Embedded system

Lesson 3 Software Development Tools

Building a General-Purpose Application

Building an Embedded Application

1 Exercises Choose the correct answer: Make sure that all the files you select will be compiled and linked into one final program. 1. Project Builders: Translate your program into executable code on the device. 2. Code management tools: 3. Profilers: وزارة التعليم Ministry of Education 2024-1446 Are necessary in the case of creating specialized programs related to networks. Help you debug the program. Work with databases and analyze the performance of queries on some databases. Ensure that program files are not accidentally replaced when multiple programmers are working on the program concurrently. Provide or support a specific task in any state of the development or programming cycle. Usually give us a good idea of the handling and needs of the program in terms of processor time and memory resources during operation. Are special computers with real time operating systems and usually without a user interface. 55

Lesson 3 Software Development Tools

Choose the correct answer:

2 Choose the appropriate word to complete the sentences: web application version control program prototype word processors 1. 2. general purpose code editors IDE help you write and make changes to the code. are not suitable for programming as they do not allow the easy formatting of code into code blocks. 3. A(n) includes a code editor, compiler, linker and debugger. 4. A(n) is an organization chart and is used for planning applications, website architecture, and functions. 5. tools ensure that work is synchronously integrated by the various team members. 6. A(n) is an interactive program that stores data on database servers and is used by a number of users who perform tasks over the Internet. 7. وزارة التعليم Ministry of Education 56 2024-1446 programs are used to perform a wide range of tasks.

Lesson 3 Software Development Tools

Choose the appropriate word to complete the sentences:

3 Match the following: Text editor 1 Version control وزارة التعليم Ministry of Education 2024-1446 software 2 IDE 3 Front end 4 Backend 5 О The visual elements of a web application; the interface between the user and the system. Enables previous versions of code files to be preserved for reference when problems occur. A type of software used to modify text files. Manages your data, databases, servers and all components that the user can't see inside the web application. Contains all the software and tools needed to write and implement programs and to diagnose and fix problems. 57

Lesson 3 Software Development Tools

Match the following:

4 5 6 What are the most important points to consider when using cloud application architecture? What is meant by general purpose software? Give some examples. Give four types of software development tools. وزارة التعليم Ministry of Education 58 2024-1446

Lesson 3 Software Development Tools

What are the most important points to consider when using cloud application architecture?

What is meant by general purpose software? Give some examples.

Give four types of software development tools.

7 Give three examples of code editors. 80 List the basic steps for building a web application. 9 Give three basic features of an IDE. وزارة التعليم Ministry of Education 2024-1446 59

Lesson 3 Software Development Tools

Give three examples of code editors.

List the basic steps for building a web application.

Give three basic features of an IDE.