Welcome to CS 410 – Introduction to Software Engineering Spring 2014 Instructor: Marc Pomplun January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 1 Instructor – Marc Pomplun Office: S-3-171 Lab: S-3-135 Office Hours: Tuesdays 4:30pm – 5:30pm Thursdays 6:45pm – 8:45pm Phone: 287-6443 (office) 287-6485 (lab) E-Mail: marc@cs.umb.edu Website: http://www.cs.umb.edu/~marc/cs410/ January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 2 The Visual Attention Lab Eye movement research January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 3 The new EyeLink-2K System January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 4 Example: Distribution of Visual Attention January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 5 Selectivity in Complex Scenes January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 6 Selectivity in Complex Scenes January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 7 Selectivity in Complex Scenes January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 8 Selectivity in Complex Scenes January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 9 Selectivity in Complex Scenes January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 10 Selectivity in Complex Scenes January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 11 Modeling of Brain Functions January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 12 Modeling of Brain Functions unit and connection in the interpretive network layer l +1 unit and connection in the gating network unit and connection in the top-down bias network layer l layer l -1 January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 13 Computer Vision: January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 14 Human-Computer Interfaces: January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 15 Now back to CS 410: Textbook (available at the UMB Bookstore): C++ programming with design patterns revealed. By Thomasz Müldner. Addison-Wesley, ISBN 0-201-72231-3 Course materials on the Web: http://www.cs.umb.edu/~marc/cs410/ (contains all kinds of course information and also my slides in PPT and PDF formats, updated after each session) January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 16 Mailing List Please use the ‘apply’ command on the UNIX system to register for our mailing list (CS410, section 1). I expect everyone to be on the list, because I will use it to make announcements. Also, I would like to encourage you to use the list for discussion. If you have a question that you think is important for many students in the course, please send it to the list at cs410-1@cs.umb.edu, and I will respond to the list. Send all other questions to me. For these questions, I will send my reply only to you. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 17 Your Evaluation • 3 sets of exercises each set 3.33% 10% (only individual submissions allowed) • software project 40% (groups of 3 or 4 students) • midterm (1.5 hours) 20% • final exam (2.5 hours) 30% January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 18 Grading For the assignments, exams and your course grade, the following scheme will be used to convert percentages into letter grades: 95%: A 90%: A- 86%: B+ 82%: B 78%: B- 74%: C+ 70%: C 66%: C- 62%: D+ 56%: D 50%: D- 50%: F January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 19 Complaints about Grading If you think that the grading of your assignment or exam was unfair, • write down your complaint (handwriting is OK), • attach it to the assignment or exam, • and give it to me or put it in my mailbox. I will re-grade the whole exam/assignment and return it to you in class. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 20 Software Engineering • • • • • • 1968: Conference on ‘software crisis’. Delivery of software was sometimes years late. Its cost was often much higher than predicted. Many programs were unreliable. Maintenance of software tended to be difficult. The software often poorly performed the task for which it was designed. The term ‘software engineering’ was coined. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 21 Questions about Software Engineering Q: What is software engineering? A: Software engineering is an engineering discipline which is concerned with all aspects of software production, for example, software specification, development, validation and evolution. Q: What is the difference between software engineering and computer science? A: Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 22 Problems: Complexity and Change Complexity: • Software systems can include a huge number of functions and components. • Many participants with usually different backgrounds participate in the development of software systems. • Often no single person can understand the whole system. • Sometimes systems become so hard to understand that they are never finished: ‘vaporware’. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 23 Problems: Complexity and Change Change: • Requirements are updated when errors are discovered and when developers get a better understanding of the application. • Long-term projects involve high staff-turnaround. • Often, important technological changes occur during the development of a software system. • The client’s needs may change during the development process. It is impossible to specify a static set of requirements. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 24 Aspects of Software Engineering • Modeling: Focusing on the relevant parts of the system and ignoring everything else. • Problem solving: Using models to find an acceptable – not necessarily an optimal – solution (“engineering = making things work”). • Knowledge acquisition: Gaining sufficient knowledge about the problem domain and formalizing it to build a model. • Rationale-driven development: Capturing the context in which decisions were made and representing it as a set of issue models. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 25 Software Engineering Concepts The following definitions follow those of the IEEE Standards on Software Engineering. A project is composed of a number of activities. Each activity is in turn composed of a number of tasks. A task consumes resources and produces a work product. A work product can either be a system, a model, or a document. Resources are either participants, time, or equipment. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 26 Software Engineering Concepts All persons involved in a project (developers, project manager, client, end users, etc.) are referred to as participants. A role is a set of responsibilities in the project or the system. A role is associated with a set of tasks and is assigned to a participant. The same participant can fill multiple roles. The term system refers to the underlying reality, and the term model refers to any abstraction of the reality. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 27 Software Engineering Concepts A work product is an artifact that is produced during the development, such as a document or a piece of software. A work product for the project’s internal consumption is called an internal work product, while a work product for a client is called a deliverable. An activity is a set of tasks that is performed toward a specific purpose, for example, delivery. Activities are also called phases. A task represents an atomic unit of work that can be managed. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 28 Software Engineering Concepts Resources such as time, equipment, and labor, are assets that are used to accomplish work. The project manager breaks down the work into tasks and assigns them to resources. A goal is a high-level principle that is used to guide the project. Goals define the attributes of a system that are important. A functional requirement is an area of functionality that the system must support, whereas a nonfunctional requirement is a constraint on the operation of the system. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 29 Software Engineering Concepts A notation is a graphical or textual set of rules for representing a model. In this course, we will use UML (Unified Modeling Language) to represent models. A method is a repeatable technique for solving a problem. A methodology is a collection of methods for solving a class of problems. January 28, 2014 CS410 – Software Engineering Lecture #1: Introduction 30