The University of Sheffield
Department of Computer Science

COM3420 Software Hut

Summary The Software Hut (a microcosm of a real Software House) gives students an opportunity to experience the processes of engineering a real software system for a real client in a competitive environment. The taught element covers the tools and technologies needed to manage software development projects successfully and to deliver software products that meet both client expectations and quality standards. Topics that are put into practice include: the requirements engineering process; software modelling and testing; using specific software development framework(s); group project management etc. Tutorials take the form of project meetings, and so are concerned with team management, conduct of meetings and action minutes.
Session Spring 2018/19
Credits 20
Assessment There will be no written examination for this module.  Assessment will be entirely on the basis of the project work undertaken in teams.
  • 50% of the mark is awarded by project supervisors (course lecturers), who assess each team's management of their project:
  • 50% of the mark is awarded by project clients (company managers), who assess the quality of the systems developed by different teams.
This module has the explicit objective of developing group teamwork skills. Participation in teamwork is mandatory and failure to participate will result in deduction of marks and eventually loss of credits. Furthermore, this group teamwork exercise cannot be repeated within the academic year. Failure will normally result in repeating the year.
Lecturer(s) Dr Emma Norling, Mr Andrew Stratton, Dr Ramsay Taylor, Prof. Tony Prescott & epiGenesys
Aims The aims of this module are:
  • to gain experience in dealing with external clients from industry and in understanding and managing clients expectations
  • to experience, in a competitive environment, the practical problems of constructing, managing and deploying a medium-sized software project, producing the associated user documentation and providing training and online support
  • to examine selectively and use some of the tools and techniques available to solve these practical problems
  • to understand the processes involved in the quality assurance of software and accompanying documentation
  • to apply consistently programming standards
  • to develop team working skills
  • to prepare students for higher level project work, such as the individual Research Project and the Genesys Solutions software company
Objectives By the end of this course the students should:
  • have undertaken a real system development project for an external client
  • have experienced and developed an ability to manage, team work
  • be able to apply software project management and quality assurance techniques
  • have delivered and deployed a software product in a competitive environment to a deadline
  • have produced adequate user documentation, training material and online support material
  • have developed a software product that satisfies the client's expectations
  • have used methods and tools for project management, version control, testing
Content Teamworking:
  • group project vs individual project
  • roles in a team
  • documents used by the team
Requirements Engineering (classic OO vs XP):
  • Requirements Capture and Analysis
  • Identifying non-functional requirements
  • Requirements Specification
  • Requirements Validation
  • Managing changing requirements
Managing Software Development Projects:
  • Project management strategies
  • Project planning tools
  • Quality management strategies
  • Reviews and inspections
  • Testing strategies and test plans
Use of Prototypes:
  • Reasons for prototyping
  • Characteristics of prototypes
  • Use of prototypes for requirements elicitation and validation
Software Documentation:
  • Usable Requirements Specification documents
  • User manuals and on-line user support
Restrictions Students from departments other than Computer Science will need to demonstrate mathematical skills, programming skills in Java or a similar object oriented language, and some experience of developing web-based systems.
Teaching Method
  • The course is centred around the project, which involve the students working as teams to develop an application for an external client.
  • There will be lectures in weeks 1-4.
  • The lectures are primarily to provide training in the tools and technologies used to support the projects, and emphasis is placed on the application of their content to practical software development.
  • There will be a management meeting each week.
Feedback Feedback is provided on a weekly basis at the management meetings. There will also be feedback from both client and managers at the end of the module.
Recommended Reading
  • M Holcombe and F Ipate: Correct Systems: building business process solutions. Springer
  • M Holcombe: XP4Real, lecture notes.
  • I Sommerville: Software Engineering Addison-Wesley
  • R S Pressman: Software Engineering: A Practioner's Approach. McGraw-Hill
  • S L Pfleeger: Software Engineering - Theory and Practice. Prentice-Hall
  • Programming Ruby 1.9 & 2.0, Dave Thomas, Pragmatic.
  • Agile Web Development with Rails 5.1, Sam Ruby and David Bryant Copeland, Pragmatic.