Lecture 11 - System Development

This lecture explores two fundamental aspects of information technology: database systems and the system development process. It starts by explaining how data is structured and managed within databases, highlighting the advantages of the database approach over traditional file processing systems. It then delves into the systematic process of system development, guiding students through the phases of the system development life cycle (SDLC). The lecture also covers various programming languages, application development tools, and web development technologies, providing a comprehensive overview of software development.

Databases: Organizing Data for Effective Use

  • Database: A collection of data organized to enable efficient access, retrieval, and use of that data. Databases store information about various entities, their attributes, and relationships, providing a structured and organized way to manage data.

  • Data vs. Information: Distinguish between raw, unprocessed data (text, numbers, images, audio, video) and processed data that is organized, meaningful, and useful for making decisions (information).

  • Database Management System (DBMS): Software designed to create, manage, and interact with databases. A DBMS provides tools for:

    • Creating a Database: Defining the structure (tables, fields, relationships) of the database.

    • Adding, Modifying, Deleting Data: Maintaining the data within the database.

    • Sorting and Retrieving Data: Organizing and accessing data in various ways.

    • Creating Forms and Reports: Designing user-friendly interfaces for data entry and generating formatted reports for presenting data.

  • Data Hierarchy: Data is organized in a hierarchical structure:

    • Character: A single letter, number, symbol, or other character, represented by one byte.

    • Field: A combination of one or more related characters that represent a specific attribute of an entity (e.g., name, address, email).

    • Record: A collection of related fields that describe a single instance of an entity (e.g., a customer record with fields for name, address, phone number).

    • Data File (Table): A collection of related records, all having the same fields.

  • Primary Key: A field that uniquely identifies each record in a data file (table). For example, a customer ID or employee ID is used as a primary key to distinguish between different customers or employees.

  • File Maintenance: The process of keeping the data in a database up-to-date and accurate. This involves adding new records, modifying existing records to reflect changes, and deleting records that are no longer needed.

  • Data Validation: Techniques used to check the accuracy and integrity of data entered into the database. Common validation methods include:

    • Alphabetic/Numeric Check: Ensuring a field contains only letters or numbers.

    • Range Check: Verifying that a value falls within a specified range (e.g., age must be between 0 and 120).

    • Consistency Check: Checking that data in different fields is logically consistent (e.g., if the hire date is after the termination date, it is an error).

    • Completeness Check: Making sure all required fields have data entered.

    • Check Digit: A calculated digit added to a number (like a credit card number) to detect errors in data entry or transmission.

File Processing vs. Database Approach: A Paradigm Shift

  • File Processing Systems: Older systems where each department or application maintained its own separate data files. This approach led to several problems:

    • Data Redundancy: The same data was stored in multiple files, leading to wasted storage space and potential inconsistencies.

    • Data Inconsistency: Different copies of the same data in different files could become out of sync, leading to inaccurate or conflicting information.

    • Data Isolation: It was difficult to share data between different applications or departments because the data was stored in separate files.

  • Database Approach: A more modern approach that addresses the limitations of file processing systems by centralizing data in a database that is shared by multiple applications and users:

    • Reduced Data Redundancy: The same data is stored only once, minimizing storage space and reducing inconsistencies.

    • Improved Data Integrity: Ensures data consistency across different applications.

    • Shared Data: Data can be easily shared between departments and applications.

    • Easier Access: Users can access the data they need through queries and reports, without needing to write complex programs.

    • Reduced Development Time: Developing new applications is faster because the database structure is already defined.

  • Disadvantages of the Database Approach: While the database approach offers significant advantages, it also has some potential drawbacks:

    • Increased Complexity: Databases require specialized knowledge and skills to design, implement, and manage.

    • Higher Resource Requirements: Databases typically require more memory, processing power, and storage capacity compared to file processing systems.

    • Data Vulnerability: A centralized database is a single point of failure. If the database is compromised, a large amount of data could be affected. Therefore, security measures, such as access control, encryption, and regular backups, are essential to protect the database.

