Systems

A system is a large-scale piece of software, it often consists of numerous subsystems

Subsystems are independent components of a larger system, they are often made up of smaller modules.

Modules

A module is part of a (sub)system and can be developed independently from other modules.
Modules often have their own set of characteristics/operations to ensure minimal coupling.

  • They may also provide services to other modules
  • They may be upgraded/deployed individually
  • Modules are not considered to be systmes

Decomposition

  • Functional Decomposition
  • Data-oriented Decomposition
  • Process-Oriented Decomposition
  • Event-Oriented Decomposition
  • Object-Oriented Design

Modular Decomposition

Decomposing a system into modules facilitates the development process
As tasks can be identified, this allows planning to use those individual parts to perform estimations.

Work Assignment

A work-assignment view can be used to decompose a system’s design into work tasks that can be assigned to teams or individual
This is quite good for planning.

ECS Element (Module)Organizational Unit
SegmentSubsystem
Science Data Processing Segment (SDPS)ClientScience Team
InteroperabilityPrime Contractor Team 1
IngestPrime Contractor Team 2
Data ManagementData Team
Data ProcessingData Team
Data ServerData Team
PlanningOrbital Vehicle Team
Flight Operations Segment (FOS)Planning and SchedulingOrbital Vehicle Team
Data ManagementDatabase Team
User InterfaceUser Interface Team
.........

Tasks

Tasks can be defined within subsystems or modules.
It’s defined as a manageable part of the development process that can be done by one person in a reasonable time

Task Types

  • Faults - fixing the system
  • Wishes - Adding new functionality
  • Changes - improving existing functionality
  • Extenstion - Implementing more of the specification

Tasks in Agile

In Agile, the list of tasks are refered to as the backlog
Under Scrum, this is defined at the start of the project, team members select a number of items from teh backlog to implement for each sprint
The backlog may change during the project, as new requirements can be introduced.

Project Management

Project management involves a number of activities and tools to assist in the process.

General Management Tools

  • Plan definition
  • Resource Management
  • Timeline (Gantt Charts)
  • Task management tools (such as JIRA)
  • Fault mangement tools
    • sometimes integrated with task management software
    • can be used to provide insight into effort and decisions involved in the fix of a particular problem
    • Help prioritise development and QA
    • Help assess the overall quality of a Release Candidate application
  • Fault management tool example: Bugzilla

Source Code

  • Decomposition is not exclusive to planning and modelling activities

  • Several programming techniques use similar strategies

  • This is often common in procedural programming and related paradigms

  • Complex algorithms can often be divided into simpler pieces

  • Code that involves different concerns can be organised into separate modules