Objectives:
Due Date/Time:
This project design is due at the end of class on Lesson 34.
M3-M4: Thursday, 24 April
T3-T4: Friday, 25 April
A late penalty accrues at a rate of 25% for each 24-hour period (including weekends) past the on-time turn-in date and time. The late penalty is a cap on the maximum grade that may be awarded for the late work. Thus zero points will be awarded for a submission 72 hours or more late.
Help Policy:
AUTHORIZED RESOURCES:
Any, except another cadet’s program.
NOTES:
Never copy another person’s work and submit it as your own.
Do not jointly create a program.
You must document all help received from sources other than your instructor.
DFCS will recommend a grade of F for any cadet who egregiously violates this Help Policy or contributes to a violation by others.
You must document all help received from any source other than your instructor.
The documentation statement must explicitly describe WHAT assistance was provided, WHERE on the homework the assistance was provided, and WHO provided the assistance.
If no help was received on this assignment, the documentation statement must state “NONE.”
If you checked answers with anyone, you must document with whom on which problems. You must document whether or not you made any changes, and if you did make changes you must document the problems you changed and the reasons why.
Vague documentation statements must be corrected before the assignment will be graded, and will result in a 5% deduction on the assignment.
Team Work vs. Individual Work
You may choose to work alone on this project, or you may choose to work in teams of two. The choice is your personal preference.
If you work in a team:
Your team must be formed by the end of Lesson 34.
You are expected to perform approximately 50% of the project's work.
You, and your partner, will earn the same grade on the project, barring special circumstances.
Special Projects (HIGHLY RECOMMENDED)
You may choose to design and implement one of the projects described below, or you may propose a different project of similar scope and difficulty. If you would like to propose a different project, you must:
Discuss your idea with your instructor.
If your instructor agrees that the idea is worth pursuing, create a written proposal that describes your project, its scope, and your customer. This should be emailed to your instructor at the earliest possible date.
If your instructor agrees to your written proposal, you may design and implement your alternate project.
Project Idea 1
Introduction: MATLAB is designed to efficiently process large datasets that are stored in arrays. Therefore MATLAB is very good at manipulating color digital photographs because such photographs are simply 3D arrays of intensity values. A digital photograph has several major advantages over a film photograph: 1) digital photographs can be reproduced with no loss of quality, and 2) digital photographs can be manipulated by computers using appropriately designed algorithms.
Problem Statement: Design and implement a GUI MATLAB program that allows a user to read into a computer's main memory one or more digital photographs, manipulate the digital photographs in interesting ways, and store the digital photographs back to a computer file.
(If you do this project, you will be provided with additional help on MATLAB instructions that manipulate digital photographs when we start the implementation phase on Lesson 36.)
Project Idea 2
Introduction: MATLAB is designed to efficiently process large vector and matrix datasets. One example of large vector datasets is digital music. A digital music file is nothing more than a series of numbers that represent the magnitude of a sound wave over time. (Music data is often compressed to reduce its file size and/or encrypted to thwart piracy, but we will ignore these issues for this project.) A digital representation of music has two major advantages over analog representations: 1) digital music files can be reproduced with no loss of sound quality, and 2) digital music can be manipulated by computers using appropriately designed algorithms. Your project is to design and implement a GUI digital sound "editor".
Problem Statement: Design and implement a GUI MATLAB program that allows a user to read into a computer's main memory one or more digital sound files, manipulate the sound data in interesting ways, and store the digital sound data back to a computer file.
(If you do this project, you will be provided with additional help on MATLAB instructions that manipulate digital music files when we start the implementation phase on Lesson 36.)
Project Overview
You are the software developer for this project.
If you do one of the projects ideas given above, your instructor is your customer. If you do an alternate project, your customer may be someone other than your instructor, but you must identify your customer as part of your project proposal. Your customer will determine the direction of your project and make critical decisions about the functionality that is included in your project.
The intent of this project is to simulate real-world software development. Real-world software development projects often have one or more of the following characteristics:
The customer has a vague notion of what they desire the software product to do.
The customer does not know exactly what they want until they see it. (And when they see a product for the first time they might say - "That's not what I wanted!")
The initial requirements for the project are not well-defined and are open-ended.
The customer wants more functionality than you have time to implement before the customer's mandated implementation deadline.
This project will be done in two distinct phases: design and implementation. The remainder of this document deals only with the design phase. You will be given additional instructions for the project when the implementation phase begins on Lesson 36.
What is a software design?
The development of complex software systems is a very difficult, time consuming, and expensive task. In relationship to expense, it has been shown that software maintenance accounts for up to 2/3rds of the cost of a software system over its lifetime. Software maintenance occurs after a software system is "finished" and put into service. Software maintenance involves:
fixing software bugs,
modifying the functionality of the software due to changes in a customer's needs, and
adding new functionality to enhance the usefulness of a software system.
Because software maintenance is so critical to the success of a software system, it is vital that software be designed with future modifications in mind. The purpose of software design is to create a software system that not only meets the current needs of a customer, but also facilitates future bug fixes and software modifications. The goal of software design is to decrease the total cost of a software system over its entire lifecycle.
There are abundant examples of poorly designed systems in the real world. For example, some automobiles are not designed with maintenance in mind! I have tried to change the spark-plugs on some automobile engines and it was VERY difficult to access the spark-plugs, let alone remove them? In such cases the cost of engine maintenance is greatly increased. How about another example? Have you every tried to replace a light bulb, but you cannot even remove the cover from the light fixture? In such cases the light fixture was not designed with maintenance in mind. Any system that is not designed to facilitate maintenance will be more costly to repair and update over its lifetime.
Your Design Project
The design of your project should be divided into the following two steps. The results of both steps should be documented in a single word processing document.
Step 1: Gather the customer's requirements
Big Idea:
The goal of your software development is to meet the needs and desires of your customer. However, your customer may have an open-ended, ill-defined, and sometimes erroneous understanding of their needs. In some cases the user may request software systems that are impossible to build. Whatever the case, it is your job to document the needs and desires of your customer. At this stage in your design, there are no limits on what the customer might desire. The customer can "ask for the moon," and your job is to document what the customer wants.
How to proceed:
To gather your customer's requirements, you might do one or more of the following:
Ask your customer lots of questions.
Examine existing software systems that have been previously developed to solve similar type problems.
Propose case studies to your customer and get feedback from your customer based on the case studies. A case study is nothing more than a list of actions your software system might perform to implement some desired functionality.
Requirements documentation: (what you will turn in for this assignment)
Provide a general description of the customer's desired software system.
Provide a list of the major functionality the customer desires in the system. In some cases the functionality can be described with a simple phrase or keyword. such as "save a photograph." In other cases the functionality might be more complex and require one or more sentences to describe. In either case, make sure the customer's desired functionality is fully understandable.
Provide a list of the system's restriction For a real-world project, you would state any hardware or software restrictions imposed by the customer, such as a limit on the amount of memory a computer might need to execute your software, or the type of operating system your software must work under. However, for your project the system's restrictions are predefined! Your software system must be implemented in MATLAB, and your system must be a GUI program. In addition, it must execute reasonably efficiently on your cadet issued laptop computer.
Step 2: Write the system specifications
Big Idea:
The customer may have "asked for the moon," but you have to decide what is "doable." Given your time constraints, you must prioritize the functionality desired by your customer. Basically your specification will say to your customer, "If you want your software system in 3 weeks, this is the functionality the system will have implemented."
How to proceed:
To create your specification, you need to do the following:
Create a chart that lists the major functionality your customer desires. For each major functionality include a brief description, a ranking from 1-10 of its importance to your customer, and an estimated development time. The final version of your chart must be sorted according to the importance of the functionality and its difficulty of implementation. Create a break in your chart to indicate what functionality will be in the first release of your software (your final turn-in for this course) and what functionality might be implemented in future releases (beyond the scope of this course). The most difficult part of this task is to determine the development time required to implement a particular functionality. Just make your best guess. Even experienced software engineers sometimes do not know how long certain development efforts might take. Experience is the best teacher and your instructor understands that you currently have limited experience at software development. Your chart might look something like the charts below.
First software release:
Functionality Importance
10 - critical
1 - nice to haveEstimated hrs
to implementRead a digital photograph into memory 10 0.25 Save a digital photograph to a file 10 0.25 etc. Future software releases:
Functionality Importance
10 - critical
1 - nice to haveEstimated hrs
to implementetc.
Create a GUI design of your program using MATLAB's guide tool. Your will need to decide the type of GUI components and the layout of the GUI components that will compose your user interface. DO NOT WRITE ANY MATLAB CODE FOR YOUR DESIGN. Your goal is to create an intuitive interface that is straightforward for a user to understand and use. Please use the following guidelines for your GUI design:
If your design requires more than one GUI screen, create a separate *.fig file for each screen.
ALL components in your GUI design must be positioned and sized using normalized units. Make sure every component has its 'Units' property set to 'normalized'. (This includes the figure window.)
The selection of the best component to implement a particular interface option should use the following general guidelines:
If a user has a choice between multiple options, and only one of the options can be active at one time, then use a group of radio buttons.
If a user can "turn on" or "turn off" an option, and the option is independent of other options, use a check box.
If a user can "turn on" or "turn off" an option, and the option is independent of other options, and you do not want to use screen space to show the option, use a menu item.
If a user needs to execute some functionality often, use a command button.
If a user needs to execute some functionality, but not very often, use a menu item.
If a particular functionality requires the opening of a dialog box (e.g., a Save As... command), it should be in a standard menu.
If some functionality is associated with a specific graphic object, it should be a contextual menu.
Use the alignment tool in guide to make the layout of your GUI visually pleasing. (Tools --> Align Objects...)
Specification documentation: (what you will turn in for this assignment)
Include your specification functionality chart in the same word processing document that contains your system requirements. Your specification should start on a new page and be clearly distinguished from the requirements portion of the document
Turn-in one or more MATLAB *.fig files that contain your GUI design.
Include in your word processing file a picture of each GUI screen you designed. To do this: run your GUI program; type ALT-PRINT SCREEN on the keyboard which places an image of your window on the clipboard; place your cursor in your word processing document where you want your image to go and select the paste command. You may need to resize the image after it is copied into your document.
If your GUI design includes components that appear and/or disappear based on the current data that is loaded or the current operation a user is performing, then you may need to include a "narrative" that describes how your system will be used by your customer. Please do not assume that your instructor can "read your mind." Add whatever descriptions are needed to make your design clear.
Turn-in Requirements
Your work for this assignment should be contained in one word processing document and one (or more) MATLAB *.fig files.
You must submit electronic copies of your documents (one copy per team) to the course web site by the end of class on Lesson 34.
You must submit a hardcopy printout of your word processing document (one copy per team) to your instructor by the COB on Lesson 34.
IMPORTANT: Make sure your word processing document includes, at the top of the first page,
your project title
your name (or both names for a team).
a documentation statement.
Grading Information:
Proper Documentation Statement (-3 pts)?
Criteria |
Pts |
Customer Requirements (documentation style, grammar, spelling, etc.) | 4 |
Customer Requirements (content) |
10 |
System Specifications (documentation style, grammar, spelling, etc.) | 4 |
System Specifications (content) |
12 |
System Specifications (screen shots) | 2 |
GUI design (style, layout, correct use of buttons, menus, list boxes, etc.) | 8 |
GUI design (content - will the design allow for the system specifications?) |
8 |
GUI design (all components use normalized units to specify their location and size) | 2 |
Totals |
50 |
Late Penalties (-12, -25, -37 -50) |
|
Final Grade |
|