Data Models and Database Types: Choosing the Right Structure

  • Data Model: A conceptual representation of how data is organized, structured, and related within a database. It defines the entities, attributes, and relationships that are relevant to the data being stored.

  • Types of Databases: The lecture highlights three common data models and database types:

  • Relational Database: The most widely used type of database. Data is organized into tables with rows (records) and columns (fields), and relationships between tables are used to link related data. Examples: MySQL, Oracle Database, Microsoft SQL Server, PostgreSQL.

  • Object-Oriented Database (OODB): Stores data as objects, which encapsulate both data and the methods (operations) that can be performed on that data. OODBs are often used for complex applications where the data has inherent relationships and behavior.

  • Multidimensional Databases: Designed for online analytical processing (OLAP), where data is organized in multiple dimensions (cubes) to allow for complex querying and data analysis from different perspectives.

Database Management Systems (DBMS): Managing Data Effectively

  • Data Dictionary (Data Catalog): A central repository that contains information (metadata) about each data element in the database, including table names, field names, data types, descriptions, validation rules, and relationships between tables. The data dictionary acts as a central reference point for understanding the structure and contents of the database.

  • DBMS Tools for Data Retrieval and Maintenance: DBMSs provide a variety of tools to access, manipulate, and manage the data within the database:

    • Query Language: Allows users to retrieve specific data from the database using structured queries.

    • Query by Example (QBE): Provides a graphical interface to help users create queries without having to write complex code.

    • Forms: User-friendly interfaces for entering, modifying, and viewing data in the database.

  • SQL (Structured Query Language): A widely used standard query language for relational databases, providing commands to insert, update, delete, and retrieve data.

  • Data Security: DBMSs offer features to ensure data security and restrict access to authorized users:

    • Access Privileges: Determine which users have permission to perform actions on the data (read, write, update, delete). This ensures that only authorized users have access to sensitive data.

    • Principle of Least Privilege: Users are granted only the minimum level of access necessary to perform their tasks, reducing the risk of unauthorized data modification or access.

  • Backup and Recovery: Essential for safeguarding data against accidental loss or corruption due to hardware failures, software errors, or disasters. DBMSs provide tools for:

    • Backups: Creating regular copies of the database to ensure data can be restored in case of data loss.

    • Transaction Logs: Keeping track of all changes made to the database, allowing for recovery to a specific point in time.

    • Recovery Utilities: Tools used to restore the database to a previous state using backups and logs.

System Development: A Structured Approach

  • Information System: A collection of hardware, software, data, people, and procedures that work together to collect, process, store, and disseminate information to support decision-making and business operations. Information systems play a crucial role in modern organizations, enabling them to manage data, automate processes, and gain insights from their information.

  • System Development: The process of creating or modifying information systems to meet the changing needs of organizations. It involves analyzing existing systems, gathering requirements, designing new solutions, implementing those solutions, and providing ongoing support and maintenance.

  • System Development Life Cycle (SDLC): A commonly used framework for organizing and managing system development activities. It breaks down the process into distinct phases, each with specific tasks and deliverables:

1.     Planning: Defining the scope of the project, determining its feasibility, establishing goals and objectives, and creating a project plan.

2.     Analysis: Understanding the current system, gathering requirements from users and stakeholders, analyzing those requirements, and developing a detailed understanding of the problem or opportunity the system is intended to address.

3.     Design: Creating a detailed blueprint of the new system, specifying hardware, software, database structure, user interfaces, inputs, outputs, and processing logic.

4.     Implementation: Building and testing the system, installing hardware and software, migrating data, training users, and transitioning from the old system to the new system.

