ICS 52 Introduction to Software Engineering Lecture Notes





































- Slides: 37
ICS 52: Introduction to Software Engineering Lecture Notes for Summer Quarter, 2003 Michele Rousseau Set 1 Partially based on lecture notes written by Ian Sommerville, Richard N. Taylor, André van der Hoek, Dan Frost & Doris Tonne. Duplication of course material for any commercial purpose without the written permission of the lecturers is prohibited. Topic 1
Today’s Lecture n n Administrative details Introduce software engineering and to explain its importance Topic 1 2
Who Is Who? n Instructor – Michele Rousseau (michele@ics. uci. edu) – Office hrs. (ICS 2 - 227): TBA – for the first week by appointment n Teaching assistants – Girish Suryanarayana(gsuryana@uci. edu) Topic 1 3
Course Materials n Required textbook – Sommerville Software Engineering n Recommended textbooks – Brooks, F. The Mythical Man-Month – Schach Classical and Object-Oriented Software Engineering – Horstmann, Cornell Core Java 2, Volume 1: Fundamentals Topic 1 4
Add/Drop Policy n Second week of classes – Deadline to add n Second week of classes – Deadline to drop Topic 1 5
How to be successful in ICS 52 n Attend class – Much is covered that is not in the textbook • Material is core part of the exams • What is said in class supercedes all else – Official place for announcements n Visit course Web site on a regular basis – Assignments – Copy of announcements n n n Read e-mail frequently Use discussion section and office hours Ask questions Topic 1 6
Help each other but don’t share work n You cheat, you fail! – Final grade is “F”, irrespective of partial grades – Project, midterm, final n To avoid being a cheater – Always do your work by yourself – Do not borrow work – Do not lend work • Do not put your work on the Web – Use good Judgment n Your TA is your friend, but your friend is not your TA – Your friend’s help may be cheating Topic 1 7
Assignments (1) n n n If a deadline is on a class day it is due 1 hour before class starts Turn in to distribution center before class Hand in on time – You do get sufficient time • Course is six credits – Do not wait until the last minute • Assignments take time • Printers break, paper runs out • You are not the only one n No late assignments Topic 1 8
Assignments (2) n Package properly – Every assignment… • • …lists your student ID …lists your name …has a cover page with class title and assignment # …is properly stapled – No handwriting – Floppies (when needed) are properly attached – Failure results in loss of points n Do no more and do no less Topic 1 9
Grading n n n Performed by TA Might be double-checked by Me Disagreements – Resolve with TA first, then with professor – The “points-game” does not work • TA and professor have limited time • TAs are human too • Double check before you bring it in n Always check your (partial) grades Topic 1 10
Exceptions n Only granted by professor – Contact the professor as soon as possible n Valid reasons – Serious illness, accident, family emergency, etc. n Not-so-valid reasons – “No ink in my printer”, “didn’t know it was due today”, “my computer crashed”, “couldn’t find parking”, etc. Topic 1 11
Questions n When in doubt – Ask the TA – Ask the professor • Open door policy n n E-mail questions Questions will generally be answered within 24 hours (except weekends) – So don’t leave your questions to the day before an assignment is due Topic 1 12
Miscellaneous n ICS 52 mimics the real-world – Package your homework properly – Use proper language and proper form n You get out of ICS 52 what you put into it – Class is intense, you need to participate from the beginning – playing “catch up” is not recommended – Attend discussion section (when it is being held) – Follow instructions – Read and study the textbook and slides – Help is available, do not be afraid to ask questions Topic 1 13
Focus – Your detailed knowledge and understanding of the concepts employed in software engineering – Your ability to practice software engineering Topic 1 14
Assignment and grading Project Special Requirements Design Implementation Testing 50% 3% 15% 12% 10% Midterm 20% Final 30% Topic 1 15
What is software? n n Computer programs and associated documentation Software products may be developed for a particular customer or may be developed for a general market Topic 1 16
What is Software Engineering? n “A discipline that deals with the building of software systems which are so large that they are built by a team or teams of engineers. ” [Ghezzi, Jazayeri, Mandrioli] n “Multi-person construction of multi-version software. ” [Parnas] n A discipline whose aim is the production of fault-free software, delivered on-time and within budget, that satisfies the user’s needs. Furthermore, the software must be easy to modify when the user’s needs change. ” [Schach] n Software engineering is concerned with theories, methods and tools for professional software development [Sommerville] Topic 1 17
What is Software Engineering? (2) n n Software engineering is an engineering discipline which is concerned with all aspects of software production Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints and the resources available Topic 1 18
Why Software Engineering? n To reduce the Software Crisis (Brooks) – Late – Over Budget – Wrong product n To reduce Costs and increase quality Topic 1 19
Software Costs n n Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware cost Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs Topic 1 20
Software Engineering is like… Throwing a party. n Building a house or building. n Getting married. n Writing a textbook. n Creating laws. n Any complex project involving many people and multiple phases. n Topic 1 21
Software Engineering is like Architecture: Requirements, sketch, blueprints, construction n Strengths of analogy: n – Phasing of activities, intermediate products – User input and review, mostly for req’s and sketch – User only minimally involved in construction n Weaknesses of analogy: – Lots of domain knowledge on the part of the consumer – 10, 000 years of know-how – Progress easily measurable Topic 1 22
Software Engineering is like Legislation n Legislation: Commission, committee, congress, bureaucracy n Strengths of analogy: – Intangible product – Unforeseen consequences – Difficult to measure progress – Laws get "patched" – Importance of careful reviews highlighted n Weakness of analogy: – Difficult to test laws – Legislation not executed predictably Topic 1 23
Software Engineering is not programming Small project You Build what you want One product Few sequential changes Short-lived Cheap Small consequences Programming Topic 1 Huge project Teams Build what they want Family of products Many parallel changes Long-lived Costly Large consequences Engineering 24
Differences from Programming n Software Engineering includes – determining what to build – eliciting requirements from user(s) – organizing teams to build systems cooperatively – designing a software architecture – analysis and design of modules – testing – lifecycle system engineering – writing documentation Topic 1 25
The five P’s of Software Engineering n n n People - who develop, manage, and run the software Product - the software itself Project - the activity of creating the software Process - the manner in which the project proceeds Professionalism - the attitude of all involved Topic 1 26
From Programming to Engineering n People – Who else would do the work? – Range from novice to very experienced n Processes – To organize and manage the efforts of individuals – Range from informal to very formal n Tools – To support the people and the processes – Range from simple to very advanced Topic 1 People + Processes + Tools Product 27
People n n The single most important factor in the success/failure of a product Scarce resource – Quality – Suitability – Cost n Many different kinds of people – Managers – Programmers – Technical writers Topic 1 28
Processes n n Essential to achieve a quality product (Time is a) scarce resource – Quality – Suitability – Cost n Many different kinds of processes – Bug tracking – Change approval – Quality assurance Topic 1 Focus of ICS 52 29
Tools n n Needed to support people and processes Scarce resource – Quality – Suitability – Cost n Many different kinds of tools – – Topic 1 Drawing Analysis Project management Source code management people support process support 30
Product n n Result of applying people, processes, and tools Consists of many deliverables – – – n Software Documentation User manuals Test cases Design documents Intrinsic qualities – Safety – Reliability – User friendliness Topic 1 31
People, Processes, Tools, Products n Products are always the eventual goal – Selling products creates revenue – Selling good products creates lots of revenue – Selling bad products creates little revenue n People, processes, and tools are retained by organization – Build a reputation through the quality of products – Create organizational culture – Important to keep the team intact Topic 1 People + Processes + Tools Product 32
Choose the Right Solution Hawaii Tijuana Europe Topic 1 33
Matters of Scale n Choose problem appropriate technique for – elephant gun to kill a fly? – fly-swatter to ward off an elephant? Topic 1 34
What Makes It Engineering? n Project plans – – – n Teams are assembled Processes are designed Tools are purchased Goals are established Difficulties are anticipated Tradeoffs – Limited resources n Repetition – Same basic principles hold in many different settings Topic 1 35
Components of Software Engineering Science: empirical studies; theories characterizing aggregate system behavior (e. g. reliability) n Management: organizing teams, directing activities, correcting problems n Human factors / psychology: user task understanding and modeling; ergonomics in user interface design n Engineering: tradeoffs, canonical solutions to typical problems, skill and art n – A common quip: “pick any two: ” • Good, soon, cheap • Scalability, functionality, performance Topic 1 36
Your First Tasks 1. 2. Be proficient in Java 1. 4 Be familiar with Microsoft tools – Microsoft Word, Power. Point 3. 4. Read and study slides of this lecture Read and study Chapters 1 – 3 of Sommerville Topic 1 No discussion until announced in class 37