|
Advanced Software Engineering for Working Professionals
Do you want to advance your career? Do you want to increase your on-the-job value?
OMSE is a graduate level software engineering education program designed specifically for working software and information technology professionals. The program tracks the dynamic and evolving discipline of software engineering offering graduate level degrees, certificates, and professional courses in software engineering. OMSE provides flexibility and convenience for busy professionals by offering evening, on-line and hybrid courses thereby integrating learning with work and personal obligations. Because all students are working professionals, and because faculty have practical industry experience, learning among students and faculty is a highly charged and collaborative experience for everyone involved.
OMSE offers concrete added-value for both software professionals and their companies - and there is a close fit between what OMSE teaches and what industry needs. Launched in 1998, the OMSE program was specifically designed to meet the needs of high-tech companies and their customers. In contrast to more academic degree programs, OMSE explores the best and most relevant practices of the software industry, namely, those that can be applied cost-effectively to create software products that serve the needs, requirements and expectations of both customers and users.
Requirements and technical solutions for software problems vary widely - one size does not fit all. Therefore OMSE approaches software engineering holistically - balancing the breadth and depth of technical, management and strategic aspects. According to the needs of the problem at hand, the OMSE program explores the full range of software engineering practices - from light-weight agile ones, to more rigorous methods and tools needed to tackle mission-critical software projects.
OMSE is an advanced program for busy software professionals wanting to learn how to apply best industry practices to the challenges of creating software supporting operational systems. OMSE offers 3 program options:
- Master of Software Engineering (MSE) Degree: This program is comprised of 13 required OMSE courses plus three electives for a total of 16 courses (48 credits). The program includes a practicum experience.
- Graduate Certificate in Software Engineering: This program is comprised of 5 required OMSE courses. There are no electives and there is no practicum experience. Completed certificate courses also count towards the masters degree.
- Professional Development Courses in Software Engineering: Qualifying students can take courses for professional development provided they have completed the required pre-requisites.
Important Note: Students must have at least a bachelor's degree and two year's experience to take any OMSE course, regardless of the option (1, 2 and 3). In addition, certain courses have pre-requisites (see curriculum/courses page).
Career Advancement: Whether you work in a small start-up company or a highly evolved enterprise, OMSE gives you the tools and practice to influence your company's practices, introduce software process improvements, and thereby position yourself to an enhanced role within your company and career advancement.
Engagement with Professional Faculty: OMSE students engage with professional faculty, all of whom have practical and long-time industry experience. OMSE faculty are from Portland State University, the University of Oregon, and practitioners from the software and IT industry.
Engagement with other Professionals: Through the program, OMSE students interact with the best and brightest software professionals working in industry. Students learn a lot from the experience of their fellow students and faculty through the collaborative program delivery approach.
Relevance: Student testimonials confirm that what they learn can be applied immediately to problems on the job which enhances their credibility and gives them an edge in the workplace.
Currency: Through the OMSE Industry Advisory Board, and OMSE alumni, OMSE connects with the software and IT industry which continuously shapes the program and ensures relevance of courses and content.
Sharing: Through "OMSE Exchange", current and emerging software engineering practices are shared among industry affiliates, students, alumni and faculty. These artifacts include software process specifications, practicum projects, guidelines, templates, checklists, sample work products, white papers, articles, and tools
Our software engineering courses are offered in face-to-face, online and "hybrid" delivery modes. Face-to-face classes are scheduled in the edge hours (mainly evenings, sometimes weekends). Online classes are evenly paced over the weeks of the term allowing students to participate more flexibly. OMSE hybrid course offerings combine face-to-face and online modes whereby students can elect to attend face-to-face sessions or review recorded audio-video streams of the face-to-face sessions. These approaches have been designed to maximize choices and convenience of learning to integrate more effectively with the working student's busy lifestyle.
Regardless of the option that fits your needs, to register in an OMSE course you need to demonstrate that you have at least two years of software development experience. You may ask, "What qualifies as software development experience?" and "Why do I need such experience to register in an OMSE course?
Experience in software is required to help ensure your success in the OMSE program. Our aim is to help you improve your software engineering knowledge and skills, and apply them as early as possible to your current or future assignments at work. There is no substitute for real-life experience tackling the practical problems at hand.
Commercial software development involves everything from requirements to software design, to coding, to testing, and a lot more. Engineers who have experience across these areas will benefit most from our program. You must have written some code and have had some basic experience with the practical problems of producing operational software within the usual constraints of cost, time and quality.
If you have spent several years writing software and have been involved in most phases of software development, you clearly have appropriate background to take OMSE courses. Some basic knowledge of programming is critical to qualify, but being a skilled programmer is not the only kind of experience that will qualify you. For example, you might have a fair amount of experience developing and specifying software requirements or performing software quality assurance and software testing. Or you may have good project management experience in another technical area with some basic knowledge of software development.
Our instructors share their in-depth software industry experience with the class and use real-world problems and examples to provide context to the learning. Our competent faculty members encourage students to integrate their work experiences with learning through assignments, case studies, and class or team discussions. Students thereby learn from each other as well as from our faculty.
OMSE's management focused courses:
- introduce software engineering principles and processes
- study processes needed to effectively manage software projects
- practice communications and leadership skills needed to work successfully in teams
- teach critical decision making techniques
- explore methods that directly influence software quality and productivity.
OMSE's technically focused courses address:
- specifying and controlling requirements
- developing and specifying stable software architectures and designs
- applying modeling and analysis techniques to address software quality attributes
- constructing, integrating, testing and releasing software work products
- controlling system configurations, problems/bugs, and changes
- applying suitable quality engineering, quality assurance and testing techniques.
OMSE also addresses strategic aspects and offers a team-oriented practicum experience:
Our graduate degree rounds out the management and technical dimensions with a course addressing strategic aspects of software engineering followed by a team-oriented practicum experience applying the practices learned throughout the program.
In the late 1980s, the software industry began to recognize the growing “software crisis”. Practitioners soon recognized the differences between the more theoretic objectives of computer science and the more practical and product-oriented goals of software engineering. The Software Engineering Institute (SEI) was soon established to launch various studies and guidance to improve software maturity and capability across the industry.
In the late 1990s, poor quality software in the dot-com industry led to many of the business failures of the time. Soon thereafter, agile processes and extreme programming began to gain traction, and the open source software community sprang up challenging proprietary technologies and traditional ways of thinking about software development.
More recently, enterprises have become increasingly aware of the threats to their software assets and their obligations to protect the privacy of their employees and customers. The associated risks have refocused the software and IT industry on maximizing software competencies, improving software engineering processes, and harnassing competive advantage from software products and processes. Software know-how, best practices, and software IP are indeed critical core resources that need to be protected and cultivated.
The Oregon Master of Software Engineering program provides software practitioners with the knowledge, techniques and tools needed to address these challenges and develop better, more capable software solutions.
Software engineering applies engineering and management principles to the challenges of constructing and maintaining software intensive systems and products. In other fields of engineering, known technologies, empirical data, theories, quantitative analysis, experimentation, and testing are brought to bear on the problem. Software engineers apply very similar practices. However, their analysis and decision-making work leverages computing and software foundations discovered by computer scientists, mathematicians and the like. Software engineers, then, use facts and data together with process-oriented thinking and logic to ensure that software products will meet organizational, financial, market, and technical requirements.
The OMSE Curriculum addresses the technical aspects of designing and constructing software solutions as well as the processes needed to effectively manage the development effort. The program also considers strategic factors and trade-offs, supports systematic critical decision making, and tailors best known practices to the needs of the customer, market forces, program risks, and the technical complexity of the solution. We study systematic, evolutionary, incremental and agile methods, techniques and tools. Lifecycle processes - from requirements through design, to integration and testing - are explored in depth. Support processes, including configuration management, quality assurance, and project management, are integral to the curriculum. The OMSE program and courses address the following:
- Requirements Engineering: eliciting them from users and the customer; defining them, specifying them; and controlling their development
- Software Architecture and Design: software design principles and techniques for making the most appropriate design decisions and specifying the ideal architectural design
- Software Implementation/Construction: detailed design, coding, debugging, integrating, testing and optimizing to build a suitable software solution
- Quality Assurance and Testing: multiple levels of testing, testing methods and tools, defect tracking and resolution techniques for correcting defects and meeting requirements
- Evolution and maintenance: principles and methods for effective maintenance of software including documentation, inspection, software evolution
- Configuration Management: identification and control of changes to requirements, designs, code, tests, plans and documentation
- Quality Assurance / Quality Engineering: best practices in place and continuously improved; software products meet requirements including quality objectives
- Managing Software Development: software project objectives, organization, milestones, activities, and processes are planned and controlled
- Other Software Engineering Practices: professional communications: formal methods; system modeling; quantitative decision-making; metrics; emerging software engineering strategies
|