We may earn an affiliate commission when you visit our partners.
Course image
孙艳春

欢迎大家选修北京大学开设的软件工程MOOC课程。

随着信息技术的发展,软件已经深入到人类社会生产和生活的各个方面。软件工程是将工程化的方法运用到软件的开发、运行和维护之中,以达到提高软件质量,降低开发成本的目的。软件工程已经成为当今最活跃、最热门的学科之一。

Read more

欢迎大家选修北京大学开设的软件工程MOOC课程。

随着信息技术的发展,软件已经深入到人类社会生产和生活的各个方面。软件工程是将工程化的方法运用到软件的开发、运行和维护之中,以达到提高软件质量,降低开发成本的目的。软件工程已经成为当今最活跃、最热门的学科之一。

本次软件工程MOOC课程是一门导论性课程,在11周、21次课的时间里,我们将全面介绍软件工程所涉及的各方面知识,包括软件过程、软件需求、结构化分析和设计方法、面向对象分析和设计方法、敏捷开发方法、软件测试、软件项目管理、软件开发工具和环境。通过课程讲授,让大家初步了解软件开发和维护的方法学,为进一步深入学习各专题打下基础。

课程还包含了实践环节,通过一个小型软件项目,大家可以体验软件开发的各个环节,并形成项目管理的意识。

一、本次课程的安排如下:

第1周 软件工程概论、软件过程

第2周 软件需求

第3周 结构化方法1

第4周 结构化方法2

第5周 面向对象方法1

第6周 面向对象方法2

第7周 面向对象方法3

第8周 面向对象方法4、敏捷开发方法

第9周 软件测试

第10周 软件项目管理

第11周 软件开发工具和环境

二、课程实践

本课程提供了三个实践题目,每个实践题目已列出三点基本需求,可在课程介绍的讲义中查看。请结合自身兴趣爱好从中任选其一,在仔细阅读并思考基本需求的基础之上额外补充一个需求,以此作为系统需求完成本次课程实践。

课程实践分为三个阶段,分别在第4周、第7周和第10周进行结构化方法、面向对象方法、软件测试和项目管理的实践,完成相应的文档报告。

实践成绩由同学互评给出,每位同学需要给其他三位同学的报告评分。

三、课程评分方案

在新的课程版本里,我们将课程实践所占的分数从30%降低到了12%。但我们依然鼓励同学们积极地完成课程实践的练习,加深对课程的理解。

(1)平时Quiz占88%

(2)课程实践占12%

祝大家学习愉快!

Enroll now

What's inside

Syllabus

软件工程概论和软件过程
本周讲授软件和软件工程的基本概念,了解软件工程的知识框架。讲授软件生存周期过程和软件生存周期模型,介绍常见的软件生存周期模型。
软件需求
需求是软件开发的第一步。本周介绍软件需求的基本概念和分类,常见的需求发现方法,以及软件需求规约的相关知识。
Read more
结构化方法-1
结构化方法是经典的软件开发方法。本周介绍结构化分析方法和结构化设计方法的第一部分,讲解如何根据捕获到的需求进行分析,形成软件需求规格说明书,进而对软件进行总体设计。
结构化方法-2
结构化设计方法分为总体设计和详细设计两个步骤,本周继续介绍总体设计的体系结构设计、接口设计和数据设计部分,以及如何进行详细设计。
面向对象方法-1
面向对象方法是另一个经典的软件开发方法,从本周开始,我们将用四周的时间全面介绍该方法。本周我们学习统一建模语言UML,面向对象方法可采用UML来描述客体以及客体之间的关系。
面向对象方法-2
本周继续介绍UML。UML除了提供描述客体以及客体之间关系的术语以外,还提供了诸多建模工具,掌握这些建模工具对学习面向对象方法至关重要。
面向对象方法-3
在学习了UML的基础上,本周介绍面向对象分析和设计方法,讲解如何以面向对象的世界观、采取一定的步骤和方法来进行软件的分析和设计。
面向对象方法-4和敏捷开发方法
本周的第一次课讲授面向对象方法的最后一部分:面向对象设计中的人机交互、控制驱动、数据管理部分的设计,以及面向对象编程。第二次课介绍敏捷开发方法。敏捷开发方法与传统重过程的开发方法不同,强调对快速变化的需求的适应。
软件测试
测试是软件开发过程中非常重要的一个环节。本周从软件测试的概念入手,介绍测试的基本方法和常用技术,讲解软件测试的具体步骤。
软件项目管理
良好的项目管理是软件项目成功的重要因素,本周介绍项目管理的基本概念以及软件项目管理的概念,讲授CMM和ISO9000两大项目管理规范。
软件开发工具与环境
本周介绍常见的软件开发工具和环境,对具体软件开发有重要帮助。

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
适合想要学习软件工程基本概念和原理的学生。
面向希望系统地了解软件工程方法论的学生。
北京大学开设的课程,具有权威性和学术性。
涵盖软件开发的各个阶段,从需求分析到测试和维护。
提供实践环节,让学生体验实际的软件开发过程。
课程内容偏基础,更适合入门学习。

