This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
project-wiki:software_projects:home [2023/08/10 13:35] mlhicks created |
project-wiki:software_projects:home [2024/06/25 16:10] (current) mlhicks [Software Development Mapped to Capstone Stages] |
||
---|---|---|---|
Line 7: | Line 7: | ||
You should use software to manage software. Appropriate use of [[https:// | You should use software to manage software. Appropriate use of [[https:// | ||
+ | |||
+ | ===== Artifacts ===== | ||
+ | |||
+ | |||
+ | Throughout the software development process, you will need to show that your product does what it is supposed to do, does not do what it is not supposed to do, and can be updated, refined, and deployed by future engineers. In this way, the principles of desirability and transferability apply to these types of projects. // | ||
+ | |||
+ | ====Desirability ==== | ||
+ | |||
+ | Software Requirements Specification ([[https:// | ||
+ | * A [[https:// | ||
+ | * This document will go through many versions as you progress through your project. | ||
+ | * An [[http:// | ||
+ | * The requirements should be unambiguous in the sense that a third-party could verify if your design meets/does not meet them. | ||
+ | * An [[https:// | ||
+ | |||
+ | Market Response (from market about the desirability of your product) | ||
+ | * Remember that the design team is not the market, so outside feedback is absolutely necessary to judge the success of the design. | ||
+ | * Release Notes/Bug Testing Report (showing appropriate code coverage and successful test passing). These are critical to evaluate the progress your team is making and allows future developers to know what needs to be addressed. | ||
+ | |||
+ | ==== Transferability ==== | ||
+ | |||
+ | User Manual – The user manual provides complete instructions for the use of your software product. It should explain to a novice user (who is familiar with software in general) how to set up and use the software. It should be in plain English, and a good test is to have someone unfamiliar with your project step through the User Manual. | ||
+ | |||
+ | Overall Code Documentation - [[https:// | ||
+ | |||
+ | Software bill of materials - A Software Bill of Materials is a list of all software components, the supplier, version numbers, open source licenses, and dependencies. The ([[https:// | ||
+ | |||
+ | Repository – Ensure that your code repository is kept clean and up to date. Access to your repository should be given to your sponsor at the conclusion of the project. At the end of the project you will need to download and copy your repository to the BYU BOX site, too. | ||
+ | |||
+ | Software architecture/ | ||
+ | |||
+ | Appropriately commented code – Use comments in your code to explain the intention of specific blocks of code that may not be obvious to the uninitiated. Use descriptive variable names rather than generic variable names. | ||
+ | |||
+ | ===== Software Development Mapped to Capstone Stages ===== | ||
+ | |||
+ | For projects that are entirely or heavily software, some of the explanations for the Capstone development stages may not translate cleanly into the language of software designers. A mapping of the stages of project development for a software project in Capstone may look more like the following, with multiple iterations of the software happening between stages (1.0 constitutes a major or public release): | ||
+ | |||
+ | **Opportunity Development -> Software Requirements Specification V 0.8; Software V 0.1** | ||
+ | |||
+ | In this stage, the team works with the sponsor and market (which is likely to be your sponsor) to determine the high-level requirements (“Key Success Measures” in Capstone-speak). Risks are assessed and thought is given to testability. Software “prototypes” are often written to determine feasibility. These requirements are clearly defined and documented in the SRS. | ||
+ | |||
+ | Sections 1 (all), 2.1, 2.2, 2.4, 2.5, 3 (all), 4 (all), 5(all), and 6 are all addressed in the SRS. Some explanations will be very rudimentary at this point. Requirements will be more specific. | ||
+ | |||
+ | **Concept Development -> Software Requirements Specification V 1.0; Software backend V 0.3 with GUI V 0.1** | ||
+ | |||
+ | The architecture is presented visually, with clear diagrams specifying modules and interfaces. Evidence from software prototypes is presented to demonstrate feasibility of the concept. Videos of working code may be included in the review. | ||
+ | |||
+ | A test plan is also included to demonstrate testability of the software components as well as the complete software package, when completed. | ||
+ | |||
+ | A Software Bill of Materials should be included as part of your Concept Review. | ||
+ | |||
+ | **Architecture Development -> Software Requirements Specification V 1.1; Software backend V 0.5 with GUI V 0.5** | ||
+ | |||
+ | The software architecture is fully specified. Modularity, budget constraints (both money and time), testability, | ||
+ | |||
+ | Programming languages are specified based on what is best for the project and what meets the needs of the sponsor to ensure transferability. | ||
+ | |||
+ | Architecture diagrams (block diagrams, UML diagrams, flowcharts, etc) are developed that illustrate your design, and these include clear interfaces between modules. Details of the design are all clearly specified, including data flows with external modules. If your project includes a GUI, wireframe diagrams (software packages like Figma, InVision, Adobe XD, can make this easy) should be used to provide clear mockups of the GUI design. | ||
+ | |||
+ | A high-level test plan is included demonstrating thought has been given to testability of the software (including automated testing as appropriate). | ||
+ | |||
+ | A formal schedule is presented that includes not only Capstone “milestones” (due dates), but also key development milestones specific to the project that must be met to ensure the development cycle stays on track. | ||
+ | |||
+ | Additions and modifications are made to the SRS as needed. All sections of the SRS have content. | ||
+ | |||
+ | A Software Bill of Materials includes all software, including version numbers, used and provides details to recreate the development environment. | ||
+ | |||
+ | **Subsystem Engineering -> Software Requirements Specification V 1.5; Software backend V 0.9 with GUI V 0.9** | ||
+ | |||
+ | Code is developed according to the design specified in the architecture review. Code is well documented, including in-line comments that explain what is being done in functional blocks of code. Variable names should be helpful in explaining what is happening in the code block. | ||
+ | |||
+ | A Software Bill of Materials lists all software packages used, including version numbers. Documentation for recreating the development environment is maintained. | ||
+ | |||
+ | Project management is mandatory at this stage. Deliverable dates and team member responsibilities are clear and easily accessible by all team members. Dependencies are recognized and tracked. (See [[project-wiki: | ||
+ | |||
+ | Test plans are written and executed, and results are documented. This may take the form of a Jira board, Github bug reporting, or whatever works best for your team. | ||
+ | |||
+ | SRS is updated appropriately. | ||
+ | |||
+ | **System Refinement -> Software Requirements Specification V 2.0; Software backend V 1.2 with GUI V 1.2** | ||
+ | |||
+ | This stage represents the final aggregation of all components and modules into a single system. The complete software package must be tested again as a system. | ||
+ | |||
+ | Makefiles are used and documented to automate the development environment. | ||
+ | |||
+ | SRS is complete and accurate. | ||
+ | |||
+ | Software Bill of Materials is complete and accurate. | ||
+ | |||
+ | Test plans are specific and address areas of potential failure. In the testing, attempts are made to break the code. For example, if given corrupt input, does your software return an appropriate error message, or does it fail? Automated tests are used where it makes sense to automate. | ||
+ | |||
+ | All details to recreate development environment and run software are included in the final report. Output is clear. Obvious thought has been given to user experience. | ||
+ | |||
+ | ===== Software Testing ===== | ||
+ | |||
+ | Software testing is a significant element of software product design and is typically categorized into functional and non-functional testing. The major stages of functional testing include: unit testing, integration testing, system/ | ||
+ | - Unit testing – testing the individual components, functions, or modules. Automating these tests is often helpful and can save time overall. This is the type of testing that should be done during OD, CD, and SSE. | ||
+ | - Integration testing – verification that the modules, when integrated, still function correctly. This may need to be done during CD and must be done during SSE. | ||
+ | - System/ | ||
+ | - Acceptance testing – your sponsor should verify that your software design meets the requirements, | ||
+ | - Non-functional testing – Unless required for your project, this is likely outside the scope of Capstone. | ||