
Software Engineering Tools and Predictions for Success
Explore the world of software engineering through the lens of essential tools and insightful predictions for success in your first job. From software analysis and design to on-the-job learning, this course equips you with the skills needed to thrive in a fast-paced environment. Delve into the nuances of communication, reasoning, and practical experiences that will set you apart in the industry.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
The Last Lecture SENG 301
Calendar Description Software Analysis and Design - Introduction to developing large- scale, quality software, from analysis of requirements, through design, implementation, and testing. Introduction to design for non-functional properties of software. Emphasis on individual skills.
My Take One day soon, you re going to get a job. For many of you, this will be a be some kind of software engineering position. I wanted this use this course as a mechanism to give you the tools to succeed at that first job. software tools thinking/reasoning tools communication tools experience with the circumstances familiarity with the lingo
Predictions In 90% of your first software engineering positions, there is not meaningful on-boarding ; instead, it s: Hey Blair, can you get Dale up to speed? Blair is happy to show you where to get the free stationery and drinks, and answer some simple questions about the work; however, Blair also needs to earn a paycheque, and so does not have a vested interest in walking you through everything If you re lucky, there s some documentation lying around in a repo somewhere; likely, it is out of date (over a half year old) Your first major responsibility will be either: (a) maintaining the build, (b) building tests, or (c) [if you re lucky] building some simple extension Oh, and you ll get/need to learn a new language (or several of them)
Predictions You will be learning on the fly time with colleagues is limited, so need high-bandwidth tools to communicate you will need to be able to interpret figures and diagrams and text (in particular, the abstractions) you will need to be see variances between this and the system, and be able to infer what the consequences of these decisions are you will probably not get to write a main() function you will probably get to learn multiple languages on the fly
Doing the job: interacting with the tools around code C#/.NET Framework: for many, your first time with C# and the .NET Framework Visual Studio IDE: one of the best put-together IDEs on the market well-thought through tools, and a meaningful UX team that is actively thinking about your experience Debugger: a fully-fledged visual debugger (printfs can only get you so far!) Integrated Testing: unit testing through language extensions and built- in tools GitHub: version management not as much as in other situations, but at least a taste Slack: developer communication tool
Thinking/Reasoning Tools Complexity is the norm with software that does more than trivial things (sort of by definition) Abstraction: simplification by hiding information Structure: clarifying interactions between components Layers: repeat this process upwards and downwards Consistency: follow simple rules so people know what to expect Two parts to this: understanding that others have (hopefully) used these approaches; your using it as you build and architect code yourself
Thinking/Reasoning Tools Design principles: low coupling, high cohesion, information hiding, Design patterns: fa ade, adapter, observer, singleton, factory Quiz 2 Architectural styles: client-server, pipes-and-filters, model-view- controller, layered, service-oriented architecture You may not remember all of the details in the future, but the hope is that it has changed the way you can think about code in the future
Communication Tools All the UML diagrams we learned and drew: structural diagrams, behavioural diagrams, etc. Quiz 1 In practice, few people draw them for documentation purposes. If they do, they tend not to be formal. Rather, the boxes and arrows are used for communicative purposes i.e. as part of conversation to help communicate a point rather than to talk about everything.
Circumstances Being thrown into overwhelming situations with way too much code to understand what was going on you overcame this in A1 and A2 A1: 75% med A2: 90% med Not controlling the flow of execution (i.e. no main function) you overcame this in A1, A2 and A3
Circumstances Writing test code to try to break things to some extent, A3 Refactoring a poor design into a slightly better design A4 Dealing with what seems like an overwhelming solution space A1, A2, A4
The Lingo Software development process models Design patterns Architectural styles Evolvability , Extensibility , Refactoring Terms and ideas that no one will ever quiz you on, and you can look up, but now you have at least a frame of reference for many of these ideas
My Take One day soon, you re going to get a job. For many of you, this will be a be some kind of software engineering position. I wanted this use this course as a mechanism to give you the tools to succeed at that first job. software tools thinking/reasoning tools communication tools experience with the circumstances familiarity with the lingo
Exams A bit of a necessary evil you re paying for this, and others rely on our expertise in assessing your ability to retain the knowledge we ve given you/reason with the ideas I don t take pleasure in exams; regurgitation is a bit inane given that we can easily look up information on Google My hope is that you will find the final a fun opportunity to show me what you have been able to understand and take away from the course the ability to reason is not something you can look up on Google
Final All multiple choice Bring a pencil, and your student ID You can bring a single cheat sheet (double sided). Ensure that it is hand-written (please don t bother shrinking down slides, etc. kind of a waste of time) Coverage is entire course; weighting is about 35% pre-midterm, 65% post-midterm
Major Takeaways I don t expect you to remember everything I don t expect you to have gotten everything right rather, view each assignment, quiz, etc. as a learning opportunity (i.e. Oh! THAT S what s going on. ) The idea is to expand your mind and the way you think about code You tackled and overcame massive code bases you can do it again You learned a new language and a new set of tools while trying to do something you can do it again You learned how to reason and talk about a reasonably-sized system (i.e. the Vending Machine) with diagrams you can do it again