Intermediate Agile Software Development

Version 0.8.0

Lectures and other resources for teaching and learning about software development

Final

Final

Instructions:

  • Recommended work time 240 minutes.

  • Recommended Period: one week

  • Students can leave the work, save it, and return later to pick up where they left.

  • Total points 100 (100%).


Q1: Team Process (20 pts)

Write an insightful analysis of the software process your team used during the project throughout the semester by answering the following questions:

Part A (10pts): Identify 3 positive principles about teamwork and approach to software development that you observed and followed in your semester-long experience. Explain why it worked well and why. They must be specific to your team project, otherwise you do not get full points.

Part B (10pts): Explain 3 issues that went wrong with your team project, and how you would modify the process if you had to do it all over again. I’m not asking about small technical problems you encountered, but about the whole semester-long experience. Examples of issues would be on sprint planning, team roles, estimation and assignment of tasks, communication, etc.


Q2: Personal Role (15 pts)

Each team member had a specific role to play in the project, which changed over time. Please answer the following questions about your personal role(s):

Part A (5pts): What were your roles in the each of the iterations this semester? Explain what was your strategy for selecting your initial role(s). Describe the duties (tasks) expected of and product outcomes specific to your role(s). How did your role change over iterations, and what were the reasons?

Part B (5pts): What were the biggest challenges you faced in accomplishing those duties? In what ways do you feel you did a good job in your role? If you had the same role for another project beginning next week, what would you do differently?

Part C (5pts): Do you feel your role was harder, easier, or equivalent to other roles in the project? Compare it to each of the other roles in your team, and give each role a score between 1 (easiest) to 5 (hardest). Note that this is not the peer review for your teammates, which is coming later. Were any new roles missing from your team?


Q3: Security in Software Development (10 pts)

Answer BOTH of these questions:

Part A (5pts): We did not get the chance this semester to talk about security issues as it directly pertains to software development. Go to the OWASP Top Ten page, open the PDF for the 2017 report, and select two items from the top 10 list. Describe in your words what these items mean and how they relate to issues in your past projects or public incidents that you know about.

Part B (5pts): Choose another item from the OWASP Top Ten list that can be implemented in your project this semester. Explain how this vulnerability can be exploited in your project, and what steps would you or did you take to avoid it. Be specific.


Q4: SD Knowledge (15 pts)

Answer below questions based on the knowledge and client requirements provided.

Knowledge:

  • Application server is a monthly-subscription service where you can run a back-end web service
  • Database server is a monthly-subscription service that allows accessing a database with an IP address
  • Github Pages is a free web publication service that can serve static content (including dynamic Javascript content, such as in Angular, React, or Vue.js)
  • MongoDB is a noSQL database software that serves JSON documents
  • AtlasDB is an online service that offers a MongoDB instance for free up to 500MB
  • Javascript can be used to access AtlasDB
  • MySQL is a free, open source DBMS software helping to host a database server that needs to run an application/database server
  • Altervista is an free, online service for MySQL databases that can only be accessed locally from the provided PHP back-end to host web applications
  • Mobile applications can be downloaded from online markets for free, only with a one-time, small submission fee
  • Mobile apps are not easily updated (users resist too frequent updates)
  • Mobile apps larger than 100MB are not easily installed by users
  • Web pages can be viewed on mobile device browsers if they use responsive design
  • Client-side Javascript code can be hosted without the need for an application server

Client requirements (select 3):

        a) Wants mobile access
        
        b) Can't afford application or database server
        
        c) Can only pay to develop one app (either a web app, iOS, or Android)
        
        d) Client has more data than 500MB
        
        e) Client wants cheapest solution
        
        f) Wants to reach users irrespective of browser, computer, or phone ownership (Android, iOS, etc)

Questions:

Part A: List your chosen client requirements.

Part B (9pts): List up to three potential technological solutions for this client that satisfy the requirements above (mandatory and those you selected). List the back-end, front-end, and database solutions, and how they will work together to satisfy the client needs for each solution.

Part C (6pts): What three changes in requirements will have an impact on the solution provided? List each of the changes and briefly explain how the solution changes for each.


Q5: Metrics (25 pts)

We talked about measuring software project development performance during the course. Answer the following:

Part A (10pts): Explain what we mean by software process metrics (for measuring both team and product performance), and why they are important in software engineering projects. Research, and give multiple specific examples for metrics. Cite your sources.

Part B (10pts): Look back at your own progress in the project and summarize your weekly velocity for a specific period in at least 2 iterations. Cite the exactly JIRA items where you logged your progress. Then, explain how and why your velocity changed throughout the semester. Based on this data, give me an example of a task you can do in a specified amount of time, trying to be as accurate as you can.

Part C (5pts): Look at your user testing data (from App Factory presentations at CREATE Symposium or earlier user testing) and explain what’s the most important outcome for the success of your project. How did you personally contribute to this outcome? What weaknesses were reported by your testers? How could they have been addressed?


Q6: Communication (10 pts)

One of the most important tools in software engineering projects is communication. Knowing that you, your team, and the client do not work in the same office 40 hours per week, answer all of the following.

Part A (5pts): Describe how you and your team members communicated about the project tasking using the Discord, Slack, GroupMe, email, texting, etc. By the end of the semester, how would you characterize your group dynamics on this communication channel? Was it ideal? How would you improve it? How did your activity on the productivity software (task and user story discussion and state tracking) contribute to your communications?

Part B (5pts): Describe your communications with your client, who was supposed to be part of your team based on the Agile philosophy. Include how often you personally contacted them, how the team made sure they are aware of your progress, and whether the team received the required feedback from them. How would you rate your client and how could you have improved your communications with them?


Q7: Peer Review (5 pts)

Consider the latest phase of your project since March 31st. For each of your teammates, write a paragraph with the information below:

Give name, performance on scale from 0 (troll) to 3 (awesome), and explain contribution to the project. The score is used in combination with other activity metrics to scale your teammates project score. A low score here may not mean they will lose all points, so don’t be afraid to cut points. It may be important for them to get the feedback and improve themselves in the future. Potentially, you can leave a message for them that I can deliver anonymously.

Last updated on 20 Dec 2020
Published on 23 Nov 2019
Edit on GitHub