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

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

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

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

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

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

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

第2周 软件需求

第3周 结构化方法1

第4周 结构化方法2

第5周 面向对象方法1

第6周 面向对象方法2

第7周 面向对象方法3

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

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

Traffic lights

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

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

软件工程核心概念与实践入门

根据学生反馈,这门北京大学的软件工程导论课程为学习者提供了扎实的入门基础。课程内容涵盖广泛,系统梳理了软件开发的各个环节,从需求分析项目管理均有涉及。许多学习者称赞老师讲课清晰易懂课程组织结构有序习题有助于巩固知识实践项目被认为是理论与实践结合的重要部分,有助于动手应用所学方法。然而,项目互评机制是普遍反映的不足之处,部分学生认为评分不够公平或严谨。此外,平时测验占分过高的评分方案也受到一些质疑,部分评论认为测验深度有限,无法全面反映学习成果。总体而言,对于希望系统了解软件工程全貌的初学者,这是一门值得推荐的课程,但期望深入钻研或需要严谨实践反馈的学习者可能需要额外补充学习
帮助结合理论与实践。
"课程还包含了实践环节,通过一个小型软件项目,大家可以体验软件开发的各个环节..."
"实践项目理论和实践结合得很好,能让你动手实践一下。"
"实践项目虽然小,但能让你把学到的方法用一遍,很有意义。"
老师讲解细致,课程结构好。
"老师讲课深入浅出,习题也很有代表性。"
"课程内容组织有序,每周一个主题。"
"理论知识讲解清晰,配合PPT很好理解。"
提供软件工程全面入门。
"北京大学的这门软件工程课讲得非常系统,...对理解整个软件开发生命周期非常有帮助。"
"这门课覆盖面很广,把软件工程的主要知识点都带到了,作为入门课程来说很不错。"
"非常好的人门课。内容涵盖了从需求到测试、管理的整个流程。"
部分主题未深入探讨。
"课程内容比较全面,但感觉有些章节讲得不够深入,特别是面向对象和敏捷开发部分,只是点到为止。"
"对我这种想学点实际开发流程的人来说帮助不大。可能更适合...完全零基础的人。"
评分方案侧重测验被质疑。
"平时测验占分太高了,感觉有点不合理,应该提高项目部分的比重。"
"平时测验多是选择题,感觉无法真正检验对概念的理解深度。"
"测验占分那么高,但题目深度有限,感觉是为了考试而考试。"
项目互评公平性受质疑。
"唯一的不足可能是实践项目,感觉互评机制不是特别严谨,分数可能不太公平。"
"实践项目的指导不是很详细,对于新手来说有点难度。...互评分数容易有偏差。"
"不过项目的互评部分确实有点随意,希望能改进。"
"冲着北大名头来的,结果有点失望。...互评太儿戏了。"

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 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 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 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.
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.
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.
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:

Similar courses

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser