CS 351 Software Engineering Software Engineering in the

  • Slides: 31
Download presentation
CS 351 Software Engineering (Software Engineering in the Small) Michael Oudshoorn and Ray Babcock

CS 351 Software Engineering (Software Engineering in the Small) Michael Oudshoorn and Ray Babcock CS 351 - Software Engineering (AY 2005)

Introduction • • This course is taught by Michael Oudshoorn and Ray Babcock Ray’s

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. – You’re also encouraged to respond to questions. – It will also be used for class-wide announcements. CS 351 - Software Engineering (AY 2005) 2

What is our background? • • Ray has many years of experience as a

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. CS 351 - Software Engineering (AY 2005) 3

What is your background? • • • Prerequisites for the course are: – CS

What is your background? • • • Prerequisites for the course are: – CS 221 Data Structures – CS 223 Advanced Data Structures and Algorithms – ENGL 223 Technical Writing It is also desirable, but not essential, that you have completed or are concurrently taking: – CS 324 Programming Techniques You will need to be proficient at coding and the use of data structures and algorithms. CS 351 - Software Engineering (AY 2005) 4

What is the subject all about? • • CS 351/352 examines software engineering in

What is the subject all about? • • CS 351/352 examines software engineering in the small, You should take both subjects. The follow-on subjects CS 460/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 highquality 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. CS 351 - Software Engineering (AY 2005) 5

Objectives • These courses (CS 351 and CS 352) aim to produce graduates that:

Objectives • These courses (CS 351 and CS 352) 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. CS 351 - Software Engineering (AY 2005) 6

Our hopes • • By the time students finish this course they should have

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 CS 460/461. Students should be able to talk to employers about the problems and issues involved in building large complex systems. CS 351 - Software Engineering (AY 2005) 7

Course structure • • The course is paired with CS 352 and students must

Course structure • • The course is paired with CS 352 and students must complete both courses in the same year. The course will consist of lectures, tutorials (small group discussion session) and a large project(s) (CS 352) with several deliverables – more on this soon. The courses require verbal presentations and written documentation to be produced. The projects in CS 352 are interesting and significant. They offer 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(s) you produce. CS 351 - Software Engineering (AY 2005) 8

Indicative lecture topics • • • Personal software process Software lifecycle Unified modelling language

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 CS 351 - Software Engineering (AY 2005) 9

Corequisite • • • CS 351 Software Engineering must be taken with CS 352

Corequisite • • • CS 351 Software Engineering must be taken with CS 352 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. CS 351 - Software Engineering (AY 2005) 10

Tutorials • Rather than have many “in-labs” in this course, we will also have

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. CS 351 - Software Engineering (AY 2005) 11

Indicative project • • The project for CS 352 is challenging and large. You

Indicative project • • The project for CS 352 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. You will need to market the software you build. Each person will start the semester with 100 zorkmids to use for the purchase of software. CS 351 will have a number of small assignments to give you the skills needed for CS 352. We encourage you to experiment and try new things. CS 351 - Software Engineering (AY 2005) 12

Individual-based • • The project is individual based. You will not be working as

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 CS 352 we will add the requirement to behave in an entrepreneurial manner through selling and buying your software. At all times in CS 351 and CS 352, we expect you to behave in a professional and ethical manner. CS 351 - Software Engineering (AY 2005) 13

Assessment • • Assessment (CS 351) is based on: – Assignment (40%) – Quizzes

Assessment • • Assessment (CS 351) 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 50% average across each of the following is required to pass the subject: • Quizzes • Project/assignments • Exams CS 351 - Software Engineering (AY 2005) 14

Resources available • • • Web pages found at www. cs. montana. edu/teaching/351. Visit

Resources available • • • Web pages found at www. cs. montana. edu/teaching/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 papers – the Fall 2003 exam and a previous exam set by Michael at the University of Adelaide so you can get a feel for the style 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! CS 351 - Software Engineering (AY 2005) 15

Consulting help • • • There is one TA to assist you in this

Consulting help • • • There is one TA to assist you in this course. His name is Todd Trotter. You should use him to help you with lecture material and assignments. He has significant relevant real-world experience and is likely to be a valuable asset to you. 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 CS 351 - Software Engineering (AY 2005) 16

Textbooks • • There are no fixed textbooks for this course. Like real-life, you

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. – Erich Gamma et al, “Design Patterns. Elements of Reusable Object-Oriented Systems”, Addison-Wesley. – John Bentley, “Programming Pearls”, Addison-Wesley – John Bentley, “More Programming Pearls”, Addison-Wesley – Robert Glass, “Facts and Fallacies of Software Engineering”, Addison-Wesley. – Evelyn Stiller & Cathie Le. Blanc, “Project-Based Software Engineering”, Addison-Wesley. CS 351 - Software Engineering (AY 2005) 17

Other books • Other books that are worth looking at (and are used in

Other books • Other books that are worth looking at (and are used in CS 460/461) include: – Roger Pressman, “Software Engineering. A Practitioner’s Approach”, Mc. Graw-Hill – Ian Sommerville, “Software Engineering”, Addison-Wesley – Stephen Schach, “Classical and Object-Oriented Software Engineering”, Mc. Graw-Hill – Shari Pfleeger, “Software Engineering. Theory and Practice”, Prentice-Hall CS 351 - Software Engineering (AY 2005) 18

Exam • • The mid-term exam will be held approximately half way through the

Exam • • The mid-term exam will be held approximately half way through the course. It will cover material seen up until that point. The final exam will be held during the exam week. It will cover the whole of the course. All exams may cover all material covered in this course up to that stage: – Lectures – Assignments – Tutorials – Readings – Discussions Lecture attendance is strongly recommended. Note that the lecture slides made available on the web are merely the instructors notes – they are not a substitute for you taking your own notes during class, or reading textbooks, etc. CS 351 - Software Engineering (AY 2005) 19

Our expectations of you • • Ask questions Interact with the instructors Use the

Our expectations of you • • Ask questions Interact with the instructors Use the TA associated with this course. Use each other as a resource Exchange ideas Experiment You should take notes in lectures – the slides are merely our notes and may sometimes be terse! CS 351 - Software Engineering (AY 2005) 20

Workload • • • This is a 3 credit course. It should therefore occupy

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! CS 351 - Software Engineering (AY 2005) 21

Deadlines • • The assignments will have firm deadlines. Significant grades are lost for

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, … CS 351 - Software Engineering (AY 2005) 22

Equipment • • While we will make every attempt in this course to allow

Equipment • • While we will make every attempt in this course to allow you to develop the solutions to the assignments etc on your home PC, laptop, favorite operating system etc, remember that the final version that is submitted must run on the equipment and environment specified. If one is not specified, then it defaults to running on esus with the linux operating system and must be written in Java compliant with the compiler available on that machine at the time of submission. As a result, if you develop your software on a different platform etc, you should plan to complete it early so that you have time to port it to the appropriate platform and test that it works as expected. CS 351 - Software Engineering (AY 2005) 23

Hint • • • “Design for change” should be your mantra. Expect it, plan

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 when you introduced the error into the system. – Think about how you could improve to be: • More productive • More accurate. • More efficient. CS 351 - Software Engineering (AY 2005) 24

What is software engineering? • • Software engineering is an engineering discipline which is

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 CS 351 - Software Engineering (AY 2005) 25

Engineering discipline • • • Engineers make things work! They apply theories, methods and

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. CS 351 - Software Engineering (AY 2005) 26

All aspects of software production • • Software engineering is not just concerned with

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 CS 460/461 will look at the broader picture. CS 351 - Software Engineering (AY 2005) 27

 • • Software engineering vs computer science Computer science is concerned with theories

• • Software engineering vs computer science Computer science is concerned with 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. CS 351 - Software Engineering (AY 2005) 28

 • • • Software engineerin vs systems engineering Computer systems engineering is concerned

• • • 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. CS 351 - Software Engineering (AY 2005) 29

Software lifecycle Requirements Analysis Design & Specification Coding & Module Testing 10% 10 -20%

Software lifecycle Requirements Analysis Design & Specification Coding & Module Testing 10% 10 -20% Integration & 10 -20% System Testing Delivery & Maintenance 50 -70% CS 351 - Software Engineering (AY 2005) 30

Software lifecycle “student view” Design & Specification Coding >90% <10% Testing (optional) Hand it

Software lifecycle “student view” Design & Specification Coding >90% <10% Testing (optional) Hand it in CS 351 - Software Engineering (AY 2005) 31