Save this course

Save 软件工程 to your list so you can find it easily later:
Save

Reviews summary

Solid software engineering course

Students describe this course as a comprehensive and well-organized introduction to software engineering. With a focus on providing an overview of the field, this course is recommended for those seeking a strong foundation in software engineering principles such as software processes, requirements, and testing.

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in 软件工程 with these activities:
Review Software Engineering
Brush up on Software Engineering concepts
Browse courses on Software Engineering
Show steps
  • Revisit software development life cycle (SDLC) models
  • Review requirements engineering techniques
  • Recall software design principles
Connect with software engineers or industry professionals
Gain guidance and insights from experienced professionals
Browse courses on Mentoring
Show steps
  • Identify potential mentors at meetups, conferences, or through online platforms
  • Reach out to mentors and express your interest in learning from them
  • Arrange regular meetings or discussions to seek advice and guidance
Follow software development tutorials
Practice software development skills
Browse courses on Software Development
Show steps
  • Find tutorials on programming languages or software frameworks
  • Follow the tutorials step-by-step
  • Try out the code examples provided
Four other activities
Expand to see all activities and additional details
Show all seven activities
Solve software design problems
Enhance problem-solving and design skills
Browse courses on Problem Solving
Show steps
  • Identify a software design problem or scenario
  • Apply software engineering principles to design a solution
  • Evaluate the design and identify potential improvements
Participate in study groups or code reviews
Enhance understanding and improve communication
Show steps
  • Find or form a study group or code review session
  • Discuss course materials, share insights, and ask questions
  • Provide feedback and critique on each other's work
Design and implement a software project
Gain hands-on experience in software development
Show steps
  • Define the project scope and requirements
  • Design the software architecture and components
  • Implement the software code
  • Test and debug the software
  • Deploy and maintain the software
Contribute to open-source software projects
Gain practical experience and contribute to the community
Browse courses on Open Source
Show steps
  • Find open-source projects that align with your interests and skills
  • Review the project documentation and codebase
  • Identify areas where you can contribute
  • Submit code changes or report issues to the project

Career center

