Software Design Specification (SDS) - talshi/Yerushalmit GitHub Wiki

SDS - Software Design Specification

1. Introduction Document Goals & Capabilities

This document serves us as a documentation and a guideline of implementation of our project. Diagrams attached to this document provide analytic design of each part of the whole system and connecting all the diagrams constitutes the architecture of the system. It supplies a snapshot of the intended system from multiple points of view. Finally, it is the “how will we do it” part after we wrote the “what will we do” part, which is the SRS.

Capability Risk Level if not implemented Capability Description
Add an image Critical Convert an image to a map
Add a new marker to the map Critical Marker will indicate an activity
Edit activity information (name, date, etc) Critical Know the activity’s information and the ability to classify the activities
Delete a marker Critical Manage old and irrelevant activities
Sort activities by category Medium Show the relevant activities only
Manage activities Medium Implement a management page with deletion/editing activities.

2. Deployment Diagrams

The deployment diagram describe the hardware devices and software that our program is based upon. Deployment Diagram

3. CRC Cards & Class Diagrams

Activity

|Responsibilities|Collaborators| | ------------- | ------------- | ----- | |Know details about the activity|Category| |Know its category|Category| |Edit activity|| |Does the activity is shown on map?|Category|

Mapify

|Responsibilities|Collaborators| | ------------- | ------------- | ----- | |Init the objects module|Map, activityList, categoryList, DBController| |Add new object|activityList, categoryList| |Remove an object |Activity, Category| |Get the activities depending on the category|Activity, Category|

DBController

|Responsibilities|Collaborators| | ------------- | ------------- | ----- | |Get data from the DB|DB| |Set data in DB|DB, activity properties, Category properties, Map properties|

4. Sequence Diagram

seq diagram

5. Persistence

Website:

The website based on wordpress, therefore it is based on wordpress database. All pages, content and any kind of data in website will be stored in our own wordpress database.

Plugin:

The information about the activities will be stored in database placed at organization’s server. Temporary information, which may be extracted from the database by sorting and classification, will be stored in data structure (it can be a list or array, but it is not necessary it supports any kind of sorting). This data structure will be used as temporary storage for data which will be shown on map.

Note:

plugin data might be stored in different way, e.g in file as JSON/XML data. The exact way to store plugin data will be decided in the implementation stage.

6. Non-functional Requirements

  • External interfaces
    • Mailchimp - install this plugin on the wordpress website.
    • Donation management system - the organization uses an external donation system. The requirement is to continue use it.
  • Wordpress website based requirement
    • All system’s components are based on wordpress, as required.
    • Wordpress CMS provides simple management interface which does not require any knowledge in software development or programming languages.
    • The plugin is also based on wordpress. It is installed by using wordpress’ plugin installation manager.
  • Mobile compatibility / Responsive website
    • Wordpress supports mobile compatibility as default.
    • As already said, the plugin based on wordpress, therefore it will be also responsive.

7. Risks Management

Risk Explanation Severity Probability Lowering the risk Competing
Changing customer requirements. Customer changes his requirements endangering the project's end date, or the project is carried out not comply with the customer. 1 3 Increase cooperation and coordination with customer expectations. In addition, the development team will work flexibly so that any changes to the customer will be easy to carry out. Changing the program according to the new requirements, rewriting of some parts.
Team turnover Central personality can leave the project which may be a significant risk project’s ending time. 2 2 Share information with crew. Redistribution of roles in the group.
Wrong estimation of system's size. The system is more complex and bigger than we thought initially. 1 3 Requirements document, detailed design. Reducing customer requirements.
Development tools do not meet expectations. System that should help develop not fulfill all our expectations of them. For examples: Wordpress. 1 3 Depth overview about the development tools. Setting alternative development tools.
Standing the test of time. It will cause a delay in the project completion date. 1 2 Prioritizing the customer requirements. Appoint one team member whose job was to analyze the progress. Reducing customer requirements.
Team is unfamiliar with development tools. Lack of familiarity with Wordpress and with PHP programming language, may cause a delay at the end of the project. 1 1 Selecting a variety team. Division to a few teams, where each team member knows to perform the work and is aware to tools he is going to use them. Cooperative learning.
Technology revival. During development appears In the labor market a new Technology that significantly affecting the product. 1 2 Using Wordpress - this system is very strong, many people from around the world are constantly perfecting this system would always be the best and most advanced. Learn as fast as you can the new technology platform.

8. User Manual

9. Initial Test Plan

  • Wordpress Test Plan
    • Wordpress is an external system, which has its own updates and upgrades.
    • Therefore, this unit will not be tested in depth.
    • However, trivial checks will be tested. e.g create new page/edit existing page/delete page or add any kind of content.
  • Plugin Test Plan
    • Installation test.
    • Management setting test.
      • Add a picture test (and a non-image file).
      • Add markers to map with all information required. Check they saved to database.
      • Delete markers from map.
      • Edit markers.
    • Using plugin test.
      • Open markers and check the information is valid. It should open a bubble with all the information (Google Maps style).