SlideShare a Scribd company logo
CS351 Software Engineering
(Software Engineering in the Small)
Michael Oudshoorn and Ray Babcock
CS351 - Software Engineering (AY2004) 2
Introduction
• This course is taught by Michael Oudshoorn and Ray Babcock
• Ray’s consulting times are advertised on the web and outside
his door.
• Michael is available by appointment through Jeannette Radcliffe
in the Departmental Office
– It is difficult for the Head of Department to set fixed office
hours due to various meetings.
– Don’t let the need for an appointment stop you from seeking
help.
• A Bulletin Board is being set up for this subject and you are
encouraged to submit questions to it.
– Questions and answers are visible to everyone.
– You’re encouraged to read it regularly.
– It will also be used for class-wide announcements.
CS351 - Software Engineering (AY2004) 3
What is our background?
• Ray has many years of experience as a software engineer
working on various projects before becoming an academic.
• Michael has consulted to numerous companies in Australia, Asia
and the US. This consulting includes teaching various aspects
of Software Engineering to staff of these companies.
• Both have a detailed knowledge of what it takes to build large
software systems.
– Building the right system right!
• We plan to pass those skills onto you through the lectures etc,
and by providing you with realistic experience in your
assignment.
CS351 - Software Engineering (AY2004) 4
What is your background?
• Ideally, you should have completed:
– CS221 Computer Science I
– CS222 Computer Science II
– CS223 Computer Science III
– CS324 Computer Science IV
• You will be proficient at coding and the use of data structures
and algorithms.
CS351 - Software Engineering (AY2004) 5
What is the subject all about?
• CS351/352 examines software engineering in the small, You
should take both subjects. The follow-on subjects CS460/461
examine software engineering in the large.
• Software engineering in the small is those aspects of software
engineering that you can individually perform to produce good
high-quality software. The fine-detail of software engineering.
• Software engineering in the large is those aspects of software
engineering needed to design, develop and maintain large
complex systems. These are the management tools and the
group work that you participate in. The big-picture of software
engineering.
• We will discuss the skills needed to undertake software
engineering in the small in lectures and you will get the chance
to put them in practice through your assignments.
CS351 - Software Engineering (AY2004) 6
Objectives
• These courses (CS351 and CS352) aim to produce graduates
that:
– Are able to build and integrate complex systems
– Understand software engineering issues such as:
• Configuration management
• Effort estimation
• Subcontracting
• Verification and validation
• Software integration
• Maintenance
– Negotiate with others to procure and distribute software
– Adhere to software specifications and module interfaces
– Develop efficient and correct code
– To be able to work independently.
CS351 - Software Engineering (AY2004) 7
Our hopes
• By the time students finish this course they should have real-
world experiences that will see them well placed to get
employment after taking CS460/461.
• Students should be able to talk to employers about the problems
and issues involved in building large complex systems.
CS351 - Software Engineering (AY2004) 8
Course structure
• The course is paired with CS352 and students must complete
both courses in the same year.
• The course will consist of lectures, tutorials (an out of lab “in-lab”
small group discussion session) and a large project (CS352)
with several deliverables – more on this soon.
• The courses require verbal presentations and written
documentation to be produced.
• The project (CS352) is large and offers the opportunity to utilize
knowledge you have gained in other subjects, especially those
related to programming, data structures and algorithms.
– Indeed your general knowledge of computer science will
typically shape the design and implementation of the solution
you produce.
CS351 - Software Engineering (AY2004) 9
Indicative lecture topics
• Personal software process
• Software lifecycle
• Unified modelling language
• Design patterns
• standards
• Cost estimation
• Software quality assurance
• Verification and validation
• Program correctness proofs
• Time/space efficiency
• Configuration management
• Testing
• Maintenance
• Prototyping
• Subcontracting
• Software disasters
• Presentation and
demonstrations – tips
• Documentation and technical
writing
• Ethics
CS351 - Software Engineering (AY2004) 10
Corequisite
• CS351 Software Engineering must be taken with CS352
Software Engineering Project.
• This allows the lecture material to be delivered over Fall with
some warm-up exercises and a significant and interesting
project to be completed in Spring giving you a realistic
experience.
• The courses are a lot of work (more on this shortly), but it is a lot
of fun, and you gain many valuable skills which will assist you in
any large software project you get involved in.
CS351 - Software Engineering (AY2004) 11
Tutorials
• Rather than have many “in-labs” in this course, we will also have
a small number of tutorials. This will be an opportunity for you to
engage in discussion and share ideas with your class mates.
CS351 - Software Engineering (AY2004) 12
Indicative project
• The project for CS352 is challenging and large.
• You will be given a project description and various interfaces to
adhere to. You will need to select a fixed number (say 3) of the
modules to build yourself, and you will need to acquire the
remainder from your classmates.
• You will buy and sell the modules.
• You will need to maintain the software you sell.
• Each person will start the semester with 100 zorkmids to use for
the purchase of software.
• CS351 will have a number of small assignments to give you the
skills needed for CS352.
• We encourage you to experiment and try new things.
CS351 - Software Engineering (AY2004) 13
Individual-based
• The project is individual based. You will not be working as part
of a team, although you will be cooperating with other students
in the class.
• The aim is to develop appropriate skills for you to develop high
quality correct code.
• In CS352 we will add the requirement to behave in an
entrepreneurial manner through selling and buying your
software,
CS351 - Software Engineering (AY2004) 14
Assessment
• Assessment (CS351) is based on:
– Assignment (40%)
– Quizzes (10%)
– Midterm exam (20%)
– Final exam (30%)
• A serious attempt must be may at each component.
– In particular, a 60% average across each of the following is
required to pass the subject:
• Quizzes
• Project/assignments
• Exams
CS351 - Software Engineering (AY2004) 15
Resources available
• Web pages found at www.cs.montana.edu/courses/current/351.
• Visit the web pages often and check for updates.
• You will find:
– A bulletin board
– Lecture plan with links to the lecture slides
– Past exam paper (produced by Michael so you can see what
kinds of questions he might ask). NOTE that you may not be
able to answer all of the questions since it is an exam for a
different course!
CS351 - Software Engineering (AY2004) 16
Consulting help
• There is no TA to assist you in this course!
• Like the real-world, you need to demonstrate a degree of self
sufficiency and initiative.
• We expect you to solve most of your own problems!
– Read the textbook
– Use the library
– Use the internet
– Talk to your peers
• A consultant will be available in a consulting room to offer limited
assistance with coding problems.
CS351 - Software Engineering (AY2004) 17
Textbooks
• There are no fixed textbooks for this course. Like real-life, you
need to decide if you need one, and if so, which book best suits
you.
• We recommend the following as good books that cover the
much (but not all) of the lecture material.
– Robert Glass, “Facts and Fallacies of Software Engineering”,
Addison-Wesley.
– Evelyn Stiller & Cathie LeBlanc, “Project-Based Software
Engineering”, Addison-Wesley.
– Erich Gamma et al, “Design Patterns. Elements of Reusable
Object-Oriented Systems”, Addison-Wesley.
– John Bentley, “Programming Pearls”, Addison-Wesley
CS351 - Software Engineering (AY2004) 18
Other books
• Other books that are worth looking at (and are used in
CS460/461) include:
– Roger Pressman, “Software Engineering. A Practitioner’s
Approach”, McGraw-Hill
– Ian Sommerville, “Software Engineering”, Addison-Wesley
– Stephen Schach, “Classical and Object-Oriented Software
Engineering”, McGraw-Hill
– Shari Pfleeger, “Software Engineering. Theory and Practice”,
Prentice-Hall
CS351 - Software Engineering (AY2004) 19
Exam
• The final exam will be held in two parts at the regular lecture
times the week before the traditional exam week.
• The time slot during exam week will be used to go through the
exam and discuss solutions.
CS351 - Software Engineering (AY2004) 20
Our expectations of you
• Ask questions
• Interact with the instructors
• Use each other as a resource
• Exchange ideas
• Experiment
• You should take notes in lectures – the slides are merely our
notes and may sometime be terse!
CS351 - Software Engineering (AY2004) 21
Workload
• This is a 3 credit course. It should therefore occupy about 8-9
hours of your time each week.
• Lectures occupy 3 hours/week, which leaves about 5-6
hours/week on your project/assignments.
• You should expect to spend about 130 hours on this course over
the Fall semester.
– Remember we are looking for quality software so you are
likely to have to spend much more time testing and
validating your software than you have in other subjects!
CS351 - Software Engineering (AY2004) 22
Deadlines
• The assignments will have firm deadlines.
• Significant grades are lost for being late – 20% of the available
marks each day or part thereof.
– Very much like a penalty clause in a contract.
• Deadlines will be at a specific time and late penalties applies
from 1 second past the deadline. The system clock on esus will
be treated as the official clock for the course.
• No excuses will be accepted – including machine failure, busy
labs, …
CS351 - Software Engineering (AY2004) 23
Hint
• “Design for change” should be your mantra.
• Expect it, plan for it, design for it.
• Quality is an important part of any software system. To achieve
that you have to know what you are doing well and what you are
not doing well.
– Keep a journal and observe what you do.
– Record how long it takes to repair errors.
– Observe whee you introduced the error into the system.
– Think about how you could improve to be:
• More productive
• More accurate.
• More efficient.
CS351 - Software Engineering (AY2004) 24
What is software engineering?
• Software engineering is an engineering discipline which is
concerned with all aspects of software production from the early
stages of system specification through to maintaining a system
after it has gone into use, and finally retiring a system after it is
no longer useful.
• There are 2 key phrases here:
– Engineering discipline
– All aspects of software production
CS351 - Software Engineering (AY2004) 25
Engineering discipline
• Engineers make things work!
• They apply theories, methods and tools where they are
appropriate but they use them selectively and always try to
discover solutions to problems even when there are no
applicable theories and methods to support them.
• Engineering recognize that they have to work within
organizational and financial constraints, so they look for
solutions within those constraints.
CS351 - Software Engineering (AY2004) 26
All aspects of software production
• Software engineering is not just concerned with the technical
processes of software development but also with activities such
as project management and with the development of tools and
theories to support software production.
• This course will focus on those aspects of software engineering
that are concerned with software development, while
CS460/461 will look at the broader picture.
CS351 - Software Engineering (AY2004) 27
Software engineering vs computer
science
• Computer science is concerned with the theories and methods
which underlie computers and computer systems.
• Software engineering is concerned with the practical problems
of producing software.
• Some knowledge of computer science is needed to practice
software engineering.
• Ideally, all of software engineering should be underpinned by
theories of computer science, but in reality this is not always the
case.
– Software engineers must often use ad hoc approaches to
develop the software.
– Elegant theories of computer science cannot always be
applied to real, complex problems which require a software
solution.
CS351 - Software Engineering (AY2004) 28
Software engineerin vs systems
engineering
• Computer systems engineering is concerned with all aspects of
the development and evolution of complex systems where
software plays a major role.
• Systems engineering is concerned with hardware development,
policy and process design and system deployment as well as
software engineering.
• System engineers are involved in specifying the system,
defining its overall structure and then integrating te different
parts to create the finished system. They are less concerned
with te engineering of the system components (hardware,
software etc).
• Systems engineering is older than software engineering:
– Complex industrial systems such as trains, chemical plants.
• As the percentage of software in systems has increased,
software engineering techniques are finding their way into
systems engineering.
CS351 - Software Engineering (AY2004) 29
Software lifecycle
Requirements
Analysis
Design &
Specification
Coding &
Module Testing
Integration &
System Testing
Delivery &
Maintenance 50-70%
10-20%
10%
10-20%
CS351 - Software Engineering (AY2004) 30
Software lifecycle “student view”
Design &
Specification
Coding
Testing
(optional)
Hand it in
>90%
<10%