Learners who complete 软件工程 will develop knowledge and skills that may be useful to these careers:
Software Developer
Software Developers apply engineering principles to create and implement computer software solutions, either alone or as part of a team. This course can help those in this role to become more knowledgeable and skilled in software engineering by covering topics relevant to the software development lifecycle, from requirements gathering and analysis, to design, implementation, testing, and deployment of software systems.
Software Engineer
Software Engineers design, develop, test, and maintain computer software, which can include operating systems, computer networks, databases, machine learning algorithms, and cybersecurity protocols. This course can help someone in this role by building a foundation in software engineering principles, software process, software requirements gathering, and software testing.
Software Architect
Software Architects design and oversee the development of complex software systems, ensuring that they meet business and technical requirements. This course can help Software Architects by developing a sophisticated understanding of software engineering, including software modeling, software design, and software project management.
Software Test Engineer
Software Test Engineers are responsible for planning and executing software tests to ensure that software meets the requirements and specifications, and that software defects are minimized. This course may be useful for Software Test Engineers who want to increase their knowledge and understanding of software engineering best practices, software testing methodologies, and software quality assurance.
Software Project Manager
Software Project Managers oversee all aspects of software development projects, from planning and budgeting to execution, tracking, and completion. This course may be useful for Software Project Managers who wish to expand their knowledge of the software development process, software project management techniques, and software engineering principles.
Systems Analyst
Systems Analysts study business processes to identify their needs and develop software solutions. Systems Analysts must be able to bridge the gap between business and IT. This course has materials relevant to Systems Analysts, such as requirements gathering, software design, and project management.
Database Administrator
Database Administrators maintain and oversee the databases used by organizations. This course may be useful to those in this role by providing a foundation in software engineering principles, software design, and software testing.
Data Scientist
Data Scientists collect, analyze, and interpret data to extract meaningful insights and develop solutions or predictions. This course may be useful to those in this role by building a foundation in software engineering, software development, software design, and software testing.
Quality Assurance (QA) Analyst
Quality Assurance Analysts ensure the quality of products and services by planning and executing tests, analyzing results, and making recommendations for improvements. While this course focuses on software engineering, the principles of software testing are transferable to the broader field of quality assurance. Those in this role may find value in the software testing methodologies and software quality assurance techniques covered in this course.
Technical Writer
Technical Writers create and maintain technical documentation, such as user manuals, training materials, and marketing materials. This course may be useful for those in this role by providing a foundation in software engineering principles and software development, which can help them better understand the products and technologies they are writing about.
Product Manager
Product Managers lead the development and launch of new products or features. This course may be useful for those in this role by providing an introduction to software engineering, which is essential for understanding the technical aspects of product development.
Computer Programmer
Computer Programmers write and maintain the code that makes software and applications function. This course may be useful for Computer Programmers who want to learn more about software engineering principles and best practices, and who want to develop their skills in the design, development, and testing of software systems.
Information Security Analyst
Information Security Analysts protect computer networks and systems from unauthorized access and attacks. This course may be useful to security professionals who wish to gain a deeper understanding of software engineering principles, software security, and software testing methodologies.
UX Designer
UX Designers design and evaluate the user experience of products and services, including websites, apps, and software. This course may be useful for UX Designers who wish to expand their knowledge of software engineering principles, software design, and software testing, as these concepts can help them create more user-friendly and effective products and services.
Web Developer
Web Developers design and develop websites and web applications. This course may be useful to Web Developers who wish to develop a stronger foundation in software engineering principles, software design, and software testing, which can help them create more robust and user-friendly websites and web applications.

Reading list

We've selected eight books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in 软件工程.
Classic in the field of software engineering. It provides a comprehensive overview of the software development process, from requirements gathering to software testing and maintenance. It valuable resource for students and professionals who want to learn about the best practices of software engineering.
Provides a comprehensive overview of software engineering fundamentals, including software development processes, requirements engineering, software design, software testing, and software maintenance. It valuable resource for students and professionals who want to gain a solid foundation in software engineering principles.
本书是设计模式领域的经典著作,详细介绍了23种经典的设计模式。
Provides a comprehensive overview of object-oriented software engineering principles and practices. It covers topics such as UML modeling, design patterns, and Java programming. It valuable resource for students and professionals who want to learn how to develop object-oriented software systems.
本书是浙江大学计算机系软件测试专业本科生的教材,全面介绍了软件测试的基本原理和实践方法。内容包括测试计划、测试设计、测试执行等。
Provides a comprehensive overview of agile software development principles and practices. It covers topics such as Scrum, Kanban, and Test-Driven Development. It valuable resource for students and professionals who want to learn how to develop software using agile methods.
Provides a comprehensive overview of software testing principles and practices. It covers topics such as test planning, test design, and test execution. It valuable resource for students and professionals who want to learn how to test software effectively.

Share

Help others find this course page by sharing it with your friends and followers:
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser