Perry
Perry
Readership
This document is intended for developers, project managers, and other stakeholders involved in
the development or evaluation of the Atom text and source code editor. It provides a detailed
overview of the requirements for the Atom application, including both functional and non-
functional requirements.
Version History
Version 1.0 (March 2024): Initial release of the requirements document for the Atom
application.
Version 1.1 (April 2024): Updated the document to clarify certain requirements and add
additional explanatory notes.
Version 1.2 (May 2024): Further refined the requirements based on feedback from stakeholders
and additional analysis of the application's needs.
The creation of a new version of this document was deemed necessary to incorporate feedback
from stakeholders and to ensure that the requirements accurately reflect the needs of the Atom
application. Additionally, new features and enhancements have been added to the application
since the previous version, necessitating updates to the requirements.
Summary of Changes
Version 1.1: Clarified requirements related to user interface customization and syntax
highlighting.
Version 1.2: Refined requirements for code autocompletion and file management based on
stakeholder feedback.
Introduction
The Atom text and source code editor is a crucial tool for developers, providing a platform for
writing, editing, and managing code. With the ever-increasing complexity of software
development, there is a growing need for a flexible and customizable editor that can adapt to the
diverse needs of developers across different programming languages and project requirements.
Atom is designed to meet this need by offering a range of features and functionalities that cater
to the demands of modern software development. From its customizable user interface to its
intelligent code autocompletion and Git integration, Atom provides developers with the tools
they need to write code efficiently and effectively.
Atom also plays a vital role in the larger ecosystem of software development tools and systems.
It integrates seamlessly with Git for version control, allowing developers to manage their code
repositories directly from the editor. Additionally, Atom's open-source nature and extensive
library of packages make it a versatile tool that can be customized and extended to suit the
specific needs of individual developers and development teams.
In the context of the organization commissioning the software, Atom fits into the overall
business and strategic objectives by providing a reliable and efficient tool for software
development. By enhancing the productivity and effectiveness of developers, Atom contributes
to the organization's goal of delivering high-quality software products in a timely manner.
Overall, Atom is a valuable asset for developers and organizations alike, providing a robust and
flexible platform for writing and managing code that aligns with the strategic objectives of
modern software development.
Glossary
Atom: The Atom text and source code editor, developed by GitHub, is a customizable and
extensible editor for writing and editing code.
UI: User Interface, the visual elements of the Atom editor that users interact with, including
themes, layouts, and settings.
Syntax Highlighting: The process of coloring different elements of code to improve readability
and distinguish between different parts of the code.
Code Autocompletion: A feature that suggests code completions as the user types, based on
context and previously used code.
Git Integration: The integration of Git, a version control system, into the Atom editor, allowing
users to manage code repositories directly within the editor.
File Management: The functionality within Atom that allows users to organize and manage files
and projects.
Performance: The speed and responsiveness of the Atom editor, even when working with large
files and projects.
Security: Measures implemented in Atom to protect user data and prevent unauthorized access.
Accessibility: Features in Atom that ensure usability for all users, including those with
disabilities.
Package: An add-on for Atom that extends its functionality, created by the community and
available through the built-in package manager.
Customization: The ability to tailor the Atom editor to suit individual preferences and
workflows, including themes, key bindings, and UI elements.
Open-Source: Software that is freely available and can be modified and distributed by anyone,
with the source code openly accessible.
Repository: A storage location where software packages and code are stored and managed, often
used in the context of version control systems like Git.
User Requirements
Services Provided for the User
1. Text Editing: Atom provides a robust text editing environment with features like syntax
highlighting, auto-indentation, and bracket matching to enhance the coding experience.
2. Customization: Users can customize Atom's interface, themes, and key bindings to suit their
preferences and workflow.
3. Package Management: Atom comes with a built-in package manager that allows users to easily
discover, install, and manage packages to extend the editor's functionality.
4. Git Integration: Atom seamlessly integrates with Git, providing users with version control
features within the editor, such as viewing changes, staging files, and committing code.
5. File Management: Atom offers comprehensive file management capabilities, including the
ability to open, save, and organize files and projects.
6. Cross-Platform Support: Atom is available on Windows, macOS, and Linux, ensuring users
can access the editor on their preferred operating system.
1. Performance: Atom shall provide fast and responsive performance, even when working with
large files and projects.
2. Security: Atom shall implement security measures to protect user data and prevent unauthorized
access.
3. Accessibility: Atom shall comply with accessibility standards to ensure usability for all users,
including those with disabilities.
4. Compatibility: Atom shall be compatible with a wide range of programming languages and
development tools to accommodate diverse user needs.
System Architecture
Overview
The system architecture of Atom is designed to be modular and flexible, allowing for easy
integration of new features and enhancements. At its core, Atom consists of several key
components that work together to provide a powerful and customizable text and source code
editing experience.
Key Components
1. Core Editor: The core editor component handles the basic text editing functionality, including
syntax highlighting, auto-indentation, and bracket matching. This component is responsible for
rendering the text editor interface and managing user interactions.
2. Package Manager: Atom's built-in package manager allows users to discover, install, and
manage packages that extend the editor's functionality. This component handles package
installation, updates, and dependency management.
3. Syntax Highlighting Engine: A reusable component responsible for parsing and highlighting
syntax in code files. This component is used by the core editor to provide syntax highlighting for
a wide range of programming languages.
4. Git Integration Module: Atom's Git integration module allows users to manage Git repositories
directly from the editor. This module provides features such as viewing changes, staging files,
and committing code.
5. UI Customization Engine: A reusable component that allows users to customize the editor's
interface, including themes, layouts, and key bindings. This component is responsible for
applying user-selected customization options to the editor.
Syntax Highlighting Engine: This component is reused across different parts of the editor to
provide consistent syntax highlighting functionality.
UI Customization Engine: The UI customization engine is reused throughout the editor to apply
user-selected themes and settings to the interface.
Distribution of Functions
The functions of the Atom system are distributed across these key components, with each
component responsible for a specific aspect of the editor's functionality. This modular
architecture allows for easy maintenance and extensibility, enabling the Atom team to
continuously improve the editor and add new features over time.
1. Text Editing
Shall provide syntax highlighting for a wide range of programming languages.
Shall support basic text editing features such as copy, paste, and undo/redo.
Should provide intelligent code autocompletion based on context.
2. User Interface Customization
Shall allow users to customize the editor's interface by changing themes and layouts.
Should provide options for customizing key bindings and other UI elements.
3. Package Management
Shall include a built-in package manager for discovering, installing, and managing
packages.
Should allow users to easily enable and disable packages to manage functionality.
4. Git Integration
Shall integrate with Git for version control, allowing users to manage repositories from
within the editor.
Should provide features for viewing Git status, staging files, and committing code.
5. File Management
Shall allow users to open, save, and organize files and projects within the editor.
Should provide quick access to recently opened files and projects.
6. Cross-Platform Support
Shall be available on Windows, macOS, and Linux operating systems.
Should provide a consistent user experience across different platforms.
Nonfunctional Requirements
1. Performance
Shall provide smooth and responsive performance, even with large files and projects.
Should minimize resource usage to improve overall performance.
2. Security
Shall implement security measures to protect user data and prevent unauthorized access.
Should provide options for encrypting sensitive information.
3. Accessibility
Shall comply with accessibility standards to ensure usability for all users, including those
with disabilities.
Should provide features for enhancing accessibility, such as screen reader support.
4. Compatibility
Shall be compatible with a wide range of programming languages and development tools.
Should ensure compatibility with common file formats and protocols used in software
development.
Git: Atom shall provide an interface to integrate with Git repositories, allowing users to manage
version control directly from the editor.
Package Repository: Atom shall interface with a central package repository to allow users to
discover and install packages.
System Models
Object Model
The object model for Atom includes the following key components:
1. Editor: Represents the core text editing functionality, including syntax highlighting, auto-
indentation, and bracket matching.
2. Package: Represents a reusable component that extends the editor's functionality, such as a
syntax highlighting package or a Git integration package.
3. Theme: Represents a customizable interface theme that can be applied to the editor to change its
appearance.
4. Git Repository: Represents a repository managed by Git, which Atom can interface with for
version control operations.
Data-Flow Model
The data-flow model for Atom shows how data and control flow through the system:
1. User Input: User input, such as keyboard commands or mouse clicks, is captured by the editor
component and processed.
2. Syntax Highlighting: The syntax highlighting engine processes the text in the editor to identify
and highlight syntax elements based on the programming language.
3. Package Management: The package manager component handles the installation, updates, and
management of packages, including downloading and installing new packages as requested by
the user.
4. Git Integration: The Git integration module interfaces with Git repositories to provide version
control features, such as viewing changes and committing code.
Semantic Data Model
The semantic data model for Atom defines the relationships between different types of data in
the system:
1. File: Represents a file on the user's filesystem, which can be opened, edited, and saved within the
editor.
2. Project: Represents a collection of files and folders that make up a software project, which can
be managed and organized within the editor.
3. Package Configuration: Represents the configuration settings for a package, such as its name,
version, and dependencies.
4. User Preferences: Represents the user's preferences for customizing the editor's interface,
including themes, key bindings, and layout settings.
System Evolution
Fundamental Assumptions
1. Open-Source Development: Atom is based on the fundamental assumption that it will continue
to be developed as an open-source project, with contributions from the community driving its
evolution.
2. Customizability: Atom is designed with the assumption that users value the ability to customize
the editor to suit their preferences and workflow, and this feature will continue to be a key focus
of its development.
3. Compatibility: Atom assumes that it will need to remain compatible with a wide range of
programming languages, development tools, and operating systems to meet the needs of its
diverse user base.
4. Performance: Atom assumes that performance will continue to be a key consideration, with
efforts made to ensure smooth and responsive performance even as the size and complexity of
projects increase.
Anticipated Changes
Design Considerations
Modularity: Atom is designed with a modular architecture to facilitate future changes and
enhancements without requiring major redesigns of the core system.
Extensibility: Atom's extensibility allows for the addition of new features and functionality
through packages, making it easier to adapt to changing user needs and technological
advancements.
Compatibility: Atom is designed to be compatible with a wide range of systems and
technologies, ensuring that it can evolve alongside changes in hardware and software
environments.
Appendices
A. Hardware Requirements
Minimal Configuration
Processor: Intel Core i3 or equivalent
RAM: 4GB
Storage: 500MB available space
Display: 1280x800 resolution
Optimal Configuration
Processor: Intel Core i5 or equivalent
RAM: 8GB or higher
Storage: 1GB available space
Display: 1920x1080 resolution or higher
B. Database Requirements
Logical Organization
The database shall consist of the following tables:
Users: Stores information about registered users, including username, email, and
password.
Projects: Stores information about projects created by users, including project name and
description.
Files: Stores information about files associated with projects, including file name, type,
and content.
Packages: Stores information about packages installed in Atom, including package name
and version.
Relationships Between Data
Users can have multiple projects.
Projects can have multiple files.
Files can be associated with multiple projects.
Users can install multiple packages in Atom.
Index
1. Preface
Expected readership
Version history
2. Introduction
Need for the system
System functions
Integration with other systems
3. Glossary
Definitions of technical terms
4. User Requirements
Services provided for the user
Nonfunctional system requirements
Product and process standards
5. System Architecture
Overview
Key components
Reused architectural components
Distribution of functions
6. System Requirements Specification
Functional requirements
Nonfunctional requirements
Interfaces to other systems
7. System Models
Object model
Data-flow model
Semantic data model
8. System Evolution
Fundamental assumptions
Anticipated changes
Design considerations
9. Appendices
A. Hardware requirements
B. Database requirements
10. Index