Software Engineering
MCS 5103 - Software Engineering January 9, 2017
Software_Development_Assignment_1_201701.Docx
Page 1 of 4
Assignment:
Program Requirements:
Develop a software application that will do the following:
Allow user to enter a file name, either by command line, prompt, or menu.
Open specified file. If multiple files are specified or a directory is specified (not required, but a nice optional feature), the program operates on each file in sequence.
For Each File:
“Advanced” software developers: read each line in the file into a linked-list with one line in each “node” of the list.
Count the total number of Lines of Code, “LOC”, contained in the file.
Report the name of the file.
Report the total number of LOC contained in the file.
Close the input file.
The main program performs the following operations:
Prompt the user for file name input
Open the file
Invoke the LOC counting function
Report of the File Name and file LOC count
Close the file
The LOC counting functionality shall be performed by a function called “countLOC”. countLOC receives a pointer to a
valid open file as a passed parameter, and returns the integer number of LOC in the file.
You must use the following “countLOC” function prototype/definition:
int countLOC(FILE* filePointer); /* C-language function prototype */
int countLOC (ifstream &file); // C++ function prototype
int countLOC (File file) // Java method definition
int countLOC (String fileName) // Alternative Java method definition
All user input/output interaction functionality shall be performed by the main program; countLOC shall have no direct user
interface.
The program shall be written in C, C++ or Java.
MCS 5103 - Software Engineering January 9, 2017
Software_Development_Assignment_1_201701.Docx
Page 2 of 4
Process Requirements:
BEFORE YOU BEGIN:
Estimate the TOTAL time (actual working time in hours or minutes, not “calendar” time) that it will take you to complete the project (time measured from the time you begin this estimation until you have a complete, properly
functioning program.)
Estimate the total number of lines of code (LOC) of your completed program.
USE the Project Estimates form provided in the Project Log Template to facilitate these estimates.
AS YOU WORK:
Log the ACTUAL time (actual working time, not “calendar” time) that you spend working on the project INCLUDING:
Analysis
Design
Coding
COMPILING
Testing
Project Retrospective Analysis: Any POST project analysis, wrap-up, documentation, etc.
Log any defects that you encounter as you proceed INCLUDING (but not limited to):
Incomplete, incorrect, misunderstood or missing requirements
Incorrect design or missing design
Logic errors
Typo’s and syntax errors in source code
WHEN YOU’RE DONE:
Record the ACTUAL time it took to develop the program.
Record the ACTUAL number of LOC in the program.
Analyze/Summarize your experience (“Retrospective Analysis”):
Analysis of Estimates vs. Actual (Time and LOC)
What went right
What went wrong
Writing Guidelines:
Project Reports are subject to the “LTU Banned Error List for Writing”
(http://www.ltu.edu/arts_sciences/humanities_ss_comm/writing_tools.asp#tab3) and the associated policy:
“A paper with one of the errors listed loses half a letter grade (e.g., from B to B-). Additional errors of the same
category (e.g., three sentence fragments) will not lower the grade further, but additional errors in other categories
will (one-half letter grade per category).”
Additional reference for further guidance: http://www.ltu.edu/arts_sciences/humanities_ss_comm/writing_tools.asp#tab1
MCS 5103 - Software Engineering January 9, 2017
Software_Development_Assignment_1_201701.Docx
Page 3 of 4
Deliverables: - Students are expected to submit their own original work
You MUST use the project templates provided to you on Blackboard under
“Assignments Projects Project Templates and Supporting Resources”
Project Report – use “TEMPLATE – Software Project Report”
Estimate and Actual of TOTAL time to develop the program (INCLUDING planning, preparation, documentation, debug and test, and retrospective analysis time.)
Estimate and Actual of TOTAL size (in LOC) of the program
Planning – come up with a schedule of when you will complete the various phases of this assignment
Documentation/Summary description of all associated software development process steps performed (requirements, design, test cases & results, etc.)
Project Retrospective analysis/summary
Name this file “SD1_ProjectReport_[username]”
The Report should contain references to all additional supporting documents. ALL documents submitted should contain
author identification and should indicate to what assignment they pertain.
Project Estimation, Time Logs, Defect Logs – use “TEMPLATE – Project estimation, Time Log, Defect Log”
This is where you do your time/size estimation
Track time spent in each phase
Track defects and time spent fixing them
Name this file “SD1_EstimatesTimeDefectLogs_[username]”
Testing – use “TEMPLATE – Test Use Case Scenarios and Logs”
This is where you document how you will test your code
Describe what test scenarios you will use
Record outcome of executing these tests
Name this file “SD1_TestingLogs_[username]”
Software:
Source code
Executable program (.exe, .jar)
Software Project files (example: if MS Visual Studio is used, include the ENTIRE project folder containing all project files – such as .vcxproj. Note that the project files usually contain the source code and executable in the various
subdirectories.)
[User Story: As a project reviewer, I want to be able to recompile/re-build the submitted project, so that I can
overcome run-time errors and other problems associated with incompatible versions of the development tools between
the developer’s development tools and my own, thereby allowing me to run the submitted project on my own
computer.]
Assignment Submission:
Assignment deliverables must be submitted in the appropriate “Assignments” area on Blackboard by the BEGINNING of class on the due date.
All executable programs must be in the form of .EXE, .JAR or .HTML files.
“ZIP” the collection of all files into a single file using WinZip or RAR format.
Name the ZIP file SD1_UserName.zip (or .rar) [UserName meaning your Banner UserName - example: SD1_bsweet]
This project has multiple submissions with various due dates (given below). Append “_n” to the submitted file name, where “n” is the submission number (given below) – example: SD1_bsweet_1
With each submission, include current version of all work products to-date, even if incomplete. This includes:
o Project Report o Time Log
MCS 5103 - Software Engineering January 9, 2017
Software_Development_Assignment_1_201701.Docx
Page 4 of 4
o Defect Log o Requirements & Design Documentation o Source Code o Testing Plans & Results o ALL other process & project-related documentation to date (project plan, schedule, checklists, source code, etc.)
Note: You CAN work on various work products BEFORE the associated due date…
[User Story: As a project reviewer, I want to be able to review the current state of all project deliverables without
having to refer back to previous project submissions, so that I can somewhat reduce the effort and frustration in
evaluating project submissions.]
Assignment Date: January 17, 2017
Due Dates:
Submission 1 - Requirements & Estimates ONLY: January 24, 2017 – 1 week Include the Project Log with Submission 1 as supporting documentation. This should include the Time Log to-date
showing the effort from these initial activities.
Submission 2 - Complete: January 31, 2017 – 2 weeks