TRON07035 2020 Software Engineering
This is a module for programmers and electronic engineering students which the learners acquire experience with well-established software engineering principles and practices using a project-based approach.
The learner will learn how to take a business case and turn it into a Requirement's specification. They will learn how to plan a project, produce a design for a project, implement project code, test a project (unit test and system test) and release a project.
On completion of this module the learner will/should be able to;
Compose a requirements specification consisting of functional requirements and non-functional requirements (ethical, performance and safety) given a business case/project brief.
Organise and manage a software project using appropriate collaboration tools and practices
Develop suitable design strategies including use cases, activity diagrams, UML models for specified project.
Develop coding skills including debugging, source code management, error handling, logging and release control to produce maintainable software
Design, execute and record a set of unit tests for a unit of an engineering/software project. Have an awareness of system/acceptance testing
Teaching and Learning Strategies
The suggested teaching/learning strategy is to use the lecture time as 1 * 2 hour, problem based learning session in a flat classroom. A set of work scenarios are developed to allow the learners to experience requirement gathering, project planning, code and testing techniques.
The corresponding labs are all programming based to allow the learner to implement techniques learned in the lecture sessions.
The last section of the course should see the learners engage in a software development project using all the techniques and tools learnt (in a team environment), delivering a software project with suitable requirements, design, implementation, testing and source control.
Module Assessment Strategies
Assessment is via
1) Continuous Assessments
- prescribed labs
2) Final Written Exam
In the event of exam failure, a repeat exam is required.
- Taking a business case or project brief and understanding what needs to be done
- Writing a normal use case
- Write any probable or obvious error use cases
- Writing a Requirement Specification based on a given template using 'will/must', 'should', 'could/may' language.
- Maintaining correct revision numbering/history of all documents
- Peer Review of specifications
- Explain the various aspects of the Agile (SCRUM) software management
- Use Agile methods to implement a project (stand up meetings, burndown charts, sprint planning)
- Create a UML diagram to show the design of the software system
- Producing a flowchart showing the flow of a user experience
- Experience debugging, logging, error handling
- Software versioning systems (Git)
- Code inspections
- Designing a robust and comprehensive set of Unit tests for a project unit based on inputs, expected outputs and actual outputs.
- Executing and recording unit test results
- Automating Unit testing
- Software control
- Acceptance testing system against the Requirement Specification
Coursework & Assessment Breakdown
|Title||Type||Form||Percent||Week||Learning Outcomes Assessed|
|1||Project Evaluation of participation in project||Continuous Assessment||Practical Evaluation||40 %||End of Semester||2,3,4,5|
|2||Lab practicals||Continuous Assessment||Written Report||20 %||OnGoing||2,4,5|
End of Semester / Year Assessment
|Title||Type||Form||Percent||Week||Learning Outcomes Assessed|
|1||Written Exam||Final Exam||Closed Book Exam||40 %||End of Term||1,2,3,5|
Full Time Mode Workload
|Problem Based Learning||Flat Classroom||Lecture/Project work||2||Weekly||2.00|
|Laboratory Practical||Engineering Laboratory||Practical/Project Work||2||Weekly||2.00|
Part Time Mode Workload
|Lecture||Not Specified||Lecture/Project work||2||Weekly||2.00|
|Problem Based Learning||Not Specified||Practicals||2||Weekly||2.00|
Required & Recommended Book List
2015-08-20 Software Engineering, Global Edition Pearson
ISBN 9781292096131 ISBN-13 9781292096131
For courses in computer science and software engineering The Fundamental Practice of Software Engineering Software Engineering introduces students to the overwhelmingly important subject of software programming and development. In the past few years, computer systems have come to dominate not just our technological growth, but the foundations of our world's major industries. This text seeks to lay out the fundamental concepts of this huge and continually growing subject area in a clear and comprehensive manner. The Tenth Edition contains new information that highlights various technological updates of recent years, providing students with highly relevant and current information. Sommerville's experience in system dependability and systems engineering guides the text through a traditional plan-based approach that incorporates some novel agile methods. The text strives to teach the innovators of tomorrow how to create software that will make our world a better, safer, and more advanced place to live.
1995-08-02 The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition Addison Wesley
ISBN 9780201835953 ISBN-13 9780201835953
Presenting the 20th anniversary and first revised edition of a collection of essays on the management of computer programming projects, this work is an updated and enhanced re-release of the "Brooks classic". With the addition of 3 essays assessing the status of software project management, the authors "No Silver Bullet", is also included.
2014-11-23 Learning Agile: Understanding Scrum, XP, Lean, and Kanban O'Reilly Media
ISBN 1449331920 ISBN-13 9781449331924
Agile has revolutionized the way teams approach software development, but with dozens of agile methodologies to choose from, the decision to "go agile" can be tricky. This practical book helps you sort it out, first by grounding you in agile's underlying principles, then by describing four specific - and well-used - agile methods: Scrum, extreme programming (XP), Lean, and Kanban. Each method focuses on a different area of development, but they all aim to change your team's mindset - from individuals who simply follow a plan to a cohesive group that makes decisions together., Whether you're considering agile for the first time, or trying it again, you'll learn how to choose a method that best fits your team and your company. Understand the purpose behind agile's core values and principles Learn Scrum's emphasis on project management, self-organization, and collective commitment Focus on software design and architecture with XP practices such as test-first and pair programming Use Lean thinking to empower your team, eliminate waste, and deliver software fast Learn how Kanban's practices help you deliver great software by managing flow Adopt agile practices and principles with an agile coach
Software Engineering (Latest Edition), Ian Sommerville
All links given on moodle page
Java SDK and Eclipse IDE available on lab machines
BlueJ available on lab machines.
Electronic component kits, mobile phones and Arduino boards/kits may be used for mini-projects
It would be advantageous that this module was delivered in a second year of a programme.
The learner should have basic programming skills prior to commencement should as completing a programming module in a specific language such as Java, C Sharp or C.