300 likes | 317 Views
CS351 Software Engineering (Software Engineering in the Small). Michael Oudshoorn and Ray Babcock. Introduction. This course is taught by Michael Oudshoorn and Ray Babcock Ray’s consulting times are advertised on the web and outside his door.
E N D
CS351 Software Engineering(Software Engineering in the Small) Michael Oudshoorn and Ray Babcock
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)
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)
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)
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)
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)
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)
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)
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 Indicative lecture topics CS351 - Software Engineering (AY2004)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
Software lifecycle Requirements Analysis Design & Specification Coding & Module Testing 10% 10-20% Integration & System Testing 10-20% Delivery & Maintenance 50-70% CS351 - Software Engineering (AY2004)
Software lifecycle “student view” Design & Specification Coding >90% <10% Testing (optional) Hand it in CS351 - Software Engineering (AY2004)