1 / 34

CISC 3140 (CIS 20.2) Design & Implementation of Software Application II

This course focuses on designing, building, and testing database-backed "intelligent" web-based systems. Topics include software development concepts, tools and technologies, database systems, and intelligent systems.

yvonnet
Télécharger la présentation

CISC 3140 (CIS 20.2) Design & Implementation of Software Application II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CISC 3140 (CIS 20.2)Design & Implementation of Software Application II Instructor : M. Meyer Email : meyer@sci.brooklyn.cuny.edu Course Page: http://www.sci.brooklyn.cuny.edu/~meyer/CISC3140

  2. Contents • Introduction to Course • Course Topics • Course Structure/Overview • Foundations of Software Engineering CISC3140 - Meyer - Lecture 1

  3. Design & Implementation of Software Application II (General Description) • In CIS 3120 (20.1) you began working on "software applications" rather than mere programs. Hopefully, using the programming skills you had already acquired to move forward into the basic topics of interface design, graphics and networking. • In this class CIS 3140 we will continue to examine the creation of large and complex software applications. We will focus on designing, building and testing a database-backed "intelligent" web-based systems. Our emphasis will be on software development concepts, tools and technologies, database systems, and "intelligent" systems. • NOTE: CISC 3140 should be taken after CIS 3120. CISC3140 - Meyer - Lecture 1

  4. Course Background • Course designed by departmental committee. • Which means I have NO leeway in changing the basic content of the lectures or labs. • Much of our materials are provided courtesy of: • Prof. Elizabeth Sklar (Associate Professor and Director of Multimedia Computing Program. • Adjunct Instructor Jeffery Raphael • I do write my own lectures and will ADD information to lectures and labs where appropriate. • I also encourage you to feel free to comment on real-world practices that you have encountered. CISC3140 - Meyer - Lecture 1

  5. Who am I? • Instructor Matthew K. Meyer • CISC 3140 Multimedia Programming • CISC 3600 Game Programming • Also taught courses in Programming, Graphics, Security • 6 years industry experience • Systems Administration (A+, Network+ MCSE), Software Development, Systems Integration, Web Development, IT Headhunting. • I still consult on the side (Google Apps) • MA Brooklyn College, PhD CUNY GC (2012) • Research Areas • Semantic Web (Web 3.0, Intelligent Web Systems) • XML database systems • XML query efficiency • CS Education CISC3140 - Meyer - Lecture 1

  6. Course Website & Rules Course Website: • http://www.sci.brooklyn.cuny.edu/~meyer/CISC3140 • Please go there and read! Course Rules: In addition to all UN, US, NY, and Brooklyn College rules we have two specific course rules: • Respect will be shown. • Get your money's worth! • Pet Peeve -> Cell-phones • If you don't understand, STOP ME! CISC3140 - Meyer - Lecture 1

  7. Course Topics We will cover the following topics in 4 units: • Software Development - foundations of software engineering, design patterns, process models, software testing • Database Systems - information models, mySQL, php • Tools and Technologies - inter-operability, xml/json, uml, configuration management, content management • Intelligent Systems - intelligent interface agents, decision making, knowledge representation CISC3140 - Meyer - Lecture 1

  8. General Suggestions • Avoid missing ANY classes! • Arrive on time. • Have something to eat and drink before you come to class. • Find a partner(s) in the class today: • Projects will be team projects. • Sharing notes and exam study partners. • Plan on at least 2-3 hours a week, outside of the class to work on class projects & labs. • READ the course website syllabus, at least once. CISC3140 - Meyer - Lecture 1

  9. Course Structure • 4 Units • Each unit has • 1 – 3 lectures • 1 – 3 labs • The labs will be hands-on sessions • Grading Policy • Assignments and projects (40%) • Attendance & Participation (10%) • Midterm (20%) • Final (30%) (date TBA) CISC3140 - Meyer - Lecture 1

  10. Online Resource • There is no textbook for this class: • Software Development technology is changing rapidly. • Books are expensive (web is amazing FREE resource). • Lectures will be posted on the course web page after each lecture. • Labs will distributed in class and be posted after the class. • Links to online resources will also be posted on the class website and in lectures and labs where appropriate. • For people who want books, much of what we discuss can be found in a wide variety of books that are published by O’Reilly Publishing (http://www.oreilly.com), and appropriate publications will be linked on the class web page CISC3140 - Meyer - Lecture 1

  11. Course Overview I • This is a programming course! • It is assumed that you are familiar with: • Imperative (Structured Programming) • Sequence, Selection, Repetition • Procedural Programming • Object Oriented Programming • Data Structures • Basic Search and Sort Techniques • At this stage in your career, you really can, teach yourself a new programming language in a matter of weeks (IF it belongs to paradigms that you are already familiar with). • We will work predominantly with PHP in this class. CISC3140 - Meyer - Lecture 1

  12. Course Overview II • Throughout the course, we will be discussing the concepts, technologies and design principles that underlie web-based systems with the following type of structure -> • Note each layer is an abstract delineation. CISC3140 - Meyer - Lecture 1

  13. Course Overview II (cont) In the previous slide each of those layers could be: • Part of one application that resides on one machine. • Single Player Games • Part of multiple applications on one machine. • L.A.M.P. • Single most common database enabled web system • Part of multiple applications on multiple machines. • Client Server Model • GRID Computing (Google Apps Datastore) CISC3140 - Meyer - Lecture 1

  14. We will be using LAMP • LAMP is an acronym for an integrated stack of free, open source software. • Derives name from the first letters of Linux (operating system), Apache HTTP Server, MySQL (database software) and Perl/PHP/Python. • We will be using a LAMP setup to develop software applications in this class. • You will have access to a machine (Linux OS) with a Web Server (Apache) on it that is also running a database (MySQL) and that support scripting (PHP). CISC3140 - Meyer - Lecture 1

  15. You don't need to do this!!! • A LAMP distro is an incredibly easy thing to setup at home: • Install a LAMP server on Ubuntu Linux • Install a LAMP server on Debian GNU/Linux • Install a LAMP server on SUSE Linux • XAMPP for Windows • MAMP for MAC • AGAIN you will have access to a LAMP distro online. • You don't need to setup your own LAMP distro. CISC3140 - Meyer - Lecture 1

  16. Case Studies • Web sites that focus on delivery of goods or products (bringing stuff to people) • Amazon.com — a “click and mortar” company that didn’t exist before the internet. It delivers products and also provides a means for re-sellers (other companies) to sell products through amazon’s gateway. • Macys.com — a traditional “bricks and mortar” company that existed long before there was internet; but now they have a web site and support online purchases in addition to physical stores. • Web sites that focus on delivery of services (bringing information to people) • Yahoo.com — delivers a wide range of services, from email to games to a search engine to news feeds • Google.com — primarily a search engine, but also now supports email, web hosting a very popular mapping application, and GOOGLE APPS (perhaps the death of Office). CISC3140 - Meyer - Lecture 1

  17. Case Studies Continued… • Web sites that support social networking (bringing people together) • Facebook.com — hosts profiles, provides 'live' space for chat, space for asynchronous collaborative blogging, takes private information and sells it for profit. • eharmony.com — dating site • Web sites that contain intelligent components • Hopstop.com — provides personalized directions to places in NYC via public transportation • Netflix.com — provides preference-based matching of customers to potential goods and services CISC3140 - Meyer - Lecture 1

  18. Class Examples • Throughout the course, we will be introducing a number of different tools and technologies. • It will be helpful to have a few running examples that we can refer too to illustrate concepts and ideas. We will use these examples as a kind of glue to hold everything together. • One example we will use is this: • Suppose we want to develop a web site (or APP) called bigNightOut.com • The idea is to have a place where users can go and plan an evening out on the town. • At the very least there should be information about where to go for dinner and a movie. CISC3140 - Meyer - Lecture 1

  19. Class Examples II • Our site will have components like: • – restaurant • we might want to know: • restaurant review • location and directions • category of food • real-time information like how busy is it right now • – movie • we might want to know: • what is playing where and when • the price of a ticket • the length of the movie • access to view a trailer • reviews • real-time information like are there any tickets left for the next showing • – companions • we might want to find someone to go out with: • do any friends want to come along? • is there anyone we do not want to invite? • maybe you want a blind date • real-time information like where are your friends right now CISC3140 - Meyer - Lecture 1

  20. Class Examples III • We will discuss the technologies that could be used to create a site like bigNightOut.com • We will (in groups) design the bigNightOut.com site (and other sites) and review each other’s designs. • We will build then build the bigNightOut.com site (and other sites) and test it! • When you are done, I highly suggest, that you create a portfolio page of your site. • Increasingly companies are wanting to see the finished products of programmers before they are hired: Why the new guy can't code. CISC3140 - Meyer - Lecture 1

  21. To Do • Complete the pre-semester survey and return it to me. • Acquire a Flash Drive for use in the course if you don't already have one. • Complete Homework #1 (in which you will): • READ "No Silver Bullet" by Prof Frederick P. Brooks. Available on the course website AND • WRITE a one page, double spaced, 12 point format, Arial Font summary of "No Silver Bullet" by Prof Frederick P. Brooks making sure to put your name, the class, the date and the title of your paper at the top of your paper. CISC3140 - Meyer - Lecture 1

  22. I know what you're thinking • Your thinking, "Did he really just give a homework assignment on the first day?!" • Your thinking, "What kind of monster would do such a thing?!" • Here's the deal: • Sadly, statistically speaking, at least one of you is not going to pass this course. • I would like to find out who that person(s) is BEFORE the drop deadline passes (to save that person money). • Experience has shown me that the set of "the people who can't be bothered to write a simple paper during the first week of class" always comprise a proper superset of "the people who aren't going to pass this class". • Your first homework assignment is only worth 1 point (Attendance & Participation) but it's completion (or the lack thereof) is useful information to me (and the article is useful information to you). CISC3140 - Meyer - Lecture 1

  23. Take 5 CISC3140 - Meyer - Lecture 1

  24. Software Engineering CISC3140 - Meyer - Lecture 1

  25. Software Engineering • Common Definition: Designing, implementing, and modifying software in order to improve quality, affordability, maintainability, and ease of construction. • Stephen Schach Definition: “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.” • In a Nutshell: Building software in a cost-effective and efficient manner CISC3140 - Meyer - Lecture 1

  26. Programs != Software Products • We start our career in computer science learning to write "programs". • A program is a simple application developed by an individual for that individual (i.e. any programs you’ve written for CIS 1.5) • A software product on the other hand has multiple users and by definition is intended to be used by many others. • Consequently we would like our software to be well tested, documented, user-friendly and maybe even include a manual (even though nobody will read it). CISC3140 - Meyer - Lecture 1

  27. Software Products in the Real World Your previous courses taught you these mechanics of program writing: • You will always be given clear/clean understandable specifications. • You will always know that it is possible to write the specified program in the time allotted. In the real world: • Specifications are often unrealistic (if not impossible). • The timeframe for creating a software product is often not realistic? Consequently in the real world: • Software is often delivered late, over budget and broken. The real world is wildly unpredictable and software is fundamentally brittle; yet software often lasts longer than employees or hardware; consequently software sometimes ends up being used in very different ways than how it was originally designed to be used. The field of software engineering was established in order to produce proven methodologies to help overcome these real-world issues. CISC3140 - Meyer - Lecture 1

  28. Software Engineering Software engineering includes the following: • requirements analysis • human factors • functional specification • software architecture • design methods • programming for reliability • programming for maintainability • team programming methods • testing methods • configuration management CISC3140 - Meyer - Lecture 1

  29. Does Software Engineering Have to be Complex? • Yes! • Computer Software is more complex than computer hardware (which has seen exponential growth in speed, performance, and cost reduction). • Computer Software is one of the most complex and difficult things that human beings create. • Non-redundant components. • Large number of states. • Problems difficult to reduce simplify (very difficult to geometrically express). • Problems always changing (new features). CISC3140 - Meyer - Lecture 1

  30. Some Tools and Techniques Do Help • High-Level Languages • Complex Data Structures • Abstract Data Structures (Classes) • Multi-Tasking • Standards • Operating System Standards • Internet Standards • Interface Standards • Formalized Design Methodologies & Paradigms • Paradigm = Structured Approach to Solving a Problem CISC3140 - Meyer - Lecture 1

  31. Design Methodologies. Necessary? • YES! • "Program difficulty increases exponentially with program size. Why? Because of human psychology. The human mind can only deal with a limited number details at any time. When the number of details in a problem increases linearly, it becomes exponentially more difficult to handle." (Mall, 2004) • From here on out, for the rest of your career, NEVER just sit down and start coding. • PLAN first, and preferably plan within a "design methodology"; within a "design paradigm". CISC3140 - Meyer - Lecture 1

  32. Note on Personal web site vs Non-personal web site • It is assumed at this point that you have done some web development and are proficient in XHTML (or HTML 4.0) and JavaScript. • Please don't confuse simple relatively static personal websites with professional websites: • Personal home page is website about an individual or small group with little to no scripting and/or application or database integration. • Professional website, is a large multi page (often dynamically created) website, like a news site, search engine, social networking site or web portal. CISC3140 - Meyer - Lecture 1

  33. References • Mall, R. (2004). Fundamentals of software engineering. New Delhi: • Prentice-Hall of India Private Limited. CISC3140 - Meyer - Lecture 1

  34. Hang on, we're going to watch a movie • No Silver Bullet--Essence and Accidents of Software Engineering, by Frederick P. Brooks. (paper you're going to write report on) • Originally published in 1986 in Information Processing 86. Reprinted in Computer, 20, 4 (April 1987) 10-19. Also reprinted in The Mythical Man-Month, Anniversary Edition (1995). (downloaded from http://osprey.unisa.ac.za/download_2003/INF425-N/a2.pdf) • Professor Frederick P. Brooks (Website) • Brooks lecture (Movie) CISC3140 - Meyer - Lecture 1

More Related