Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
companion_planting:development_log [2017/06/06 22:04] – [Behavior Requirements] ecohack | powerplant:development_log [2017/12/20 00:57] (current) – ↷ Page moved from companion_planting:powerplant:development_log to powerplant:development_log aimeejulia | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== Development Log ====== |
- | ===== Research ===== | + | |
- | [[https:// | + | |
- | [[https:// | + | ===== Model Decisions ===== |
- | [[http:// | + | |
- | + | | |
- | [[http:// | + | * FarmOS |
- | | + | |
- | * Cool-season crops should not be mixed with warm-season crops for synchronous growth in mixed plantings. | + | |
- | + | ||
- | [[https:// | + | |
- | + | ||
- | [[https://github.com/ | + | |
- | + | ||
- | [[https:// | + | |
- | + | ||
- | =====Software Specifications===== | + | |
- | Software Requirement Specification | + | |
- | for Companion Planner | + | |
- | Version 0.1 | + | |
- | + | ||
- | ====Introduction==== | + | |
- | //Document Purpose | + | |
- | TO DO: Identify the product whose software requirements are specified, including the revision or release number. | + | |
- | Describe the scope of the product.// | + | |
- | + | ||
- | ===Users=== | + | |
- | + | ||
- | Gardeners | + | |
- | + | ||
- | ===Goal=== | + | |
- | + | ||
- | Help with garden planning using companion plants to deter pests, improve the harvest and add variety ie more diversity. | + | |
- | + | ||
- | Taking into account: | + | |
- | * Soil type | + | |
- | * Climate | + | |
- | * Growth time | + | |
- | * Sun and water requirements | + | |
- | + | ||
- | Improve harvest and diversity by adding valuable information during the planning stage. | + | |
- | + | ||
- | ====Product Scope==== | + | |
- | //TO DO: Provide a short description of the software being specified and its purpose, including relevant benefits, objectives, and goals.// | + | |
- | + | ||
- | ===Software description=== | + | |
- | + | ||
- | Convert data on crops into something usable by anyone interested in gardening. | + | |
- | + | ||
- | Open-source | + | |
- | + | ||
- | ===Objectives=== | + | |
- | + | ||
- | Improve planning process for anyone who wants to use permaculture principles in their gardening. | + | |
- | + | ||
- | Save time during planning process | + | |
- | + | ||
- | Education of users | + | |
- | + | ||
- | Improve and collect data | + | |
- | + | ||
- | ====Overall Description==== | + | |
- | + | ||
- | ===Product Perspective=== | + | |
- | + | ||
- | ==Users== | + | |
- | + | ||
- | Anyone who wants to plan a garden. | + | |
- | + | ||
- | People who want to use open source software. | + | |
- | + | ||
- | ==Outcome== | + | |
- | + | ||
- | A year of use of this software will result in: | + | |
- | + | ||
- | Users adding to data from all over the world (different climates, soil types) | + | |
- | + | ||
- | // maybe need more added here // | + | |
- | + | ||
- | //TO DO: Describe the context and origin of the product being specified. | + | |
- | Include a simple diagram that shows the major components of the overall system, subsystem interconnections, | + | |
- | + | ||
- | ===Context=== | + | |
- | + | ||
- | The information that we provide is all out there, we want to provide a central source for all of it. | + | |
- | + | ||
- | ===Origin=== | + | |
- | + | ||
- | Permaculture guidelines, gardening best practices. Permaculture ideals: Take of earth, regenerate soil. | + | |
- | + | ||
- | Permaculture ideals: | + | |
- | * Care for earth | + | |
- | * Care for people | + | |
- | * Fair share | + | |
- | + | ||
- | ====Product Functionality==== | + | |
- | //TO DO: | + | |
- | 1. Summarize the major functions that the product must perform or must let the user perform.// | + | |
- | * Need a list of available plants | + | |
- | * Need to be able to see compatible/ | + | |
- | * Need to be able to filter by multiple plants | + | |
- | * Need to filter by attribute(s) | + | |
- | * Include: Soil conditions, grow time, climate, sun direction relative to each bed, labor required for each plant, sun+water required, best season/time to plant | + | |
- | * Find optimal planting schedule for a set of plants | + | |
- | * Schedule must also include greenhouse, maybe types of beds | + | |
- | * Find optimal planting combinations for any number of plants per bed | + | |
- | * Based on distance between plants | + | |
- | * Have some visualization of garden beds w/plants | + | |
- | * Draw in current crops | + | |
- | * Fill in blank spaces in beds | + | |
- | * Filter crops added by algorithm based on preference | + | |
- | * Add/remove crops for any reason | + | |
- | * Deny/change crops selected by algorithm for any reason | + | |
- | * Save user profiles with all information | + | |
- | * Save past combinations | + | |
- | * Keep track of nitrogen fixers/ | + | |
- | * Take user feedback | + | |
- | * Sharing/ | + | |
- | + | ||
- | + | ||
- | + | ||
- | //2. Organize the functions to make them understandable to any reader. // | + | |
- | + | ||
- | Aimee says: | + | |
- | Urgent: | + | |
- | Good combinations for current month | + | |
- | + | ||
- | Less Urgent: | + | |
- | Planting location | + | |
- | + | ||
- | Not urgent: | + | |
- | Visualizing beds | + | |
- | + | ||
- | + | ||
- | // 3. Provide a Data Flow Diagram of the system to show how these functions relate to each other.// | + | |
- | + | ||
- | // will create later // | + | |
- | + | ||
- | ====Users and Characteristics==== | + | |
- | //TO DO: | + | |
- | 1. Identify the various users that you anticipate will use this product.// | + | |
- | + | ||
- | * Hobbyist - small home garden. 20 m< | + | |
- | * Countryside garden - 250 - 1000 m< | + | |
- | * Organic farmer - 1000 m< | + | |
- | + | ||
- | // 2. Describe the pertinent characteristics of each user. // | + | |
- | * Hobbyist - Not too much labor is better, | + | |
- | * Countryside garden - Wants to be self-sufficient. | + | |
- | * Organic farmer - Prioritizing lower labor. Intermixed plants means more labor. Technologically literate, want to use software to improve their yields | + | |
- | + | ||
- | ====Operating Environment==== | + | |
- | //TO DO: | + | |
- | Describe the environment in which the software will operate, including the hardware platform, operating system and versions, and any other software components or applications with which it must peacefully coexist. In this part, make sure to include a simple diagram that shows the major components of the overall system, subsystem interconnections, | + | |
- | + | ||
- | Lower range laptop | + | |
- | + | ||
- | Windows 10, Chrome, use in office or garden | + | |
- | + | ||
- | Android x.x.x, Chrome, use in office or garden, but mainly garden | + | |
- | + | ||
- | ====Design and Implementation Constraints==== | + | |
- | //TO DO: | + | |
- | Describe any items or issues | + | |
- | These might include:// | + | |
- | * //hardware limitations (timing requirements, | + | |
- | * // | + | |
- | * //specific technologies// | + | |
- | * //tools// | + | |
- | * //databases to be used// | + | |
- | * //language requirements// | + | |
- | * //User Documentation// | + | |
- | + | ||
- | * Need to have user documentation. Usability will be severly limited without. Need to have in depth descriptions of how to input data, what | + | |
- | screen should look like, how to interpret output. Need to document things before creating them. | + | |
- | * Need to use vanilla Javascript for front end. | + | |
- | * Plain HTML, LESS for css | + | |
- | * Need eventually be compatible with FarmOS. | + | |
- | * Have to use FarmOS database. | + | |
- | * Text + photo editors. | + | |
- | * Back end: PHP to deal with database, Javascript to process business logic | + | |
- | + | ||
- | + | ||
- | //TO DO: | + | |
- | Describe what kind of manuals and what kind of help is needed for the software you will be developing. | + | |
- | List the user documentation components (such as user manuals, on-line help, and tutorials) that will be delivered along with the software.// | + | |
- | + | ||
- | * User manual | + | |
- | * FAQ | + | |
- | * First time user prompts | + | |
- | * Community talking points | + | |
- | * Chat rooms (FarmOS) | + | |
- | * Tutorials for most exemplary tasks | + | |
- | + | ||
- | ====Specific Requirements==== | + | |
- | ===External Interface Requirements, | + | |
- | //TO DO: | + | |
- | Describe user interfaces, different screen images, any GUI standards, standard buttons and functions (e.g., Cancel) that will be available to the user. | + | |
- | Define error message display standards.// | + | |
- | + | ||
- | // come back to this // | + | |
- | + | ||
- | ===Hardware Interfaces=== | + | |
- | + | ||
- | //TO DO: | + | |
- | Describe the logical and physical characteristics of each interface between the software product and the hardware components of the system. This may include: | + | |
- | * the supported device types, | + | |
- | * the nature of the data and control interactions between the software and the hardware.// | + | |
- | + | ||
- | * 800x400 display | + | |
- | * 100kB/s | + | |
- | * 200mb memory on mobile | + | |
- | * 512mb memory on non-mobile | + | |
- | * 5mb local storage | + | |
- | + | ||
- | + | ||
- | ===Software Interfaces=== | + | |
- | //TO DO: | + | |
- | + | ||
- | 1. Describe: | + | |
- | + | ||
- | the connections between the product and other specific software components | + | |
- | databases, | + | |
- | operating systems (Windows? Linux? Etc.), | + | |
- | tools, | + | |
- | libraries and integrated commercial components.// | + | |
- | + | ||
- | * FarmOS | + | |
- | + | ||
- | //2. Identify data items or messages coming into the system and going out and describe the purpose of each. // | + | |
- | + | ||
- | // FarmOS specs go here // | + | |
- | + | ||
- | //3. Describe the services needed. // | + | |
- | + | ||
- | // also later // | + | |
- | + | ||
- | //4. Identify data that will be shared across software components.// | + | |
- | + | ||
- | // need to look at what FarmOS stores and what we store | + | |
- | | + | |
- | + | ||
- | ===Communications Interfaces=== | + | |
- | //TO DO: | + | |
- | + | ||
- | 1. Describethe requirements associated with any communications functions required by this product, including e-mail, web browser, network server communications protocols, electronic forms. // | + | |
- | + | ||
- | // define standards | + | |
- | + | ||
- | //2. Define any pertinent message formatting.// | + | |
- | + | ||
- | // more details w FarmOS// | + | |
- | + | ||
- | //3. Identify any communication standards that will be used, such as FTP or HTTP. // | + | |
- | + | ||
- | * HTTP (REST, JSON) | + | |
- | + | ||
- | //4. Specify any communication security or encryption issues, data transfer rates, and synchronization mechanisms.// | + | |
- | + | ||
- | * Profile could have sensitive info | + | |
- | * Even in case of illegal crops being grown, info cannot be accessible by anyone | + | |
- | * Yield is sensitive | + | |
- | * Complete transparency within network of gardeners, zero transparency outside | + | |
- | + | ||
- | ====Behavior Requirements==== | + | |
- | ===Use Case View=== | + | |
- | //TO DO: Provide a use case diagram which will encapsulate the entire system and all possible actors.// | + | |
- | + | ||
- | // will do later | + | |
- | + | ||
- | + | ||
- | ===Next Steps=== | + | |
- | + | ||
- | - Complete the specifications | + | |
- | - Completing function list | + | |
- | - Decide zthe software stack | + | |
- | - ... | + | |
- | - MoSCoW (Must have, should have, could have) | + | |
- | - Research interfaces with FarmOS | + | |
- | + | ||
- | + | ||
- | ===Resources=== | + | |
- | + | ||
- | Github: ... (to be filled) | + |