More Related Content

Similar to CS351-L1.ppt

Rex Sprint 0 - how build the data model with 2 BA and 3 IT architects
Rex Sprint 0 - how build the data model with 2 BA and 3 IT architectsRex Sprint 0 - how build the data model with 2 BA and 3 IT architects
Rex Sprint 0 - how build the data model with 2 BA and 3 IT architects
Jean-François Nguyen
 
My Career Portfolio - 2015
My Career Portfolio - 2015My Career Portfolio - 2015
My Career Portfolio - 2015
jtovar7
 
Introduction to Software Engineering Course
Introduction to Software Engineering CourseIntroduction to Software Engineering Course
Introduction to Software Engineering Course
Md. Shafiuzzaman Hira
 
DE PPT.pptx
DE PPT.pptxDE PPT.pptx
DE PPT.pptx
Priyanka Prajapati
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)
Peter Kofler
 
Engl317 syllabus hybrid_waters
Engl317 syllabus hybrid_watersEngl317 syllabus hybrid_waters
Engl317 syllabus hybrid_waters
kwaters23
 
SCM Patterns for Agile Architectures
SCM Patterns for Agile ArchitecturesSCM Patterns for Agile Architectures
SCM Patterns for Agile Architectures
Brad Appleton
 
Smes
SmesSmes
Software design for scientific applications
Software design for scientific applicationsSoftware design for scientific applications
Software design for scientific applications
Priyanka Lal
 