5.     Support and Security: Providing ongoing maintenance, support, and security for the system after it is implemented, including fixing bugs, making updates, addressing user issues, and protecting data from unauthorized access.

  • Guidelines for System Development: Effective system development should follow these general guidelines:

  • Phased Approach: Breaking the project into distinct phases makes it easier to manage, track progress, and control costs.

  • User Involvement: Users should be actively involved throughout the process to ensure the system meets their needs and expectations.

  • Defined Standards: Establishing clear standards for documentation, coding, testing, and other aspects of the project ensures consistency, quality, and maintainability.

  • Project Management: A crucial aspect of system development, involving the planning, scheduling, and controlling of project activities to ensure successful completion within budget and on time.

  • Feasibility Assessment: Evaluating the practicality and viability of a project before committing significant resources. Feasibility assessment considers four key areas:

    • Operational Feasibility: Will the system be usable and acceptable to the users and the organization?

    • Schedule Feasibility: Can the project be completed within a reasonable timeframe?

    • Technical Feasibility: Does the organization have the necessary technology and expertise to develop and implement the system?

    • Economic Feasibility: Will the benefits of the system justify the costs of development, implementation, and ongoing maintenance?

  • Documentation: Thorough documentation is essential throughout the SDLC to capture information about the system:

    • Requirements Documentation: Defines the system's functional and non-functional requirements.

    • Design Documents: Specify the system's architecture, data models, user interfaces, and program logic.

    • User Manuals: Provide instructions for users on how to use the system.

    • Technical Documentation: Provides detailed information for system administrators and technical support staff.

  • Data and Information Gathering Techniques: Used to gather information about the current system and understand user needs and requirements for the new system:

    • Reviewing Existing Documentation: Analyzing existing documents, manuals, and reports related to the current system.

    • Observation: Directly observing how users interact with the current system to understand their tasks, workflows, and pain points.

    • Surveys: Distributing questionnaires to gather information from a larger group of users or stakeholders.

    • Interviews: Conducting structured interviews with key users and stakeholders to gather detailed information about their requirements and expectations.

    • Joint Application Development (JAD) Sessions: Collaborative workshops that bring together users, stakeholders, and developers to define requirements, discuss design options, and build consensus.

  • Planning Phase: The first phase of the SDLC, focusing on defining the scope and objectives of the project, assessing its feasibility, and creating a project plan:

    • Reviewing and Approving Project Requests: Evaluating proposals for new or modified systems.

    • Prioritizing Project Requests: Determining the priority of projects based on business needs and resource availability.

    • Allocating Resources: Assigning budget, staff, and other resources to approved projects.

    • Forming a Project Development Team: Assembling a team of skilled professionals to work on the project.

  • Analysis Phase: The second phase, focusing on understanding the current system, gathering requirements for the new system, and analyzing those requirements to develop a detailed understanding of the system's needs:

    • Preliminary Investigation: An initial assessment to determine the scope and nature of the problem or opportunity.

    • Detailed Analysis: A thorough analysis of the existing system, user requirements, and potential solutions.

  • System Proposal: A document that outlines different solution options, such as modifying the existing system, purchasing off-the-shelf software, developing a custom solution, or outsourcing development. The proposal evaluates the feasibility and potential risks and benefits of each option.

  • Design Phase: The third phase, focusing on creating a detailed blueprint for the new system:

    • Acquiring Hardware and Software: Determining the necessary hardware and software components, soliciting proposals from vendors, and making purchasing decisions.

    • Developing Detailed Design Specifications: Creating specifications for the database, inputs, outputs, user interfaces, and program logic.

  • Implementation Phase: The fourth phase, focusing on building, testing, and deploying the new system:

    • Developing Programs and Apps: Writing the code to create the software components of the system.

    • Installing and Testing the New System: Setting up the hardware, installing the software, and conducting thorough testing to ensure everything works correctly.

    • Training Users: Providing users with the knowledge and skills to effectively use the new system.

    • Converting to the New System: Migrating data from the old system to the new system and switching over to the new system.

  • Testing: Thorough testing is essential to ensure the system functions correctly and meets user needs. Different types of testing are used:

    • Unit Testing: Testing individual modules or components of the system in isolation to verify they work as intended.

    • System Testing: Testing the entire system as a whole to ensure that all components work together correctly.

    • Integration Testing: Testing how different parts of the system interact with each other, including interactions with external systems.

    • Acceptance Testing: Final testing conducted by users to verify that the system meets their requirements and is ready for deployment.

  • Training: Providing users with the knowledge and skills they need to effectively use the new system, using various training methods:

    • One-on-One Sessions: Personalized training provided to individual users.

    • Classroom-Style Lectures: Training for groups of users.

    • Web-Based Training: Using online tutorials, videos, and interactive exercises to deliver training remotely.

  • Conversion Strategies: Approaches for transitioning from the old system to the new system:

    • Direct Conversion: The old system is immediately replaced with the new system (the fastest but riskiest method).

    • Parallel Conversion: The old and new systems run simultaneously for a period of time, allowing for comparison and verification (safer, but more resource-intensive).

    • Phased Conversion: The new system is implemented in stages or modules, gradually replacing the old system.

    • Pilot Conversion: The new system is first implemented in a small pilot group to test its functionality and gather feedback before full rollout.

  • Support and Security Phase: The final phase of the SDLC focuses on providing ongoing assistance and security for the system:

    • Maintenance Activities: Addressing issues, fixing bugs, updating software, and making necessary changes to the system.

    • System Monitoring: Tracking system performance to identify potential issues and ensure it is operating efficiently.

    • Security Assessment: Evaluating system security, identifying vulnerabilities, and implementing security measures to protect data and prevent unauthorized access.

