SWE 3710: Software Development Laboratory I
Fall 2023 and later
Instructors:
Dr. Rob Hasker, Prof. Alexander Pezewski
Office hours: see
Canvas
Course Description:
The software development laboratory provides students the experience of
working in a team on large-scale projects using software engineering
tools and techniques. In this first course in the sequence, students are
introduced to the laboratory environment and work on assigned tasks as
members of project teams. As students develop individual and team skills,
they take on additional responsibilities on project teams.
Prereqs: SWE 2410, SWE 2710 (quarter system prereqs: SE 2800, SE 2811)
Format: 2 lecture hours, 2 lab hours, 3 credits
There is no textbook for this course.
Course Learning Outcomes:
On successful completion of this course, the student will be able to
- Apply software engineering practices and tools to the development of
significant software components and systems
- In a small team, identify client needs, document the scope of work to
be done in a term, and develop a framework leading to potential solutions
- Develop deliverable prototypes for evaluation by clients
- Plan and track project activities with students serving in both
leadership and team membership roles
- Describe the role of continuous testing in project development and
demonstrate a testing environment which verifies portions of the
delivered system
- Communicate project and process information in written and oral form
- Research and apply independently learned knowledge and skills to the
development of software components and systems
Grading:
|
Percentage |
|
Sprints |
60% |
Contribution Report |
25% |
Peer evaluation |
5% |
Presentations |
10% |
Total: |
100% |
The MSOE grading scale will be used, though higher grades may be awarded
to individual students if it increases fairness. In addition, successfully
demonstrating mastery of course outcomes is a prerequisite for a passing
grade. Failing to meaningfully participate in the project may result in
being administratively dropped from the course.
For an A in the course, you must make significant contributions. This
includes both technical and process contributions. Process contributions
include project tracking, reviewing deliverables, providing leadership in
an aspect, etc. Technical contributions include designs, implementations,
tests, and other activities leading to a viable product. Both are
required of all students; simply writing code is not sufficient. To engage
effectively in both and get an A, you will need to log at least 125
hours for the term. This must be distributed evenly throughout the term,
meaning you need to plan on approximately 10 hours per week on the project.
If this is too much time, you may wish to postpone engaging in SDL.
Students can put in more time without penalty, but the 130 hours (spread
evenly) per term is sufficient except when a student is explicitly informed
they need to do more to address inadequate performance. While 130 can be
considered the minimum number of hours, it is not the maximum. However,
working more than 130 hours does not, in itself, increase the likelihood of
earning an A.
Team Formation
The course coordinator and instructor will work together to determine team
and project assignments. Assignments will be based on such factors as
student interest, loads between sections, and the needs of individual
projects. Generally a student will remain on the same team for SWE 3710
and 3720, but this may change when necessary. Reasons for changes
include (but are not limited to) students studying abroad, students failing
any of the courses in the sequence, and product owners determining a
project is finished.
Schedule
Each term is broken into four sprints with additional planning weeks.
The schedule is as follows:
Weeks |
Sprint |
Objectives |
1 |
Initial Project Planning |
- Meet with Product Owner (PO)
- Assign Product Owner Proxy (POP) for year
- Assign roles for sprints 24f1, 24f2. The other roles are
- Note-taker: responsible for capturing notes from each
meeting, including the review and retrospective. Notes must
be shared on the appropriate forum. The note-taker is
responsible for sending the review and retrospective document
to the product owner. The note-taker will record meeting
notes starting with the flex week.
- ScrumMaster: responsible for ensuring appropriate process
is followed.
- DevOps Lead: responsible for documenting build
instructions (to be in the doc folder), for
documenting any test procedures, and for monitoring and
maintaining the running status of any CI systems.
Teams may identify other roles in consultation with the instructor.
- There is to be a single repository for each
project. (Prototypes can go into a separate project if
convenient, but any code and documents relevant to a future
team must be in one repository.)
- Initialize the repository with "main", "dev" branches and
"doc" folder (again, all lower case). The doc folder will
contain build and deployment
instructions, general requirements, mock-ups/storyboards,
designs, and other information that is required to maintain the
system. The doc folder should not contain project
reports or other materials related to process.
- The team will create PBI-specific branches; how those
branches are named is up to the team, but please do use lower
case letters for their names.
- Create a Readme file at the top level of the
project. This file must include
- The names of all team members.
- The names and organizations of key external clients,
especially the PO.
- The project's purpose in a sentence or two.
- Key technologies used for the project.
- The name of the file in the doc folder giving
build and test instructions.
- Identify technology assignments by team member.
- Set up your GitLab issue board with the following columns:
- Open - issue is in the sprint and ready for work
- In Development - issues for which work has been started
- Blocked - issues for which progress is blocked by
an external entity (not your PO!)
- Ready for Review - issues which the developer considers
done
- Closed - issue closed by the PP
- Create sprint 24f1; note that the ' f ' is lower case
- Create the 24f1 backlog; see the 24f1 discussion below.
- Identify key epics to be completed for the project. This
list is expected to grow as the project matures.
|
2-4 |
24f1 |
- Finalize project scope. For some projects this will include
creating storyboards, high and low fidelity mockups, and/or
user interface prototypes. Discuss the project needs with your
instructor and your product PO, and review any created
documents with the PO.
- Technology assignments:
individual assignments geared toward learning a technology
to be applied in the year. At least 25% of your sprint 1 grade will
be related to completing and documenting this assignment
by the end of the sprint. Create PBIs for each to allow logging
time, and check the code into a new repository under the SDL
GitLab folder. In some cases this assignment will be moved to
the second sprint. Additional requirements:
- The individual must fully groom the PBI for their assignment; the
quality of your PBI is part of the grade.
- The assignment must be placed in a separate repository (from
the main
project) and be visible to your instructor until the assignment is
graded. For GitLab, give the instructor maintainer access. Document the
location in the writeup.
- Document where they are stored and ensure they are visible to your
instructor (with maintainer access in GitLab) until the assignment is graded.
- Make frequent commits showing your progress. One single check-in
suggests the assignment was too simple.
- Document the time you spend on your PBI. Do this in GitLab, but you
may also find it convenient to have your own log.
- Ensure you go beyond demonstration code. If sample code is used from
exterior sources, the writeup must clarify what part is yours. Be sure to
cite any other sources, including work done by other students!
- Create PBIs for sprint 24f2 and beyond. Do not attempt to
write PBIs for the full project, but do ensure you have
well-written user stories for key features to be implemented in
sprints 24f2 and 24f3, including acceptance criteria. Rotate
project roles if appropriate.
|
5-7 |
24f2 |
- Create high level design diagrams capturing system
architecture. Present your solution to your instructor and
incorporate feedback.
- Create a software spike of the entire solution. The spike
should include a component from each element of your
architecture diagram. Check this code into a fresh repository
in the SDL GitLab folder.
- Build a project backlog of PBIs that lead to a minimally
viable product at the end of sprint 24f3. PBIs should generally
be small enough that one or two people can complete them in a
week. Larger PBIs will likely result in work that must carry
across multiple sprints, contrary to the Scrum model.
- Often the first PBIs will also include creating new
projects and build environments. Inflate your estimates for
the first PBIs to account for this.
- Create an initial "definition of done." It is
expected the team will update this throughout the year.
|
Ensure your spike PBIs have verifiable acceptance criteria. "Customer
approves" is not an appropriate acceptance criteria; express it in
terms of actions that can be accomplished by users.
A key element of these spikes is that they will not be moved
into your project. We will require that different group members implement
each of the features given here in sprint 24f3.
8-10 |
24f3 |
- Allocate PBIs. Have no more than two PBIs open at any one
time (at this stage in the year).
- Post pull requests for every major improvement (into dev),
even if the full PBI is not complete.
- Complete PBIs and have them validated by the POP.
At the end of the sprint,
- Close all completed branches.
- Merge dev to main.
- Meet with your PO and demonstrate your progress. This
demonstration must be out of the main branch. Identify
priorities for the next semester.
- If you cannot meet with the PO for the sprint review,
perform an internal review. Ensure there is a meeting with the
PO by the first class of the next term.
- Perform a sprint retrospective, being sure to capture
concrete, measurable process improvements. The retrospective
can be performed before the review when appropriate.
- Produce a sprint report capturing each team member's
contribution in terms of completed work and hours logged
as well as the retrospective. A format for this will be
provided.
|
11-14 |
24f4 |
- This sprint covers four weeks, including
Thanksgiving break. This sprint also includes a presentation
day; this helps ensure the effective sprint length is the
same as 3.
- Follow sprint 3 activities: allocating PBIs, posting pull
requests, completing PBIs
- The presentation will be part of this sprint's grade.
At the end of the sprint, perform the same activities as for
sprint 3.
|
15 |
Spring Planning |
- Ensure there are enough sprintable PBIs for two sprints on
the top of the backlog. These should have the following
characteristics:
- They must have a name that distinguishes the PBIs from
others
- The PBI must follow the standard format complete with
testable acceptance criteria. At this point, there should be
at least one sunny-day AC and at least one error AC.
- The PBIs must be listed in priority order.
|
16 |
Finals |
- Each team presents their work. Everyone should
be involved in presenting the material.
- Practice your presentation to ensure it fits within the
time allotment.
- All presented functionality must be built from the
project's main branch and presented on a working server.
- Presentations should introduce the problem, demonstrate
the solution, describe the architecture, and discuss lessons
learned. The demonstration must be early in the presentation.
- Students must be good audience members with laptops closed.
- Each student writes a contribution report capturing
their accomplishments, both in terms of completed PBIs and pull
requests as well as indirect contributions such as showing
leadership, completing their roles, and identifying errors when
reviewing pull requests and other resources. The report is also
to include the total hours spent on the project in the semester
(with useful breakdowns).
|
Sprint grades are broken into 50% for documented effort and process and 50%
for other deliverables.
- Process: completing PBIs, process improvement, process documentation,
team work (which includes not completing all PBIs very late in the sprint).
- Flex week: this week will have a brief report and review, but students will not be required to submit 10 hours
- Name branches by the PBI description; all lower case, underscores or
dashes between words
- Pull requests are evidence of contribution
- You are required to submit pull requests when there is significant
progress, not just when the PBI is completed
Attendance and Logging Time
Teamwork is critical to SDL, so attendance is mandatory and missing results
in grade penalties as determined by circumstances and your instructor's
policies. The exceptions are:
- Being ill. Don't come to SDL if you're too sick to get to class! Do
let your instructor and your team know you cannot make it.
- Absences excused by the Vice President of Academics for such things
as university-sponsored activities. Be sure to give advance notice.
- In lieu of other absences, one missed day can be excused, but not
for a day involving a sprint ceremony (finalizing the backlog or doing
reviews and retrospectives). You must have approval at least one week in
advance. This is the general solution for students needing to attend job
interviews.
When you do miss, send email to your team and your instructor briefly
stating the reason for the absence and describing how you will make up the
lost time with a verifiable activity.
Tardiness also impacts the team. Arriving more than 5 minutes late three
times will result in a
penalty, and arriving an hour late may be treated as an absence. Likewise,
leaving before the end of the class time will also be penalized.
Log time to tasks on the appropriate story board. Log all time to the
closest five minutes, and be sure the description distinguishes
the work from other time logs. Log all time, both in class and outside,
including non-development tasks as well as time researching solutions and
time writing code. Failing to include a description will likely result in
the time being ignored. Unless you really do stay approximately 120
minutes, the lab time should be logged as 110 or 115 minutes. If you find
a mistake in how you entered the time within a few days, fix it. If many
days pass before you find the error, talk to your instructor.
As a special case, log all time to sprint ceremonies (planning, reviews,
retrospectives, etc.) to a sprint-specific ceremonies PBI. Create
a new ceremony item for each sprint and include the name of the sprint,
such as "24f1 Ceremonies". Assign 0 points to the ceremonies PBI and close
it at the end of the sprint. Standups get special treatment: since they
should be quick, you can log that time to the first task you work on for
the day.
Communication
Communication is particularly important in SDL. It is expected that your
team will establish effective communication channels (Teams, Slack, or
other). Discuss with your instructor whether they wish to be included in
those communications.
All students are expected to monitor the course wide Team channel. Many
announcements will be made there and nowhere else. Instructors will monitor
Teams and email on a daily basis, though some instructors may not be able
to monitor them on weekends. Students are expected to do the same.
Study Abroad
Students occasionally wonder if they can participate in SWE 3710 while
studying abroad. While it may be appropriate for SWE 3720, it is
not appropriate for SWE 3710 because this is the first experience with
long-term, open-ended projects, and the difficulties of communicating while
overseas make it challenging to fully participate as a team member.
Integrity
Students are expected to engage in this course ethically and with
integrity. It is expected you will work with your peers, however it is
unacceptable to submit the work of your peers as your own. Fabricating
evidence of participation (through misleading time logs, grossly inaccurate
status reports, claims to have reviewed documents without examining them,
etc.) are forms of academic dishonesty and may result in penalties
discussed in the Policy on Student Integrity in the catalog. The
academic
integrity guidance for CSC and SWE courses applies to this course as
well.
Additional Notes
Students with documented disabilities, chronic medication conditions
and mental health concerns: MSOE provides services to make reasonable
accommodations available. If you are a student who requires or anticipates
the need for accommodations, please contact Student Accessibility Services
Office at 414-277-7281, by email at moureau@msoe.edu, or in person at K250
to discuss appropriate accommodations and eligibility requirements.