As the science of software engineering matures and our tools for building software systems improve, software has pervaded every facet of modern life. Ranging from simple web pages or small smartphone applications, to highly technology-intensive, complex business, defense, aerospace or transportation projects, some challenges of software development has proven stubbornly difficult to overcome. With up to a third of software projects cancelled before completion and many more challenged, some suggest that even though software projects are ever increasing in scope and complexity, the industry's ability to improve on project delivery has stagnated. Evidence from annual studies such as those of the Standish Group support this contention. Taking an in-depth look at the contributors to project success, attention needs to be given not just to areas of software requirements, architecture and design, but across all aspects of the software life cycle.
This 5-day course in Software Engineering provides an overview of the elements for the effective realization of software and software-intensive systems that are cost-effective, on schedule and meet stakeholder needs over the full life cycle.
The course approaches software development from, simultaneously, a software technology and a systems perspective in the engineering of small and large, simple and complex software, and software-intensive systems. The course provides proven principles and effective methods for creating solutions to satisfying stakeholders with excellent, cost-effective software.This course is recognized by Engineers Australia for CPD purposes (40 hours). This course may be credited toward the maintenance of the INCOSE Certified Systems Engineering Professional (CSEP) accreditation for 40 Professional Development Units. This course is recognized by ECSA South Africa (ref. INCOSE 20/005) for CPD 5 points.
THIS COURSE IS AVAILABLE FOR CORPORATE TRAINING ONLY.
Key Learning Objectives:
At the conclusion of this course participants will:
- be better equipped to plan, specify, develop, supply, maintain and operate software or software-intensive systems. Experienced software professionals will further develop their skills through exposure to the latest advances in software engineering practice;
- understand the body of public domain knowledge regarding software engineering practice, for example, ISO/IEC/IEEE 12207, other ISO and IEEE standards, the Software Engineering Institute (SEI) Capability Maturity Models, and the Guide to the Software Engineering Body of Knowledge (SWEBOK);
- be an agent of change for the better towards improvement of software project performance in their organization; and
- identify root causes of software development problems in their organization and drive effective solutions.
Training Method and Materials:
The course is delivered using a mixture of presentation, discussion and a variety of practical exercises and group work sessions. The course utilizes different adult learning techniques optimized for the type of content that needs to be mastered.
Throughout the course there is a strong focus on interaction, variety, the social aspects of learning and integration with the learner’s existing knowledge framework. The result is a highly engaging course with a great degree of subject mastery.
In this software engineering course, you will be provided with numerous supplementary descriptions, forms and charts which you can put to use immediately.
Some Key Questions:
- Why do so many software projects fail?
- Which paradigms, methodologies, models and standards are used in software development? What should be used where and more importantly, why?
- What are the leading software development technical and management practices?
- What are agile development method and techniques and where do they apply?
- What are other software development methodologies, and what is their application?
- How do you determine whether software requirements are adequate?
- What are the commonly used analysis and design patterns, techniques and tools?
- What are verification and validation and how are they effectively integrated with core development activities?
- How do you develop software architecture and what is its significance?
- How should software-intensive projects be planned and managed?
- How do you implement a cost-effective risk management program?
- What can be done to extract maximum value from inspections and technical reviews?
- What is the role of metrics in software development?
- How do you establish and maintain effective software development teams?
- What additional techniques are used for developing critical and trusted systems?
Who Should Attend This Course?
This course is designed for people who are responsible for specifying, acquiring, developing, evaluating, supporting and/or managing software or software-intensive systems, for example:
- software development team leaders
- software engineers
- business analysts
- systems engineers
- project managers of software-intensive projects
- verification & validation managers
- verification & validation personnel
- configuration managers
- system safety managers
- safety engineers
- system reliability managers
- system reliability engineers
- software maintainers
- software procurement managers
- risk managers
- cost engineers.
1. Introduction and Overview
- introduce the presenter and go over the learning methodology
- an overview of course structure and methodology
- general introduction into software engineering
- history of software development, recent trends, the current state and beyond the current state
- an engineering approach to software development including concurrent engineering, systems methodology and thinking
- key role-players in a typical software development environment
- life cycle characteristics and typical stages
- process fundamentals and development models
- sequential versus incremental and iterative development models
- different software development methodologies and their applicability
- the performance of different software development methodologies
- lean software development and value-driven design
- tailoring and process improvement principles
2. Technical Processes
- requirement analysis
- system requirements, system boundaries, hierarchy and subsystems
- requirement quality attributes and other fundamentals
- requirement documentation, natural language, UML, and storyboards
- requirement parsing
- concept of use documents
- software tools
- common pitfalls in performing RA
- software design
- design fundamentals
- architectural styles and patterns
- evolutionary architecture
- design methods
- software design notations and presentations
- documentation and tools
- software construction
- dealing with complexity
- standards for coding
- assessing quality
- system and software integration
- integration strategies
- system orientated architecture
- web services
- communication protocols
- interface controls
- pitfalls and pointers
- validation and verification
- formal, informal, technical, design, code, requirement and other reviews
- other V&V methods
- transition (transfer between different owners)
- operations, maintenance and support
- disposal or retirement
3. Project Processes
- project management: frameworks, planning, assessment and control
- estimation and costing
- risk management
- configuration management
- change management
- quality management
- release and deployment
- information management
- human elements and building effective teams
4. Agreement Processes
- overview and contract models
5. Enterprise-Level Processes
- project portfolio management and program management
- life cycle model management
- quality management
- human resource management
- knowledge management
- enterprise tools
6. Specialty Fields
This section briefly looks at a couple of specialty fields, providing enough information to appreciate the significance and be able to interact with experts in the field. Topics include:
- engineering of trusted/high integrity systems
- software life cycle cost analysis
- usability analysis and human system integration