Application Development: Languages and Tools

  • Programming Language: A formal language that programmers use to write instructions for computers.

  • Application Development Tool: Software applications that provide tools and environments for creating, designing, editing, testing, and distributing software applications. Examples include Integrated Development Environments (IDEs), code editors, debuggers, and version control systems.

  • Programming Language Classification: Programming languages can be categorized into:

    • Low-Level Languages:

      • Machine Language: The lowest level language, consisting of binary code that the computer's processor can directly understand.

      • Assembly Language: Uses mnemonics (abbreviations) to represent machine language instructions, making it easier for humans to read and write. An assembler is used to translate assembly language into machine language.

    • High-Level Languages: More abstract and user-friendly languages that use English-like syntax, making them easier to learn and write. They require a compiler or interpreter to translate the code into machine language.

      • Procedural Languages: Focus on procedures (functions or subroutines) that perform specific tasks. Popular procedural languages include C, Pascal, COBOL, and Fortran.

      • Object-Oriented Programming (OOP) Languages: Organize programs around objects, which encapsulate data and methods that operate on that data. OOP languages promote code reusability, modularity, and maintainability. Popular OOP languages include Java, C++, C#, Python, and PHP.

    • Scripting Languages: Often used for automating tasks, web development, and system administration. Scripting languages are typically interpreted, meaning they are executed line by line without being compiled into machine code. Examples: Python, JavaScript, PHP, Ruby, Bash (shell scripting), PowerShell.

    • Query Languages: Designed for interacting with databases. SQL (Structured Query Language) is a widely used query language for relational databases, allowing users to retrieve, insert, update, and delete data.

  • Compilers vs. Interpreters:

    • Compiler: Translates the entire source code of a program into machine language before execution, creating an executable file that can be run independently.

    • Interpreter: Translates and executes one line of code at a time, without creating a separate executable file. Interpreted languages are often easier to debug and test but generally execute more slowly than compiled languages.

  • Object-Oriented Programming (OOP): A popular programming paradigm that emphasizes organizing programs around objects.

    • Objects: Combine data (attributes) and the methods (functions) that operate on that data.

    • Benefits of OOP:

      • Code Reusability: Objects can be reused in different programs, reducing development time and effort.

      • Modularity: Programs are structured into self-contained units (objects), making them easier to understand, maintain, and modify.

      • Maintainability: Changes to one object are less likely to affect other parts of the program.

  • Integrated Development Environment (IDE): A software application that provides comprehensive tools for software development, simplifying the process of writing, compiling, debugging, and testing code. IDEs often include:

    • Code Editors: For writing and editing code.

    • Compilers: For translating code into machine language.

    • Debuggers: For finding and fixing errors in code.

    • Project Management Tools: For organizing and managing code files and project resources.

  • 4GL (Fourth-Generation Language): A non-procedural language that allows users to interact with databases without writing complex code. 4GLs typically use a more user-friendly, English-like syntax, making them accessible to users with less programming experience. SQL (Structured Query Language) is a common example of a 4GL.

  • Application Generators: Tools that automate the process of generating source code or machine code based on user specifications. Application generators can speed up development, but the generated code may not be as optimized as hand-written code.

  • Macros: Sequences of commands or keystrokes that can be recorded and replayed to automate repetitive tasks within applications like spreadsheets or word processors.

  • Web Development Tools: The lecture highlights several languages and tools commonly used for developing webpages and web applications:

    • HTML (HyperText Markup Language): The standard markup language for creating web pages. HTML defines the structure and content of a webpage using tags and attributes.

    • XML (Extensible Markup Language): A markup language that allows developers to define their own tags and data structures. XML is commonly used for data exchange and web services.

    • WML (Wireless Markup Language): A markup language specifically designed for creating content for mobile devices, used in the early days of mobile internet. WML has largely been replaced by more versatile languages like HTML5.

    • Scripting Languages: Languages like JavaScript, PHP, Python, Ruby, and Perl are commonly used to create dynamic and interactive web applications. These languages are often executed on the server (server-side scripting) or in the user's web browser (client-side scripting).