220 likes | 230 Views
Software Engineering--Introduction. Software Engineering--Introduction. Syllabus, grading, schedule--class + lab--will all be reachable at: http://secs.ceas.uc.edu/~cpurdy/sespr12/syllabus.html Contact information: C. Purdy
E N D
Software Engineering--Introduction Software Engineering--Introduction
Syllabus, grading, schedule--class + lab--will all be reachable at: http://secs.ceas.uc.edu/~cpurdy/sespr12/syllabus.html • Contact information: C. Purdy • 3. Java--to be learned in lab--you will develop basic skills, “expert” status not required • 4. teams--3-4 per team (TURN IN SURVEY please) • 5. project--most will be done in lab • 6. passing 493/495: you must pass both classes; if you fail one, you will receive an F in both; otherwise you will receive a separate grade in each of these classes • 7. grading: 493 | 495—explained on web pages • 8. cell phones--for each call you get in class, you lose 3 points on your final grade • 9. Electronic communication (text messages, laptops, etc.): • NOT ALLOWED in lecture as these distract from class discussions • 10. Reading assignments: please read BEFORE class & be ready to discuss in class (there may be quizzes for these) • Group work / individual work: we will do a lot of each--follow rules for each assignment. Course Administration
Course Themes • The lectures and assignments in this course will focus on developing knowledge and skills for: • effective teamwork • project management • software development • "lifelong learning" • In this course we will be concentrating on the process of developing software, not on technical skills in specialized areas such as database management, wireless computing, etc. • The skills we will learn can also be applied to hardware projects and to mixed hardware / software projects.
People, Product, Process--> Project what is "software engineering"?: the "art" of building and maintaining software systems "…software engineering is a discipline whose aim is the production of fault-free software, delivered on time and within budget, that satisfies the user’s needs.” Schach, Object-Oriented and Classical Software Engineering, 5th ed., Mc-Graw-Hill 2002, p. 4
People, Product, Process--> Project • Importance of “fault-free” … Software bugs can be lethal. • The 2003 North America blackout was triggered by a local outage that went undetected due to a race condition – 55 million people were without power • Smart ship USS Yorktown was left dead in the water in 1997 for nearly 3 hours after a divide by zero error • Y2K problem … similarly 2038 problem … many Unix systems calculate the time in seconds since 1 January 1970, and store this figure as a 32-bit signed integer, for which the maximum possible value is 231-1 (2,147,483,647).
People, Product, Process--> Project • "…software engineering is a discipline whose aim is the production of fault-free software, delivered on time and within budget, that satisfies the user’s needs.” • Schach, Object-Oriented and Classical Software • Engineering, 5th ed., Mc-Graw-Hill 2002, p. 4 • components of software system construction (“4 P’s”): • people • product • process • project
People (Stakeholders)—Roles, Goals, Functions RoleResponsibility Customer High level requirements, project scope User What tasks must system carry out? What is level of expertise? Software salesperson Get requirements; delivery dates, cost Business Manager Organize, track work Technical Manager Manage technical issues Developer Design, implement, test Technical Writer Documentation, manuals Goals / Functions – conflicts?
Questions to Think About • some points to ponder: • "software crisis"--systems become more and more complex: • --what can we automate? • --how can we verify/ test such complex systems? • "hardware/software" boundary • --how can we do "co-design"? • --where is the boundary? • types of software systems • --how do important application-specific systems differ? • --what impact do differences have on development? • --which systems will be most important in the coming years?
Important System Types • Some Common System Types—what is the same/different? • Databases • Communication systems • Entertainment systems • Web-based applications • Medical systems • Manufacturing / transportation systems • Simulation programs to support engineering and science • Parallel/distributed applications • Embedded systems • Intelligent systems / robots - http://www.youtube.com/watch?v=7fYMxaBTqls • Utility software for computer systems (compilers, e.g.) • Utility software for general users (spreadsheets, e.g.)
Mythical Man-month La Brea Tar Pits
System Architect • Architect --conceptual integrity • Process Model --have a plan and follow it • III. Productivity – develop strategies that enhance productivity
What did we do today? • Welcome to class – (and… turn in your surveys!) • It’s a “process course” -- teamwork, methodology, lifelong learning ALL in the context of good code development • The 4 P’s -- people, product , process, project • Plethora of models … plan, do, fix • Fred Brooks , et. al – Mythical Man Month