CC 106 Module 1 [Student Handout].pdf

Full Transcript

CC 106 Application Development and Emerging Technologies Joshua C. Reyes CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 1 Course Overview University Pangasinan State University Campus...

CC 106 Application Development and Emerging Technologies Joshua C. Reyes CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 1 Course Overview University Pangasinan State University Campus Urdaneta Campus College College of Computing Department Information Technology Department Program Bachelor of Science in Information Technology Specialization/Major: Web and Mobile Technologies Course Information Course CC 106 Application Development and Credit Units 2/1 Emerging Technologies Term Semester 1, AY 2024-2025 Total Hours 90 Pre-Requisite SAD 102 System Analysis and Design; IM 102 Advanced Database Systems Co-Requisite None Course Description This course provides a comprehensive introduction to the field of application development and emerging technologies. The course covers the fundamental concepts of application development, including software development processes, methodologies, and project management. Students will explore various software platforms, frameworks, and architectures, while also gaining hands-on experience with tools used in the development lifecycle. The course also explores emerging technologies, understanding their applications and potential impact on the future of software development. Course Outcomes Demonstrate a solid understanding of the software development lifecycle and its CO1 various methodologies. – SDG Alignment: Industry, Innovation, and Infrastructure (SDG 9) Apply effective project management techniques to plan, execute, and deliver CO2 software projects efficiently. – SDG Alignment: Industry, Innovation, and Infrastructure (SDG 9) Utilize emerging technologies, such as artificial intelligence, big data analytics, CO3 and cloud computing, to create innovative software solutions. – SDG Alignment: Industry, Innovation, and Infrastructure (SDG 9) CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 2 Develop software applications that are secure, reliable, and maintainable. – SDG CO4 Alignment: Industry, Innovation, and Infrastructure (SDG 9) Collaborate effectively with team members to deliver successful software CO5 projects. – SDG Alignment: Industry, Innovation, and Infrastructure (SDG 9) Faculty Information Instructor Mr. Joshua C. Reyes Designation Instructor 1 Email Address [email protected] Consultation Schedule Thursday, 1:00 PM to 5:00 PM Office Location COC Office, 2/F Academic Building 1 Contact Number 09095959442 Facebook Account facebook.com/meetserjc LinkedIn Account linkedin.com/in/meetjcreyes CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 3 Contents Course Overview.................................................................................................................. 2 Module 1 Introduction to Application Development and Emerging Technologies................... 5 Unit 1: Overview of Application Software........................................................................... 5 1.1 Definition of Application Software............................................................................. 5 1.2 Hierarchy of Software (Classification of Software).................................................... 5 1.3 Attributes of Good Software Products....................................................................... 6 1.4 Types of Application Software.................................................................................. 6 Unit 2: Overview of Application Development.................................................................... 6 2.1 Definition of Application Development...................................................................... 6 2.2 Types of Application Development........................................................................... 7 2.3 Software Development Career Map (Philippine Skills Framework)........................... 7 2.4 Development Team.................................................................................................. 9 2.5 Development Toolbox............................................................................................. 10 2.6 Software Development Process............................................................................. 12 2.7 Documentation....................................................................................................... 13 Unit 3: Overview of Emerging Technology....................................................................... 15 3.1 Definition of Emerging Technology......................................................................... 15 3.2 Characteristics of Emerging Technology................................................................ 15 3.3 Industrial Revolution............................................................................................... 15 3.4 Emerging Technologies in Application Development.............................................. 16 CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 4 Module 1 Introduction to Application Development and Emerging Technologies Unit 1: Overview of Application Software 1.1 Definition of Application Software An application, also referred to as an application software, is a type of software designed to perform specific tasks for users. It directs the computer to execute commands given by the user, enabling the processing of data for various purposes. 1.2 Hierarchy of Software (Classification of Software) Software System Application Software Software Device Operating Language Generic Customized Drivers and Systems Processors Software Software Utilities Software: A collection of computer programs, data, and instructions that enable a computer to perform tasks. It serves as the interface between the user and the hardware. System Software: Software that manages the hardware components of a computer, including operating systems, language processors, device drivers, and utilities. Operating Systems: The core software that manages hardware resources, provides a user interface, and enables other software to run on a computer. Language Processors: Tools that convert high-level programming code into machine code. Types include assemblers, interpreters, and compilers. Device Drivers and Utilities: Software that allows the operating system to communicate with hardware devices and perform maintenance tasks. Application Software: Software designed to perform specific tasks for users, such as processing data or executing commands. Generic Software: Software designed for general use, applicable across various industries and tasks. CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 5 Customized Software: Software tailored to meet the specific needs of an individual, organization, or industry. 1.3 Attributes of Good Software Products To ensure that software meets the needs and expectations of its users, it must possess certain essential attributes. 1. Acceptability: Software should be understandable, usable, and compatible with other systems to meet the needs and expectations of its intended users. 2. Dependability: Software should be reliable, secure, and safe, avoiding physical or economic damage in case of failure. 3. Efficiency: Software should use system resources efficiently, with factors like responsiveness, processing time, and resource utilization. 4. Maintainability: Software should be adaptable to change, with characteristics like modularity, readability, testability, and flexibility. 1.4 Types of Application Software There are many different types of application software, including: 1. Stand-alone Applications: Software that runs independently on a single device (e.g., PC, mobile) and doesn't require a network connection. 2. Interactive Transaction-Based Applications: Web-based applications that allow users to interact with remote systems and perform transactions (e.g., e- commerce, online banking). 3. Embedded Control Systems: Software that controls hardware devices, found in various products like smartphones, cars, and appliances. 4. Batch Processing Systems: Systems that process large amounts of data in batches, often used for periodic tasks like billing or payroll. 5. Entertainment Systems: Software designed for personal entertainment, typically games running on dedicated hardware. 6. Systems for Modeling and Simulation: Complex systems used by scientists and engineers to simulate physical processes or situations. 7. Data Collection and Analysis Systems: Systems that gather data from the environment and analyze it using statistical methods. 8. Systems of Systems: Large-scale systems composed of multiple interconnected software systems. Unit 2: Overview of Application Development 2.1 Definition of Application Development Application development (also known as software development) refers to the process of creating application software that perform specific tasks or provide certain functionalities. It involves designing, developing, testing, and deploying application software that meet the requirements of users or businesses. CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 6 Application development is closely related to system engineering and software engineering, but each field has its distinct focus: Software Engineering is a more specialized discipline that focuses specifically on the development, operation, and maintenance of software. It applies systematic, disciplined, and quantifiable approaches to ensure the quality and reliability of software products. System Engineering is a broader discipline that encompasses the analysis, design, and implementation of entire systems, including both hardware and software components. It considers the system as a whole, ensuring that all parts work together effectively. 2.2 Types of Application Development 1. Mobile Application Development: Creating software applications designed for smartphones, tablets, and smartwatches; Uses programming languages like Java, Kotlin, Swift, and frameworks like React Native, Flutter, Xamarin. 2. Web Application Development: Creating software applications accessible through web browsers; Uses technologies like HTML, CSS, JavaScript, PHP, Python, Ruby, React, Angular, Vue.js, Node.js. 3. Desktop Application Development: Creating software applications for desktop or laptop computers; Uses programming languages like Java, C++, C# and frameworks like.NET, JavaFX, Electron. 4. Cloud Application Development: Creating software applications that run on cloud-based infrastructure; Uses programming languages like Java, Python, Ruby, and frameworks like Node.js, Flask, Django. 5. Cross-platform Development: Creating software applications that run on multiple platforms (Windows, macOS, Linux, Android, iOS); Approaches include hybrid development (using web technologies), native development with cross-platform tools, and Progressive Web Apps (PWAs). 6. Enterprise Application Development: Creating software applications for large organizations, often mission-critical and integrated with multiple systems; Uses programming languages like Java,.NET, Python, and frameworks like Spring, Hibernate, Django. 7. Game Development: Creating video games for various platforms (PCs, consoles, mobile devices); Involves specialized programming, graphics, and game design techniques. 2.3 Software Development Career Map (Philippine Skills Framework) The Philippine Skills Framework (PSF) is an initiative designed to provide a clear and structured guide for skills development across various industries in the Philippines. It aims to support individuals, employers, and educational institutions in identifying the skills needed for different roles and career paths, fostering a culture of continuous learning and development. The framework aligns with industry standards and helps prepare the workforce for the demands of a rapidly changing job market. CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 7 The Software Development Career Map under the PSF outlines a structured pathway for professionals in the field of software development, highlighting key roles and the progression from entry-level to senior leadership positions. CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 8 The PSF Software Development Career Map provides a clear pathway for individuals to progress from foundational roles, such as Associate Software Engineer or Associate Embedded Systems Engineer, to more advanced positions like Software Engineer, Platform Engineer, and eventually to strategic roles such as Solutions Architect, Enterprise Architect, or Chief Technology Officer. This structured approach helps guide career development, ensuring that professionals acquire the necessary skills and experience to advance in their careers. 2.4 Development Team A typical software development team consists of various roles, each with distinct responsibilities essential for the successful completion of a project: CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 9 Project Manager: Oversees the entire project lifecycle, ensuring it meets goals within budget and timeline. System Architect: Defines the technical design and architecture of the software system. UX Designer (Software Designer): Creates the user experience and graphical user interface, focusing on usability and aesthetics. Programmer (Developer): Implements the software code, writing the actual programming logic. Software Tester: Ensures software quality by identifying and testing for defects, bugs, and inconsistencies. Stakeholders: Individuals or groups with an interest in the project's outcome (e.g., customers, management, shareholders). System Engineer: A versatile professional who can fill various roles in software development, such as programmer, architect, designer, or tester. To successfully create software, collaboration within the team is essential. Effective communication and teamwork are crucial to ensure that all aspects of the project are aligned, and that the final product meets both technical standards and user expectations. 2.5 Development Toolbox CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 10 To excel in software development, having a well-equipped toolbox is crucial. Here are some essential tools that every software engineer or developer should be familiar with: Hardware Personal Computer (PC): A reliable personal computer is the foundation of your work environment. It should be powerful enough to handle coding, testing, and running various development tools efficiently. Software Programming Languages: Mastery of one or more programming languages is crucial. These languages are the building blocks of software, enabling you to write the code that forms the core of applications. Popular choices include Python, Java, JavaScript, C++, and C#. Integrated Development Environment (IDE): An IDE is a software suite that provides comprehensive facilities to developers for software development. It typically includes a code editor, a compiler or interpreter, and debugging tools, all in one place, streamlining the coding process. Popular IDEs include Visual Studio, IntelliJ IDEA, Eclipse, and PyCharm. Frameworks: Frameworks provide a structured environment for building software, offering pre-written code and libraries to simplify, accelerate development and improve code quality. They help ensure that your software is scalable, maintainable, and aligned with industry standards. Examples include React, Angular, Django, and Spring. Source Code Control (SCC) Tool: Source Code Control tools are essential for managing changes to your codebase. They allow multiple developers to work on the same project simultaneously, track revisions, and revert to previous versions if necessary. Popular options include Git, SVN, and Mercurial. Application Lifecycle Management (ALM) Tool: ALM tools help manage the entire lifecycle of software development, from planning and design through development, testing, and maintenance. They ensure that all aspects of the software project are CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 11 coordinated and controlled, improving quality and reducing risks. Examples include Jira, Azure DevOps, and TFS. Knowledge and Skills Software Engineering Knowledge and Skills: A strong understanding of software engineering principles, methodologies, and best practices is essential for building high- quality software. 2.6 Software Development Process In software development, the Software Development Lifecycle (SDLC) is a structured approach that outlines the various phases involved in creating high-quality software. Each phase plays a crucial role in ensuring that the software meets user needs and performs reliably. Here’s a breakdown of the key phases involved in the SDLC: Requirements Engineering: The process of gathering, analyzing, and documenting the needs and expectations of the software's users. Design: The process of creating a detailed plan for the software, including its architecture, components, and interactions. Implementation: The process of writing the actual code for the software, translating the design into a functioning program. Testing: The process of identifying and fixing bugs or issues in the software through various testing techniques. Deployment: The process of installing the software and making it available for use, including ongoing maintenance and updates. CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 12 In each phase of the Software Development Lifecycle (SDLC), there are specific activities that are essential to the successful completion of that phase. These activities ensure that the objectives of each phase are met and that the project progresses smoothly to the next phase. 2.7 Documentation Documentation: Throughout the SDLC, documentation is created to provide detailed information about the software. This includes materials that help users and developers understand and work with the software effectively. Creating comprehensive documentation is essential for understanding, maintaining, and using the software. CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 13 Here are the typical documentations involved in software development: Planning Software Development Plan (SDP): A foundational document outlining the project's scope, objectives, timeline, budget, and resources. Requirements/Design Software Requirements Specification (SRS): A detailed document defining the functional and non-functional requirements of the software. Software Design Document (SDD): Describes the architecture, components, and interfaces of the software system. ER Diagrams (Entity-Relationship Diagrams): Visual representations of data entities and their relationships used in database design. UML Diagrams (Unified Modeling Language): Standardized diagrams used to model various aspects of software systems. Testing Software Test Plan (STP): Outlines the testing strategy, objectives, scope, and resources required for testing. Software Test Documentation (STD): Detailed records of test cases, execution, results, and defects. End-User Documentation System Documentation: Provides technical information about the software system, including architecture, components, and how it works. Installation Guides: Step-by-step instructions for installing and configuring the software. CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 14 User Manuals: Comprehensive guides for end-users on how to use the software effectively. Unit 3: Overview of Emerging Technology 3.1 Definition of Emerging Technology Emerging technologies (ET) refer to science-based innovations that have the potential to create new industries or significantly transform existing ones. These technologies may not necessarily be new but are considered emerging if they are not yet widely adopted or available in a specific context, such as a particular domain, place, or application. Emerging technologies often begin as conceptual ideas and evolve through research and development, eventually gaining social relevance and causing radical changes in business, industry, or society. 3.2 Characteristics of Emerging Technology 1. High Uncertainty: Emerging technologies often have uncertain standards, specifications, business models, pricing, and adoption rates. 2. Network Effects: The value of an emerging technology increases as more people adopts it. 3. Unseen Social and Ethical Implications: The social and ethical impacts of emerging technologies may not be fully understood until after they are widely adopted. 4. High Costs: The initial cost of acquiring and implementing emerging technologies can be significant. 5. Geographical Limitations: Emerging technologies may be limited to specific countries or regions due to factors like infrastructure or regulations. 6. Limited Research and Investigation: There may be limited academic or scientific research on emerging technologies, with much of the information coming from manufacturers. 3.3 Industrial Revolution Emerging technologies have been a driving force behind each of the industrial revolutions. They have transformed industries, economies, and societies, leading to significant advancements in productivity, efficiency, and living standards. CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 15 Industry 1.0: The First Industrial Revolution (Late 18th Century) Key Innovation: Mechanization through steam power and water power. Overview: Transition from manual labor to mechanized production, rise of factories, and increased efficiency. Industry 2.0: The Second Industrial Revolution (Late 19th to Early 20th Century) Key Innovation: Mass production and electrification. Overview: Expansion of factories, assembly lines, advancements in steel, chemicals, and the internal combustion engine. Industry 3.0: The Third Industrial Revolution (Late 20th Century) Key Innovation: Automation, robotics, information technology. Overview: Digitalization of manufacturing, data processing, and communication. Rise of automation and globalization. Industry 4.0: The Fourth Industrial Revolution (21st Century) Key Innovation: Cyber-physical systems, IoT, artificial intelligence, cloud computing, big data. Overview: Integration of digital, physical, and biological systems. Smart factories, autonomous decision-making, customized manufacturing, predictive maintenance, real-time monitoring. 3.4 Emerging Technologies in Application Development 1. Artificial intelligence (AI) and machine learning: AI and machine learning are being increasingly integrated into app development, allowing apps to become smarter, more personalized, and more efficient. AI and machine learning can be used to power chatbots, voice assistants, and recommendation systems, among other applications. 2. Internet of Things (IoT): IoT refers to the network of connected devices, including smart homes, wearables, and industrial machines. App developers are creating apps that can integrate with IoT devices, allowing users to control and monitor their devices from a single app. CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 16 3. Low-code development: Low-code development platforms allow developers to create apps using pre-built components and visual interfaces, without the need for extensive coding. This approach can significantly reduce development time and costs. 4. Cloud-based apps: Cloud-based apps offer several advantages, including scalability, flexibility, and reduced infrastructure costs. App developers are increasingly building cloud-based apps that can run on multiple devices and platforms. 5. Augmented Reality (AR) and Virtual Reality (VR): AR and VR technologies are being used to create immersive experiences in apps, such as virtual tours, product demos, and games. 6. Blockchain: Blockchain technology is being integrated into app development, allowing for secure, decentralized transactions and data management. 7. Instant apps: Instant apps allow users to try out apps without the need to download and install them. This trend is becoming increasingly popular, as users are looking for more convenient and faster ways to access and use apps. CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 17 CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes CC 106 Application Development and Emerging Technologies © 2024 Joshua Castro Reyes 18

Use Quizgecko on...
Browser
Browser