Software Engineering
MBA Course Notes to
SOFTWARE ENGINEERING
LEARNING OUTCOMES
The course provides students with an in-depth understanding of the role of software engineering within IT dependent enterprises. Students develop capabilities in the analysis, evaluation and implementation of software engineering principles in IT system development as well as the ability to efficiently integrate complex systems architectures within and between organisations. The course addresses key aspects of modern software engineering and aims to produce graduates who are equipped to both work in the software industry and pursue research.
ABOUT THE COURSE
Bài giảng Khóa học Thạc sỹ
CÔNG NGHỆ PHẦN MỀM
MỤC ĐÍCH
Khóa học cung cấp cho học viên sự hiểu biết sâu sắc về vai trò của công nghệ phần mềm trong các doanh nghiệp sử dụng CNTT. Học viên phát triển khả năng đánh giá, phân tích và triển khai các nguyên tắc kỹ thuật phần mềm phát triển hệ thống CNTT cũng như khả năng tích hợp hiệu quả các hệ thống có kiến trúc phức tạp bên trong và kết nối các tổ chức. Khóa học đề cập đến các khía cạnh quan trọng của công nghệ phần mềm hiện đại và đặt mục đích để học viên tốt nghiệp được trang bị kiến thức cho cả công việc trong ngành công nghiệp phần mềm và theo đuổi nghiên cứu.
GIỚI THIỆU MÔN HỌC
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. In this core lecture (10 CP), we expand on earlier exposure to software engineering and do a detailed exploration of software engineering topics like:
- Object Model
- Requirements Engineering
- Use Cases
- System Model
- Object Oriented Design
- Design with Reuse
- Critical Systems
The key objective of this course is to learn modular design of software and documenting the design using symbolic representations, i.e., UML diagrams. The course will cover software life-cycle models and different phases of the software development process. Object-oriented techniques are key to the course. Since the ultimate result of software engineering is a working software package, the course will put a great emphasis on developing a demonstrable software package. However, this is not a programming course. The key characteristic is having teams of five to seven students work on developing complex software systems over a course of one semester. The grading is competitive, with the highest rated project receiving the highest grade and the others being rated relatively to the highest one.
- Software Architecture
- Software Testing
- Specifying Systems
- Problem Frames
- Software Metrics
- Design with Patterns
- Distributed Systems
PREREQUISITES
ĐIỀU KIỆN
A solid knowledge of a programming language, preferably an object-oriented language.
TEACHING METHODS
PHƯƠNG PHÁP GIẢNG DẠY
20h lecturer, 30h exercise, 15h homework
COURSE OUTLINE
NỘI DUNG MÔN HỌC
GRADING
ĐÁNH GIÁ
The final grade will be determined based on regular homeworks, one midterm exam, and a Semester Project:
Homeworks: 20%
Midterm Exam: 30%
Semester Project: 50%
Hands-on design projects are the key component of the course. Team work is required for the projects.
RECOMMENDED TEXTS
TÀI LIỆU THAM KHẢO
The lectures will follow, in part, "Object-Oriented Software Engineering: Using UML, Patterns and Java" by Bernd Bruegge and Allen H. Dutoit, Third Edition, Prentice Hall, Upper Saddle River, NJ, 2010. The more advanced material will be based on material the instructor will make available. Some interesting books for the advanced material include:
- Bruegge & Dutoit: Object-Oriented Software Engineering: Using UML, Patterns and Java, Third Edition, Prentice Hall, 2010.
- Miles & Hamilton: Learning UML 2.0, O’Reilly Media, 2006. ISBN: 0-596-00982 -8
- R. Pressman, Software Engineering - A Practitioner's Approach, 6th ed., 2005
- C. Ghezzi, M. Jazayeri, and D. Mandriolo, Fundamentals of Software Engineering. Prentice Hall, second ed., 2002
- A. Endres and D. Rombach, A Handbook of Software and Systems Engineering. The Fraunhofer IESE Series on Software Engineering, Pearson Education Ltd., 2003.
- S. Robertson and J. C. Robertson, Mastering the Requirements Process. Addison- Wesley Professional, second ed., 2006.
- I. Jacobson, G. Booch, and J. Rumbaugh, The Unified Software Development Process. Addison-Wesley Professional, 1999.
- K. Beck and C. Andres, Extreme Programming Explained. Addison-Wesley, 2004.
- Dao Nam Anh, "Systems Analysis And Design", Course Book, University of Power, 2013
- The Z Notation
INTERESTING LINKS
CÁC TRANG WEB HỮU ÍCH
Major links from Ivan Marsic:
1. General Software Engineering Websites
- Software engineering - Wikipedia, the free encyclopedia: http://en.wikipedia.org/wik i/Software_engineering
- Webliography Software Engineering: http://info.umuc.edu/~skerby/h elp/wbib_swe.htm
- Google Directory - Computers > Software > Software Engineering: http://www .google.com/Top/Computers/Software/Software_Engineering/
- Software Engineering < Programming Tools in the Yahoo! Directory: http://dir.yahoo.com/Computers_and_Internet/Programming_and_D evelopment/Tools/Software_Engineering/
- Software Engineering Sites: http://www.erg.abdn.ac.uk/users/brant/sre/soft-eng.html
- SEweb - Software Engineering Education Home Page: http://tuvalu.cs.flinders.edu.au/seweb/se-ed/
- ACM Classic Books Series: http://www.acm.org/classics/
- Teaching Software Engineering - Lessons from MIT, by Hal Abelson and Philip Greenspun: http://philip.greenspun.com/teaching/teaching-software-engineering
- NASA Software Engineering Home Page: http://akao.larc.nasa.gov/dfc/swren g.html
- Software Engineering Hotlist at Georgia Tech: http://www.cc.gatech.e du/computing/SW_Eng/hotlist.html
- IEEE Guide to the Software Engineering Body of Knowledge: http://www.swebok.org/
- The IEEE's Software Engineering Body of Knowledge categorizes the domain of software engineering. Available online, the document describes the generally ...
- IEEE Technical Council on Software Engineering: http://www.tcse.org
- EE/CS Mother Site: http://www- ee.stanford.edu/soe/ieee/eesites.html
- The Software Engineering Laboratory (SEL): http://fdd.gsfc.nasa.gov/seltext.html
- CMU Software Engineering Institute: http://www.sei.cmu.edu
- Brad Appleton's Software Engineering Links: http://www.cmcrossroads.com/bradapp/links/swe-links.html
- Software Engineering Research Links: http://people.engr.ncsu .edu/txie/seresearchlinks.html
- by Tao Xie, links to research on software engineering;
- Check also Software Engineering Academic Genealogy - by Tao Xie: http://www.csc.ncsu.edu/facu lty/xie/sefamily.htm
- Software Engineering Proverbs, collected by Tom Van Vleck: http://www.multicians.org/thvv/p roverbs.html
- Stories about software engineering practices and lessons: Collected graffiti.
- Software Engineering Readings (from comp.software-eng): http://www.qucis.queensu.ca/Software- Engineering/reading.html
- Software Engineering Resources: http://www.chris-lott.org/resources/
- This page offers a collection of various software engineering resources, including style guides, metrics programs, bibliographies, and free software. ...
- ASQ: Publications: Software Quality Professional: http://www.asq.org/ pub/sqp/past/vol4_issue2/resource.html
- Book reviews for quality software development.
- SERC Technical Reports: http://www.cs.purdue.edu/tech-reports/serc-orders.html
- Blog on Software Engineering: http://egb.blogspot.com/
- This blog focuses on the art and the science of engineering software-intensive systems.
- Software Engineering Index: http://www.faqs.org/faqs/software-eng/
- Subject: Comp.software-eng FAQ (Part 0): periodic postings and archives ... Subject: comp.software.testing Frequently Asked Questions (FAQ) ...
- Software Engineering Conferences: http://people.engr.ncsu.ed u/txie/seconferences.htm
- Software Engineering Code of Ethics and Professional Practices: http://www.acm.org/about/se-code
2. Unified Modeling Language (UML)
- OMG UML Website: http://www.uml.org
- Introduction to UML: http://www.omg.org/gettings tarted/what_is_uml.htm
- Practical UML: A Hands-On Introduction for Developers: http://bdn.borland.com/ar ticle/0,1410,31863,00.html
3. Software Lifecycle Methods
- "The Demise of the Waterfall Model Is Imminent" and Other Urban Myths, by Phillip A. Laplante and Colin J. Neill: http://acmqueue.com/modules.php? name=Content&pa=showpage&pid=110
- An interesting article about how software pracitioners actually practice software engineering.
- Software Engineering Methodologies: http://info lab.stanford.edu/~burback/watersluice/watersluice.html
- WaterSluice Software Engineering Methodology ... A Sequential Software Engineering Methodology · The Boehm-Waterfall Software Engineering Methodology ...
- Introduction to the Booch Method: http://www.itr.ch/courses/case /BoochReference/
- Cleanroom Software Engineering: https://www.thedacs.com/database s/url/key/64
- The objective of the Cleanroom methodology is to achieve or approach zero defects with certified reliability. As described by Hausler (1994), the Cleanroom ...
- Cleanroom Software Engineering: http://www.quality.org/html/cse.html
- A DoD STARS Tutorial by Software Engineering Technology, Inc. This is a web tutorial that describes Cleanroom at medium depth. ...
3.1 Agile Methods
- Manifesto for Agile Software Development: http://agilemanifesto.org/
- A page devoted to the creed lyrics of new age software development methods, with stained glass icons.
- Agile Modeling (AM) Home Page: http://www.agilemodeling.com/
- by Scott Ambler — Effective practices for modeling and documentation.
- Agile Software Development dot com: http://agilesoftwaredevelopment.com/
- A blog about a quest for better ways of developing software.
- Authors include Jack Milunsky, Kelly Waters, Mendelt Siebenga, Artem Marchenko, ...
- Agile Software Development Made Easy: http://www.agile-software-development.com/
- by Kelly Waters
- website about agile development and agile project management, including developing tests and estimating time.
- Software Configuration Management - AccuRev Blog: http://www.accurev.com/blog/
- A blog about agile adoption and organizational change.
- Authors include J. Martin, B. DeMaria, clucca, AccuRev, ...
4. Problem Modeling and Requirements Analysis
- Problem Analysis and the Problem Frames Approach: http://www.ferg.org/pfa/
- A page devoted to the software development methods of Michael Jackson: JSP, JSD, and the Problem Frame Approach.
- Michael Jackson (not the singer) - Consultancy & Research in Software Development: http://mcs.open.ac.uk/mj665/
- Wikipedia entry on Michael A. Jackson: http://en.wikipedia.org/wiki/ Michael_A._Jackson
- Query re: Michael Jackson's "Problem Frames" - any listserv or similar? http://www.reilly2001.info/whim/archives/web/query_re_michael_jacksons_prob lem_frames_any_listserv_or_similar_2004-02-23.html
- When Telepathy Won't Do: Requirements Engineering Key Practices: http://www.processimpact .com/articles/telepathy.html
- by Karl Wieger
- Although this article is nearly 10 years old, it still offers valuable insight into the process of understanding what customers want. It applies to web development as much as it does to traditional software development.
- ACM Forum On Risks To The Public In Computers And Related Systems -- The RISKS Digest
- moderated by Peter G. Neumann: http://catless.ncl.ac.uk/Risks
- Popular pages tagged with "UseCases" on del.icio.us: http://del.icio.us/popular/UseCases
- Content Tagged with useCases + Programming: http://swik.net/usecases+Programming
- Alistair Cockburn's home page: http://members.aol.com/acockburn/
- Martin Fowler's home pages: http://www.martinfowler.com/
- http://www2.awl.com/cseng/titles/0-201-89542- 0/techniques/index.htm
- UML 2 Use Case Diagrams, by Scott W. Ambler: http://www.agilemod eling.com/artifacts/useCaseDiagram.htm
5. Formal Methods
- Formal Methods Virtual Library: http://vl.fmnet.info/
- Centre for Applied Formal Methods, London South Bank University: http://www.cafm.lsbu.ac.uk/
- [PDF] UML 2.0 OCL Specification: http://www.omg.org/docs/ptc/03-10-14.pdf
- Download the OCL Parser from IBM: http://www- 306.ibm.com/software/awdtools/library/standards/ocl-download.html
6. Software Measurement and Estimation
- Thomas Fetcke's resource guide on Software Metrics Sites: http://www.cs.tu- berlin.de/~fetcke/metrics-sites.html
- Horst Zuse's Software Measurement - Software Metrics: http://irb.cs.tu- berlin.de/~zuse/sme.html
- Why Is Software Measurement Hard? By David Pitts: http://www.stickyminds.com /getfile.asp?ot=XML&id=2617&fn=XDD2617filelistfilename1%2Epdf
- See more articles on software measurement here: http://www.stickyminds .com/measurementandreporting.asp
- R.S. Pressman & Associates, Inc. -- Software Process Metrics: http://www.rspa.com/spi/metrics-process.html
- CSSE Website (Center for Systems and Software Engineering): http://sunset.u sc.edu/csse/research/COCOMOII/cocomo_main.html
- This new, improved COCOMO is now ready to assist professional software cost estimators for many years to ...
- Effort Estimation Tools (a list by Oy Laatukonsultointi P. Kantelinen Ab, Finland): http://www.laatuk.co m/tools/effort_estimation_tools.html
- Lessons in Software Estimation: http://blogs.construx.com/blogs/stevemcc/archive/2007/09/23/buildin g-a-fort-lessons-in-software-estimation.aspx
- by Steve McConnell — looks at the kinds of issues that arise in any kind of project planning, not just software planning...
- Evidence-Based Scheduling: http://www.joelonsoftware .com/items/2007/10/26.html
- by Joel Spolsky — builds on personal statistics gathered over time.
- Roland Racko, "No black magic," Dr. Dobb's Portal, September 01, 2004. http://www.ddj.com/web-development/184415190
- Reviews tools for tying timing to use cases to derive costs and timetables.
- The Planning Game (a Wikipedia entry): http ://en.wikipedia.org/wiki/Extreme_Programming_Practices#Planning_game
- Wikipedia has some interesting and useful information on working through the planning and estimating process. In particular, look at the Planning Game for ideas on how to manage user requirements within iterations.
- Software Cost Estimation With Use Case Points: http://tynerblain.com/blog/2007/02/12/software-cost-estimation-ucp-1/
- by Tyner Blain (Scott Sehlhorst); February 12th, 2007
- Mel Damodaran, Estimation Using Use Case Points: http://isedj.org/ isecon/2002/253d/ISECON.2002.Damodaran.txt
- Duvessa Software, Estimate Easy Use CaseTM (EEUCTM): http://www.duvessa.com/products.htm
- Commercially available tool to calculate use case points. Students can download an evaluation copy of EEUCTM.
- Function Point FAQ: http://ourworld.c ompuserve.com/homepages/softcomp/fpfaq.htm
- Frequently Asked Questions (and Answers) Regarding Function Point Analysis, by Ray Boehm, Software Composition Technologies, Inc. Updated June 25, 1997.
- Functional Size Measurement (FSM) page: http://www.geocities.com/lbu _measure/fpa/fpa.htm
- Maintained by Luigi Buglione
- Scale of Measurement: http://www.wadsworth.com/psychology_d/templates/stud ent_resources/workshops/stat_workshp/scale/scale_01.html
- This tutorial is designed to help you learn to identify the scale of measurement of variables encountered in psychological research...
- Google search scale of measurement
7. Object Orientation
- Cetus Links on Object-Orientation: http://www.cetus-links.org/~cetus/software.html
- Also: http://www.rhein-neckar.de/~cetus/software.html
- Object-Oriented.org: http://www.object-oriented.org/
- OOSE Links: http://www.inf.ufsc.br/poo/ine53 83/oose.html
- Object-Orientation Frequently Asked Questions (FAQ): http://www.cyberdyne-object-sys.com/
- Alan Pope's Object Resource Lists: http://www.qds.com/pe ople/apope/Corba/ap_resources.html
- Papers on Object Technology: http://www.iconcomp.com/papers/
- Douglas Young: Object- Oriented Programming with C++ -- A Tutorial.
8. Software Architecture
- Grady Booch's Blog (Handbook of Software Architecture): http://www.booch.com/architecture/ blog.jsp
- Big Ball of Mud: http://www.laputan.org/mud/
- A "yes but why not" point of view by Brian Foote and Joseph Yoder, Department of Computer Science, University of Illinois at Urbana-Champaign
- Software Architecture - by Dewayne E. Perry: http://www.ece.utexas.edu/~perry/w ork/swa/
- Software Architecture Resource Sites: http://www2.umassd.edu/SECen ter/SAResources.html
- Software Architecture resources - by Gert Florijn: http://www.cs.ruu.nl/p eople/florijn/research/arch.html
9. Design Patterns
- Design Patterns: http://en.wikipedia.org/wiki/Des ign_Patterns
- From Wikipedia, the free encyclopedia
- Patterns Home Page: http://hillside.net/patterns/patte rns.html
- Cetus Links - Patterns: http://www.cetus-links.org/oo_patterns.html
- The Portland Pattern Repository: http://c2.com/ppr/
- Pattern Language (Christopher Alexander) Home Page: http://www.patternlanguage.com/
- Salingaros's notes on Christopher Alexander: http://www.math.utsa .edu/sphere/salingar/Chris.text.html
- AGCS Patterns Home page: http://www.agcs.com/suppor tv2/techpapers/patterns/
- Brad Appleton's Software Patterns Links: http://www.cmcrossroads.com/bradapp/links/sw-pats.html
- The Pattern Wiki: http://c2.com/cgi-bin/wiki?CategoryPattern
- The Design Patterns Wiki: http://c2.com/cgi-bin/wiki?DesignPatterns
- Patterns-Discussion FAQ: http://g.oswego.edu/dl/pd-FAQ/pd-FAQ.html
- AntiPatterns Wiki: http://c2.com/cgi-bin/wiki?AntiPatterns
10. Software Testing
- Software testing: http://en.wikipedia.org/wiki/Software_testing#White-box_and_black- box_testing
- From Wikipedia, the free encyclopedia
- Software Testing Stuff, by Kerry Zallar: http://www.testingstuff.com/
- Site's motto: "This may not be the best testing web site out there ... but, it links to many that are!"
- Software Testing - User Stories: http://www.testinggeek.com/index.php/testing-articles/135
- from the Testing Geek website (particularly useful for agile project methods).
- Test-Driven Development: http://www.artima.com/intv/testdri ven.html
- A Conversation with Martin Fowler, Part V
- by Bill Venners; December 2, 2002.
- GUI Testing Checklist: http://members.tripod.com/~b azman/checklist.html
- A checklist to help testers check GUI screens
- Testing GUI Applications, by Paul Gerrard: http://www.gerrardconsultin g.com/GUI/TestGui.html
- A short paper on GUI Testing from EuroSTAR'97
11. Refactoring
- What Is Refactoring? (Wiki): http://c2.com/cgi-bin/wiki?WhatIsRefactoring
- The Refactoring Browser Wiki: http://c2.com/cgi-bin/wiki? CategoryRefactoringBrowser
- Wiki Refactoring Summary: http://c2.com/cgi-bin/wiki?WikiRefactoringSummary
- Refactoring Home page: http://www.refactoring.com/
- Other Links: http://spock.culocalbiz.com/
12. Web Services Websites
- Web service - From Wikipedia, the free encyclopedia: http://en.wikipedia.org/wiki/Web_ser vice
- Web Services Tutorial: http://www.w3schools.com/web services/default.asp
- W3C Technical Reports and Publications: http://www.w3.org/TR/
- (W3C handles the XML, SOAP, and WSDL specification process)
- Web Services definitions: http://www.jeckle.de/webServices/
- Many definitions of Web Services are collected at this website (some of them in German!)
- OASIS (Organization for the Advancement of Structured Information Standards): http://www.oasis-open.org/
- OASIS UDDI Member Section (UDDI = Universal Description, Discovery and Integration): http://www.uddi.org/
- Component Based Development and Integration (CBDI) Service Oriented Architecture Practice Portal
- Independent Guidance for Service Architecture and Engineering: http://www.cbdiforum.com/
- XMethods Archive of Web Services: http://www.xmethods.com/ or http://www.xmethods.net/
- Salcentral Archive of Web Services: http://www.salcentral.com/
- IBM developerWorks - SOA and Web Services: http://www.ibm.com/developerwo rks/webservices/
- IBM jStart ("jump-start") Program: http://www.ibm.com/software/ebu siness/jstart/
- (Using emerging software technologies to deliver business-critical solutions)
13. User Interfaces
- useit.com: Jakob Nielsen on Usability and Web Design: http://www.useit.com/
- Don Norman's jnd website: http://www.jnd.org/
- AskTog: Interaction Design Solutions for the Real World: http://www.asktog.com/
- Pixelcentric Interface Hall of Shame: http://www.pixelcentric.net/x-shame/
- David Anderson's Website on Agile Interaction Architecture: http://www.uidesign.net/
- GUI Bloopers by Jeff Johnson: http://book s.elsevier.com/companions/1558605827/more_bloopers.asp
- Guide to Usability for Software Engineers (GUSE): http://www.otal.umd.edu/guse/
- The Guide to Usability for Software Engineering is a collection of pages created by the University of Maryland, Masters of Software Engineering, Fall 98, ...
14. Software Implementation / Coding
- GNU Coding Standards: http://www.delorie.com /gnu/docs/GNU/standards_toc.html
15. Java Development
- Cetus Links Java: http://www.cetus-links.org/oo_java.html
- (Just start at Cetus and browse for more on Java)
- JavaWorld Online Magazine: http://www.javaworld.com/
- The Java Developer: How Do I ... ?: http://www.digitalfo cus.com/digitalfocus/faq/howdoi.html
16. Software Business
- Home page of Prof. Michael A. Cusumano: http://web.mit.edu/cusumano/www/ or http://en.wikipedia.org/wiki /Michael_A._Cusumano
- A leading researcher of the business of software.
- 0 + 0 = 1 : the appliance model of selling software bundled with hardware, by Bettina Hein (and Michael A. Cusumano): http://dspace.mit.edu/handle/1721.1 /39504 or http://hdl.handle.net/1721.1/39504
- An MBA thesis describing a business model of selling software bundled with hardware.
- The Emerging Market for Web-based Enterprise Software, Master's Thesis by Andreas Goldi: http://www.agoeldi.com/index.php?id=3
- An MBA thesis analyzing business models of companies that offer "Software as a Service" (SaaS) or "on demand software".