






Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
This course presents modern software engineering techniques and examines the software life-cycle, including software specification, design, implementation, ...
Typology: Exercises
1 / 10
This page cannot be seen from the preview
Don't miss anything!







Spring 20 20 - Jean-Claude FRANCHITTI (CSCI-GA.2440- 001 - Mon. 7:10 - 9:00 pm) COURSE DESCRIPTION : Successful software development depends on an in-depth understanding of how the phases and supporting activities of the software development life cycle work together. Each phase of the life cycle contributes to a reliable, maintainable product that satisfies user requirements. The application of good engineering practices throughout the cycle dramatically improves the likelihood of delivering a quality software project on time, in scope and within budget. While there are many rigorous methodologies, in fact most approaches and tools have a mixture of strengths and weaknesses. Traditional development approaches result in models that are incomplete and quickly become out- of-sync with the application source code. Many modeling approaches focus on describing software designs, rather than solving business problems. This course presents modern software engineering techniques and examines the software life-cycle, including software specification, design, implementation, testing and maintenance. The course evaluates past and current trends in software development practices including agile software development methods such as Extreme Programming (XP), Agile Modeling (AM), Scrum, ASD, DSDM, Crystal, Feature Driven Development (FDD), Incremental Funding Method (IFM), DevOps, and Site Reliability Engineering. Agile software processes, DevOps, and SRE are the most recent trends in the software industry and promise strong productivity improvements, increased software quality, higher customer satisfaction and reduced developer turnover. Agile development techniques empower teams to overcome time-to-market pressures and volatile requirements. The course gives an overview of methods and techniques used in agile software processes, contrasts agile approaches with traditional software development methods, and discuss the sweet spots of both classes of methodologies. Other non-agile approaches that are widely used in industry such as the Rational Unified Process (RUP) and the Open Process Framework (OPF) will also be covered. Process improvement initiatives such as the Capability Maturity Model (CMM) and Personal Software Process (PSP) will be discussed. This course is designed for anyone interested in learning how to understand requirements, specify solutions for complex systems, and deploy scalable, portable, and robust enterprise applications. The course focuses on applying modern software engineering techniques and standards to tackle the modeling of complex evolving
requirements, the architecting of secure ubiquitous responsive solutions that can mend the benefits of cloud-based, fog and edge distributed and decentralized architectural styles, the creation of quality solutions, and the management of software projects. The course will present a variety of tools, in the context of team production of publicly releasable software. The goal will be for each student to have had a hand in building complete and useful applications that could be released for real-world use. This course is a highly interactive course, in which students are expected to fully participate in class-based activities and discussions. Students will be encouraged to bring their own experiences to the discussion, as most of the topics being covered in this course are still considered open research topics. More than 50% of the course will be spend on student presentations, hands-on exercises, and practical software development as part of a team project. COURSE OBJECTIVES The objectives of the course are as follows:
Students will be required to form themselves into "pairs" of exactly two (2) members each; if there is an odd number of students in the class, then one (1) team of three (3) members will be permitted. There may not be any "pairs" of only one member! The instructor (and TA(s)) will then assist the pairs in forming "teams", ideally each consisting of two (2) "pairs", possibly three (3) pairs if necessary due to enrollment, but students are encouraged to form their own 2-pair teams in advance. If some students drop the course, any remaining pair or team members may be arbitrarily reassigned to other pairs/teams at the discretion of the instructor (but are strongly encouraged to reform pairs/teams on their own). Students will develop and test their project code together with the other member of their programming pair. REFERENCES Related information can be found on the following Web sites: https://www.ibm.com/cloud/devops https://landing.google.com/sre www.agilemanifesto.org http://www.agilemodeling.com/ http://www.aboutus.org/Adaptivesd.com www.AgileAlliance.org http://www.extremeprogramming.org/ https://ronjeffries.com/ http://hillside.net/patterns http://www.omg.org/mda/ http://www.stevemcconnell.com Also see references provided on the course website. Also note that abundant additional references will be provided as part of the weekly session material. OTHER RECOMMENDATIONS Students are encouraged to review the references provided on the course Web site, and subscribe to online trade magazines such as Application Development Trends, Application Developer Magazine, Information Week, Java Magazine, etc. COURSE SESSIONS
1. SOFTWARE ENGINEERING FUNDAMENTALS - Course Logistics - Software Development Challenges - Software Scope
READINGS: Selected readings assigned in class Handouts posted on the course web site
10. SOFTWARE VERIFICATION AND VALIDATION - Unit Testing - Integration and System Testing - Static Confirmation - Dynamic Testing - Traceability Matrices - Automated Testing - Other Specialized Testing READINGS: Selected readings assigned in class Handouts posted on the course web site 11. SOFTWARE QUALITY AND SECURITY - Software Quality Concepts - Software Configuration Management (CM) - Software Quality Assurance (SQA) - Software Quality and Agile Methods o Automated and Manual Functional Testing o Acceptance testing o Mock objects o User interface testing (HTTPUnit, Canoo) o Performance testing - Software Metrics and Analytics - Quality and Process Standards and Guidelines o ISO 9000 o SWEBOK o ISO 15504 o SEI’s Capability Maturity Model (CMM) o CMM Integration (CMMI) - Software Security Engineering READINGS: Selected readings assigned in class Handouts posted on the course web site 12. RISK MANAGEMENT IN SOFTWARE ENGINEERING PROJECTS - Project Management Concepts - Project Planning and Estimation - Cooperative roles of software engineering and project management
contribution on any two or more group assignments, the non-participating student(s) may be asked to withdraw from the course. If this occurs after drop date, "unofficial withdrawal" grades may be given.