Strayer cis-417-week-4-assignment-2
Strayer cis-417-week-4-assignment-2Strayer cis-417-week-4-assignment-2
Strayer cis-417-week-4-assignment-2
infinityend3
 
L1-intro(2).pptx
L1-intro(2).pptxL1-intro(2).pptx
L1-intro(2).pptx
DanishMahmood23
 
CEN6016-Chapter1.ppt
CEN6016-Chapter1.pptCEN6016-Chapter1.ppt
CEN6016-Chapter1.ppt
SumitVishwambhar
 
CEN6016-Chapter1.ppt
CEN6016-Chapter1.pptCEN6016-Chapter1.ppt
CEN6016-Chapter1.ppt
NelsonYanes6
 
Engl317 syllabus hybrid_instructors
Engl317 syllabus hybrid_instructorsEngl317 syllabus hybrid_instructors
Engl317 syllabus hybrid_instructors
kwaters23
 
CIS 515 Effective Communication - tutorialrank.com
CIS 515  Effective Communication - tutorialrank.comCIS 515  Effective Communication - tutorialrank.com
CIS 515 Effective Communication - tutorialrank.com
Bartholomew22
 
Apex Enterprise Patterns Galore - Boston, MA dev group meeting 062719
Apex Enterprise Patterns Galore - Boston, MA dev group meeting 062719Apex Enterprise Patterns Galore - Boston, MA dev group meeting 062719
Apex Enterprise Patterns Galore - Boston, MA dev group meeting 062719
BingWang77
 
Tech and Product Management by Foursquare's PM
Tech and Product Management by Foursquare's PMTech and Product Management by Foursquare's PM
Tech and Product Management by Foursquare's PM
Product School
 
lecture1.pdf
lecture1.pdflecture1.pdf
lecture1.pdf
Tamer Nadeem
 
A Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven DevelopmentA Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven Development
Shawn Jones
 
Improve Product Design with High Quality Requirements
Improve Product Design with High Quality RequirementsImprove Product Design with High Quality Requirements
Improve Product Design with High Quality Requirements
Elizabeth Steiner
 

Similar to CS351-L1.ppt (20)

Rex Sprint 0 - how build the data model with 2 BA and 3 IT architects
Rex Sprint 0 - how build the data model with 2 BA and 3 IT architectsRex Sprint 0 - how build the data model with 2 BA and 3 IT architects
Rex Sprint 0 - how build the data model with 2 BA and 3 IT architects
 
My Career Portfolio - 2015
My Career Portfolio - 2015My Career Portfolio - 2015
My Career Portfolio - 2015
 
Introduction to Software Engineering Course
Introduction to Software Engineering CourseIntroduction to Software Engineering Course
Introduction to Software Engineering Course
 
DE PPT.pptx
DE PPT.pptxDE PPT.pptx
DE PPT.pptx
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)
 
Engl317 syllabus hybrid_waters
Engl317 syllabus hybrid_watersEngl317 syllabus hybrid_waters
Engl317 syllabus hybrid_waters
 
SCM Patterns for Agile Architectures
SCM Patterns for Agile ArchitecturesSCM Patterns for Agile Architectures
SCM Patterns for Agile Architectures
 
Smes
SmesSmes
Smes
 
Software design for scientific applications
Software design for scientific applicationsSoftware design for scientific applications
Software design for scientific applications
 
Strayer cis-417-week-4-assignment-2
Strayer cis-417-week-4-assignment-2Strayer cis-417-week-4-assignment-2
Strayer cis-417-week-4-assignment-2
 
L1-intro(2).pptx
L1-intro(2).pptxL1-intro(2).pptx
L1-intro(2).pptx
 
CEN6016-Chapter1.ppt
CEN6016-Chapter1.pptCEN6016-Chapter1.ppt
CEN6016-Chapter1.ppt
 
CEN6016-Chapter1.ppt
CEN6016-Chapter1.pptCEN6016-Chapter1.ppt
CEN6016-Chapter1.ppt
 
Engl317 syllabus hybrid_instructors
Engl317 syllabus hybrid_instructorsEngl317 syllabus hybrid_instructors
Engl317 syllabus hybrid_instructors
 
CIS 515 Effective Communication - tutorialrank.com
CIS 515  Effective Communication - tutorialrank.comCIS 515  Effective Communication - tutorialrank.com
CIS 515 Effective Communication - tutorialrank.com
 
Apex Enterprise Patterns Galore - Boston, MA dev group meeting 062719
Apex Enterprise Patterns Galore - Boston, MA dev group meeting 062719Apex Enterprise Patterns Galore - Boston, MA dev group meeting 062719
Apex Enterprise Patterns Galore - Boston, MA dev group meeting 062719
 
Tech and Product Management by Foursquare's PM
Tech and Product Management by Foursquare's PMTech and Product Management by Foursquare's PM
Tech and Product Management by Foursquare's PM
 
lecture1.pdf
lecture1.pdflecture1.pdf
lecture1.pdf
 
A Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven DevelopmentA Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven Development
 
Improve Product Design with High Quality Requirements
Improve Product Design with High Quality RequirementsImprove Product Design with High Quality Requirements
Improve Product Design with High Quality Requirements
 

More from DrBashirMSaad

Arabic Fonts character foreigners for learner
Arabic Fonts character foreigners for learnerArabic Fonts character foreigners for learner
Arabic Fonts character foreigners for learner
DrBashirMSaad
 
DS basics functions.ppt
DS basics functions.pptDS basics functions.ppt
DS basics functions.ppt
DrBashirMSaad
 
Algorithm analysis.pptx
Algorithm analysis.pptxAlgorithm analysis.pptx
Algorithm analysis.pptx
DrBashirMSaad
 
Searching Informed Search.pdf
Searching Informed Search.pdfSearching Informed Search.pdf
Searching Informed Search.pdf
DrBashirMSaad
 
procress and threads.ppt
procress and threads.pptprocress and threads.ppt
procress and threads.ppt
DrBashirMSaad
 
2.02.Data_structures_and_algorithms (1).pptx
2.02.Data_structures_and_algorithms (1).pptx2.02.Data_structures_and_algorithms (1).pptx
2.02.Data_structures_and_algorithms (1).pptx
DrBashirMSaad
 
1b-150720094704-lva1-app6892.pdf
1b-150720094704-lva1-app6892.pdf1b-150720094704-lva1-app6892.pdf
1b-150720094704-lva1-app6892.pdf
DrBashirMSaad
 
01_intro-cpp.ppt
01_intro-cpp.ppt01_intro-cpp.ppt
01_intro-cpp.ppt
DrBashirMSaad
 
Lecture 7-BinarySearchTrees.ppt
Lecture 7-BinarySearchTrees.pptLecture 7-BinarySearchTrees.ppt
Lecture 7-BinarySearchTrees.ppt
DrBashirMSaad
 
lec06-programming.ppt
lec06-programming.pptlec06-programming.ppt
lec06-programming.ppt
DrBashirMSaad
 
Matlab_Simulink_Tutorial.ppt
Matlab_Simulink_Tutorial.pptMatlab_Simulink_Tutorial.ppt
Matlab_Simulink_Tutorial.ppt
DrBashirMSaad
 
002 AWSSlides.pdf
002 AWSSlides.pdf002 AWSSlides.pdf
002 AWSSlides.pdf
DrBashirMSaad
 

More from DrBashirMSaad (12)

Arabic Fonts character foreigners for learner
Arabic Fonts character foreigners for learnerArabic Fonts character foreigners for learner
Arabic Fonts character foreigners for learner
 
DS basics functions.ppt
DS basics functions.pptDS basics functions.ppt
DS basics functions.ppt
 
Algorithm analysis.pptx
Algorithm analysis.pptxAlgorithm analysis.pptx
Algorithm analysis.pptx
 
Searching Informed Search.pdf
Searching Informed Search.pdfSearching Informed Search.pdf
Searching Informed Search.pdf
 
procress and threads.ppt
procress and threads.pptprocress and threads.ppt
procress and threads.ppt
 
2.02.Data_structures_and_algorithms (1).pptx
2.02.Data_structures_and_algorithms (1).pptx2.02.Data_structures_and_algorithms (1).pptx
2.02.Data_structures_and_algorithms (1).pptx
 
1b-150720094704-lva1-app6892.pdf
1b-150720094704-lva1-app6892.pdf1b-150720094704-lva1-app6892.pdf
1b-150720094704-lva1-app6892.pdf
 
01_intro-cpp.ppt
01_intro-cpp.ppt01_intro-cpp.ppt
01_intro-cpp.ppt
 
Lecture 7-BinarySearchTrees.ppt
Lecture 7-BinarySearchTrees.pptLecture 7-BinarySearchTrees.ppt
Lecture 7-BinarySearchTrees.ppt
 
lec06-programming.ppt
lec06-programming.pptlec06-programming.ppt
lec06-programming.ppt
 
Matlab_Simulink_Tutorial.ppt
Matlab_Simulink_Tutorial.pptMatlab_Simulink_Tutorial.ppt
Matlab_Simulink_Tutorial.ppt
 
002 AWSSlides.pdf
002 AWSSlides.pdf002 AWSSlides.pdf
002 AWSSlides.pdf
 

Recently uploaded

Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
Hironori Washizaki
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 

Recently uploaded (20)

Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 

