软件工程

Peking University via Coursera

Go to Course: https://www.coursera.org/learn/ruanjian-gongcheng

Introduction

### Course Review: 软件工程 (Software Engineering) by Peking University on Coursera In today’s digital age, the role of software engineering has become increasingly significant as software permeates various aspects of our lives and industries. The "软件工程" course offered by Peking University on Coursera provides a solid foundation for anyone interested in understanding the methodologies and practices involved in software development. Below is a comprehensive review of the course, its contents, and a personal recommendation. #### Course Overview This **11-week MOOC course** encompasses 21 lectures covering essential topics ranging from software processes to project management, tailored for beginners in the field of software engineering. As software becomes integral to modern society, grasping its engineering principles is crucial for future Software Developers, Project Managers, and IT Professionals. The course aims to introduce students to various software development methodologies, including structured analysis, object-oriented analysis, and agile development, along with hands-on experience through a mini-software project. #### Syllabus Breakdown 1. **Week 1: Software Engineering Overview and Software Process** - This introductory week sets the stage by covering basic concepts and the knowledge framework of software engineering. Students will learn about the software life cycle and various models associated with it. 2. **Week 2: Software Requirements** - An essential focus on understanding software requirements, classifying them, and exploring common elicitation methods, which lays the groundwork for effective software development. 3. **Weeks 3 & 4: Structured Methods** - These weeks delve into traditional software development techniques. Students learn structured analysis and design methods, crucial for developing a requirements specification and overall software design. 4. **Weeks 5 & 6: Object-Oriented Methods** - Spanning two weeks, the course provides a comprehensive overview of object-oriented design using the Unified Modeling Language (UML). Students will acquire skills in describing objects and their relationships, as well as the design process. 5. **Weeks 7 & 8: Advanced Object-Oriented Methods and Agile Development** - The first part discusses human-computer interaction in object-oriented design, while the latter part introduces agile methodologies, emphasizing flexibility and rapid response to changing requirements. 6. **Week 9: Software Testing** - Testing is a critical phase in software development. This week covers various testing concepts, methodologies, and specific steps involved in effectively validating software. 7. **Week 10: Software Project Management** - Good project management is vital for success. This week introduces concepts and practices surrounding software project management, including well-established standards like CMM and ISO9000. 8. **Week 11: Software Development Tools and Environment** - The final week focuses on the tools and environments available for software development, providing practical insights that are essential for real-world application. #### Recommendations The "软件工程" course by Peking University is an excellent fit for anyone seeking to enter the software engineering domain, regardless of their previous experience level. Here are a few reasons why you should consider enrolling: - **Comprehensive Curriculum**: The course covers a broad spectrum of topics in software engineering, from fundamental principles to advanced methodologies, making it suitable for learners of all backgrounds. - **Strong Academic Backing**: Being offered by Peking University, one of the top universities in China, adds significant credibility to the course content and the quality of instruction provided. - **Practical Hands-On Experience**: The inclusion of a mini-project allows students to experience all phases of software development, reinforcing theoretical knowledge with practical application. - **Flexible Learning**: Being an online course, it offers flexibility to learn at your own pace, making it accessible to busy professionals and students alike. - **Community and Networking Opportunities**: Coursera's platform fosters a diverse learning community where participants from around the world can interact, share insights, and collaborate on projects. In conclusion, I highly recommend the 软件工程 course on Coursera for anyone looking to gain a foundational understanding of software engineering principles. The structure, content, and practical approach of this course make it an enriching experience that could significantly benefit your career in technology.

Syllabus

软件工程概论和软件过程

本周讲授软件和软件工程的基本概念,了解软件工程的知识框架。讲授软件生存周期过程和软件生存周期模型,介绍常见的软件生存周期模型。

软件需求

需求是软件开发的第一步。本周介绍软件需求的基本概念和分类,常见的需求发现方法,以及软件需求规约的相关知识。

结构化方法-1

结构化方法是经典的软件开发方法。本周介绍结构化分析方法和结构化设计方法的第一部分,讲解如何根据捕获到的需求进行分析,形成软件需求规格说明书,进而对软件进行总体设计。

结构化方法-2

结构化设计方法分为总体设计和详细设计两个步骤,本周继续介绍总体设计的体系结构设计、接口设计和数据设计部分,以及如何进行详细设计。

面向对象方法-1

面向对象方法是另一个经典的软件开发方法,从本周开始,我们将用四周的时间全面介绍该方法。本周我们学习统一建模语言UML,面向对象方法可采用UML来描述客体以及客体之间的关系。

面向对象方法-2

本周继续介绍UML。UML除了提供描述客体以及客体之间关系的术语以外,还提供了诸多建模工具,掌握这些建模工具对学习面向对象方法至关重要。

面向对象方法-3

在学习了UML的基础上,本周介绍面向对象分析和设计方法,讲解如何以面向对象的世界观、采取一定的步骤和方法来进行软件的分析和设计。

面向对象方法-4和敏捷开发方法

本周的第一次课讲授面向对象方法的最后一部分:面向对象设计中的人机交互、控制驱动、数据管理部分的设计,以及面向对象编程。第二次课介绍敏捷开发方法。敏捷开发方法与传统重过程的开发方法不同,强调对快速变化的需求的适应。

软件测试

测试是软件开发过程中非常重要的一个环节。本周从软件测试的概念入手,介绍测试的基本方法和常用技术,讲解软件测试的具体步骤。

软件项目管理

良好的项目管理是软件项目成功的重要因素,本周介绍项目管理的基本概念以及软件项目管理的概念,讲授CMM和ISO9000两大项目管理规范。

软件开发工具与环境

本周介绍常见的软件开发工具和环境,对具体软件开发有重要帮助。

Overview

欢迎大家选修北京大学开设的软件工程MOOC课程。 随着信息技术的发展,软件已经深入到人类社会生产和生活的各个方面。软件工程是将工程化的方法运用到软件的开发、运行和维护之中,以达到提高软件质量,降低开发成本的目的。软件工程已经成为当今最活跃、最热门的学科之一。 本次软件工程MOOC课程是一门导论性课程,在11周、21次课的时间里,我们将全面介绍软件工程所涉及的各方面知识,包括软件过程、软件需求、结构化分析和设计方法、面向对象分析和设计方法、敏捷开发方法、软件测试、软件项目管理、软件开发工具和环境。通过课程讲授,让大家初步了解软件开发和维护的方法学,为进一步深入学习各专题打下基础。 课程还包含了实践环节,通过一个小型软件项目,大家可以体验软件开发的各个环节,并形成项目管理的意识。 一、本次课程的安排如下: 第1周 软件工程概论、软件过程 第2周 软件需求 第3周 结构化方法1 第4周 结构化方法2 第5周 面向对象方法1 第6周 面向对象方法2

Skills

Reviews

两个多月的学习,对软件工程的方方面面有了较为全面的了解。工作中遇到的一些问题在课程中找到了答案。老师很负责,peer assignment review联系老师后亲自给了评分。希望在讲解面向对象的分析与设计时能再多用些具体的例子,就像讲解结构化方法举的那个转速系统那样。祝课程越来越好。