CS351-L1.ppt

  • 1. CS351 Software Engineering (Software Engineering in the Small) Michael Oudshoorn and Ray Babcock
  • 2. CS351 - Software Engineering (AY2004) 2 Introduction • This course is taught by Michael Oudshoorn and Ray Babcock • Ray’s consulting times are advertised on the web and outside his door. • Michael is available by appointment through Jeannette Radcliffe in the Departmental Office – It is difficult for the Head of Department to set fixed office hours due to various meetings. – Don’t let the need for an appointment stop you from seeking help. • A Bulletin Board is being set up for this subject and you are encouraged to submit questions to it. – Questions and answers are visible to everyone. – You’re encouraged to read it regularly. – It will also be used for class-wide announcements.
  • 3. CS351 - Software Engineering (AY2004) 3 What is our background? • Ray has many years of experience as a software engineer working on various projects before becoming an academic. • Michael has consulted to numerous companies in Australia, Asia and the US. This consulting includes teaching various aspects of Software Engineering to staff of these companies. • Both have a detailed knowledge of what it takes to build large software systems. – Building the right system right! • We plan to pass those skills onto you through the lectures etc, and by providing you with realistic experience in your assignment.
  • 4. CS351 - Software Engineering (AY2004) 4 What is your background? • Ideally, you should have completed: – CS221 Computer Science I – CS222 Computer Science II – CS223 Computer Science III – CS324 Computer Science IV • You will be proficient at coding and the use of data structures and algorithms.
  • 5. CS351 - Software Engineering (AY2004) 5 What is the subject all about? • CS351/352 examines software engineering in the small, You should take both subjects. The follow-on subjects CS460/461 examine software engineering in the large. • Software engineering in the small is those aspects of software engineering that you can individually perform to produce good high-quality software. The fine-detail of software engineering. • Software engineering in the large is those aspects of software engineering needed to design, develop and maintain large complex systems. These are the management tools and the group work that you participate in. The big-picture of software engineering. • We will discuss the skills needed to undertake software engineering in the small in lectures and you will get the chance to put them in practice through your assignments.
  • 6. CS351 - Software Engineering (AY2004) 6 Objectives • These courses (CS351 and CS352) aim to produce graduates that: – Are able to build and integrate complex systems – Understand software engineering issues such as: • Configuration management • Effort estimation • Subcontracting • Verification and validation • Software integration • Maintenance – Negotiate with others to procure and distribute software – Adhere to software specifications and module interfaces – Develop efficient and correct code – To be able to work independently.
  • 7. CS351 - Software Engineering (AY2004) 7 Our hopes • By the time students finish this course they should have real- world experiences that will see them well placed to get employment after taking CS460/461. • Students should be able to talk to employers about the problems and issues involved in building large complex systems.
  • 8. CS351 - Software Engineering (AY2004) 8 Course structure • The course is paired with CS352 and students must complete both courses in the same year. • The course will consist of lectures, tutorials (an out of lab “in-lab” small group discussion session) and a large project (CS352) with several deliverables – more on this soon. • The courses require verbal presentations and written documentation to be produced. • The project (CS352) is large and offers the opportunity to utilize knowledge you have gained in other subjects, especially those related to programming, data structures and algorithms. – Indeed your general knowledge of computer science will typically shape the design and implementation of the solution you produce.
  • 9. CS351 - Software Engineering (AY2004) 9 Indicative lecture topics • Personal software process • Software lifecycle • Unified modelling language • Design patterns • standards • Cost estimation • Software quality assurance • Verification and validation • Program correctness proofs • Time/space efficiency • Configuration management • Testing • Maintenance • Prototyping • Subcontracting • Software disasters • Presentation and demonstrations – tips • Documentation and technical writing • Ethics
  • 10. CS351 - Software Engineering (AY2004) 10 Corequisite • CS351 Software Engineering must be taken with CS352 Software Engineering Project. • This allows the lecture material to be delivered over Fall with some warm-up exercises and a significant and interesting project to be completed in Spring giving you a realistic experience. • The courses are a lot of work (more on this shortly), but it is a lot of fun, and you gain many valuable skills which will assist you in any large software project you get involved in.
  • 11. CS351 - Software Engineering (AY2004) 11 Tutorials • Rather than have many “in-labs” in this course, we will also have a small number of tutorials. This will be an opportunity for you to engage in discussion and share ideas with your class mates.
  • 12. CS351 - Software Engineering (AY2004) 12 Indicative project • The project for CS352 is challenging and large. • You will be given a project description and various interfaces to adhere to. You will need to select a fixed number (say 3) of the modules to build yourself, and you will need to acquire the remainder from your classmates. • You will buy and sell the modules. • You will need to maintain the software you sell. • Each person will start the semester with 100 zorkmids to use for the purchase of software. • CS351 will have a number of small assignments to give you the skills needed for CS352. • We encourage you to experiment and try new things.
  • 13. CS351 - Software Engineering (AY2004) 13 Individual-based • The project is individual based. You will not be working as part of a team, although you will be cooperating with other students in the class. • The aim is to develop appropriate skills for you to develop high quality correct code. • In CS352 we will add the requirement to behave in an entrepreneurial manner through selling and buying your software,
  • 14. CS351 - Software Engineering (AY2004) 14 Assessment • Assessment (CS351) is based on: – Assignment (40%) – Quizzes (10%) – Midterm exam (20%) – Final exam (30%) • A serious attempt must be may at each component. – In particular, a 60% average across each of the following is required to pass the subject: • Quizzes • Project/assignments • Exams
  • 15. CS351 - Software Engineering (AY2004) 15 Resources available • Web pages found at www.cs.montana.edu/courses/current/351. • Visit the web pages often and check for updates. • You will find: – A bulletin board – Lecture plan with links to the lecture slides – Past exam paper (produced by Michael so you can see what kinds of questions he might ask). NOTE that you may not be able to answer all of the questions since it is an exam for a different course!
  • 16. CS351 - Software Engineering (AY2004) 16 Consulting help • There is no TA to assist you in this course! • Like the real-world, you need to demonstrate a degree of self sufficiency and initiative. • We expect you to solve most of your own problems! – Read the textbook – Use the library – Use the internet – Talk to your peers • A consultant will be available in a consulting room to offer limited assistance with coding problems.
  • 17. CS351 - Software Engineering (AY2004) 17 Textbooks • There are no fixed textbooks for this course. Like real-life, you need to decide if you need one, and if so, which book best suits you. • We recommend the following as good books that cover the much (but not all) of the lecture material. – Robert Glass, “Facts and Fallacies of Software Engineering”, Addison-Wesley. – Evelyn Stiller & Cathie LeBlanc, “Project-Based Software Engineering”, Addison-Wesley. – Erich Gamma et al, “Design Patterns. Elements of Reusable Object-Oriented Systems”, Addison-Wesley. – John Bentley, “Programming Pearls”, Addison-Wesley
  • 18. CS351 - Software Engineering (AY2004) 18 Other books • Other books that are worth looking at (and are used in CS460/461) include: – Roger Pressman, “Software Engineering. A Practitioner’s Approach”, McGraw-Hill – Ian Sommerville, “Software Engineering”, Addison-Wesley – Stephen Schach, “Classical and Object-Oriented Software Engineering”, McGraw-Hill – Shari Pfleeger, “Software Engineering. Theory and Practice”, Prentice-Hall
  • 19. CS351 - Software Engineering (AY2004) 19 Exam • The final exam will be held in two parts at the regular lecture times the week before the traditional exam week. • The time slot during exam week will be used to go through the exam and discuss solutions.
  • 20. CS351 - Software Engineering (AY2004) 20 Our expectations of you • Ask questions • Interact with the instructors • Use each other as a resource • Exchange ideas • Experiment • You should take notes in lectures – the slides are merely our notes and may sometime be terse!
  • 21. CS351 - Software Engineering (AY2004) 21 Workload • This is a 3 credit course. It should therefore occupy about 8-9 hours of your time each week. • Lectures occupy 3 hours/week, which leaves about 5-6 hours/week on your project/assignments. • You should expect to spend about 130 hours on this course over the Fall semester. – Remember we are looking for quality software so you are likely to have to spend much more time testing and validating your software than you have in other subjects!
  • 22. CS351 - Software Engineering (AY2004) 22 Deadlines • The assignments will have firm deadlines. • Significant grades are lost for being late – 20% of the available marks each day or part thereof. – Very much like a penalty clause in a contract. • Deadlines will be at a specific time and late penalties applies from 1 second past the deadline. The system clock on esus will be treated as the official clock for the course. • No excuses will be accepted – including machine failure, busy labs, …
  • 23. CS351 - Software Engineering (AY2004) 23 Hint • “Design for change” should be your mantra. • Expect it, plan for it, design for it. • Quality is an important part of any software system. To achieve that you have to know what you are doing well and what you are not doing well. – Keep a journal and observe what you do. – Record how long it takes to repair errors. – Observe whee you introduced the error into the system. – Think about how you could improve to be: • More productive • More accurate. • More efficient.
  • 24. CS351 - Software Engineering (AY2004) 24 What is software engineering? • Software engineering is an engineering discipline which is concerned with all aspects of software production from the early stages of system specification through to maintaining a system after it has gone into use, and finally retiring a system after it is no longer useful. • There are 2 key phrases here: – Engineering discipline – All aspects of software production
  • 25. CS351 - Software Engineering (AY2004) 25 Engineering discipline • Engineers make things work! • They apply theories, methods and tools where they are appropriate but they use them selectively and always try to discover solutions to problems even when there are no applicable theories and methods to support them. • Engineering recognize that they have to work within organizational and financial constraints, so they look for solutions within those constraints.
  • 26. CS351 - Software Engineering (AY2004) 26 All aspects of software production • Software engineering is not just concerned with the technical processes of software development but also with activities such as project management and with the development of tools and theories to support software production. • This course will focus on those aspects of software engineering that are concerned with software development, while CS460/461 will look at the broader picture.
  • 27. CS351 - Software Engineering (AY2004) 27 Software engineering vs computer science • Computer science is concerned with the theories and methods which underlie computers and computer systems. • Software engineering is concerned with the practical problems of producing software. • Some knowledge of computer science is needed to practice software engineering. • Ideally, all of software engineering should be underpinned by theories of computer science, but in reality this is not always the case. – Software engineers must often use ad hoc approaches to develop the software. – Elegant theories of computer science cannot always be applied to real, complex problems which require a software solution.
  • 28. CS351 - Software Engineering (AY2004) 28 Software engineerin vs systems engineering • Computer systems engineering is concerned with all aspects of the development and evolution of complex systems where software plays a major role. • Systems engineering is concerned with hardware development, policy and process design and system deployment as well as software engineering. • System engineers are involved in specifying the system, defining its overall structure and then integrating te different parts to create the finished system. They are less concerned with te engineering of the system components (hardware, software etc). • Systems engineering is older than software engineering: – Complex industrial systems such as trains, chemical plants. • As the percentage of software in systems has increased, software engineering techniques are finding their way into systems engineering.
  • 29. CS351 - Software Engineering (AY2004) 29 Software lifecycle Requirements Analysis Design & Specification Coding & Module Testing Integration & System Testing Delivery & Maintenance 50-70% 10-20% 10% 10-20%
  • 30. CS351 - Software Engineering (AY2004) 30 Software lifecycle “student view” Design & Specification Coding Testing (optional) Hand it in >90% <10%