ÁREAS ENGENHARIA DE
SOFTWARE
Agile software development
Objectives
The objective of this chapter is to introduce you to agile software development
methods. When you have read the chapter, you will:
• understand the rationale for agile software development methods, the agile
manifesto, and the differences between agile and plan-driven development;
• know the key practices in extreme programming and how these relate to the general
principles of agile methods;
• understand the Scrum approach to agile project management;
• be aware of the issues and problems of scaling agile development methods to the
development of large software systems.
Contents
3.1 Agile methods
3.2 Plan-driven and agile development
3.3 Extreme programming
3.4 Agile project management
3.5 Scaling agile methods
Requirements engineering
Objectives
The objective of this chapter is to introduce software requirements and to discuss the processes involved
in discovering and documenting these requirements. When you have read the chapter you will:
• understand the concepts of user and system requirements and why these requirements should be
written in different ways;
• understand the differences between functional and nonfunctional software requirements;
• understand how requirements may be organized in a software requirements document;
• understand the principal requirements engineering activities of elicitation, analysis and validation,
and the relationships between these activities;
• understand why requirements management is necessary and how it supports other requirements
engineering activities.
Contents
4.1 Functional and non-functional requirements
4.2 The software requirements document
4.3 Requirements specification
4.4 Requirements engineering processes
4.5 Requirements elicitation and analysis
4.6 Requirements validation
4.7 Requirements management
Design and implementation
Objectives
The objectives of this chapter are to introduce object-oriented software design using the
UML and highlight important implementation concerns. When you have read this chapter,
you will:
• understand the most important activities in a general, object-oriented design process;
• understand some of the different models that may be used to document an object-
oriented design;
• know about the idea of design patterns and how these are a way of reusing design
knowledge and experience;
• have been introduced to key issues that have to be considered when implementing
software, including software reuse and open-source development.
Contents
7.1 Object-oriented design using the UML
7.2 Design patterns
7.3 Implementation issues
7.4 Open source development
System modeling
Objectives
The aim of this chapter is to introduce some types of system model that may be developed as
part of the requirements engineering and system design processes. When you have read the
chapter, you will:
• understand how graphical models can be used to represent software systems;
• understand why different types of model are required and the fundamental system
modeling perspectives of context, interaction, structure, and behavior;
• have been introduced to some of the diagram types in the Unified Modeling Language
(UML) and how these diagrams may be used in system modeling;
• be aware of the ideas underlying model-driven engineering, where a system is
automatically generated from structural and behavioral models.
Contents
5.1 Context models
5.2 Interaction models
5.3 Structural models
5.4 Behavioral models
5.5 Model-driven engineering
Software testing
Objectives
The objective of this chapter is to introduce software testing and software testing processes.
When you have read the chapter, you will:
• understand the stages of testing from testing, during development to acceptance testing
by system customers;
• have been introduced to techniques that help you choose test cases that are geared to
discovering program defects;
• understand test-first development, where you design tests before writing code and run
these tests automatically;
• know the important differences between component, system, and release testing and be
aware of user testing processes and techniques.
Contents
8.1 Development testing
8.2 Test-driven development
8.3 Release testing
8.4 User testing
Security engineering
Objectives
The objective of this chapter is to introduce issues that should be considered when you are
designing secure application systems. When you have read this chapter, you will:
• understand the difference between application security and infrastructure security;
• know how life-cycle risk assessment and operational risk assessment are used to
understand security issues that affect a system design;
• be aware of software architectures and design guidelines for secure systems
development;
• understand the notion of system survivability and why survivability analysis is important
for complex software systems.
Contents
14.1 Security risk management
14.2 Design for security
14.3 System survivability
Component-based software engineering
Objectives
The objective of this chapter is to describe an approach to software reuse based on the
composition of reusable, standardized components. When you have read this chapter you
will:
know that component-based software engineering is concerned with
developing standardized components based on a component model,
and composing these into application systems;
understand what is meant by a component and a component model;
know the principal activities in the CBSE process for reuse and the
CBSE process with reuse;
understand some of the difficulties and problems that arise during the
process of component composition.
Contents
17.1 Components and component models
17.2 CBSE processes
17.3 Component composition
Aspect-oriented software engineering
Objectives
The objective of this chapter is to introduce you to aspect-oriented
software development, which is based on the separation of concerns.
When you have read this chapter, you will:
understand why the separation of concerns is a good guiding principle
for software development;
have been introduced to the fundamental ideas underlying aspects
and aspect-oriented software development;
understand how an aspect-oriented approach may be used for
requirements engineering, software design, and programming;
be aware of the difficulties of testing aspect-oriented systems.
Contents
21.1 The separation of concerns
21.2 Aspects, join points, and pointcuts
21.3 Software engineering with aspects
Quality management
Objectives
The objectives of this chapter are to introduce software quality management and software
measurement. When you have read the chapter, you will:
• have been introduced to the quality management process and know why quality planning is
important;
• understand that software quality is affected by the software development process used;
• be aware of the importance of standards in the quality management process and know how
standards are used in quality assurance;
• understand how reviews and inspections are used as a mechanism for software quality
assurance;
• understand how measurement may be helpful in assessing some software quality attributes
and the current limitations of software measurement.
Contents
24.1 Software quality
24.2 Software standards
24.3 Reviews and inspections
24.4 Software measurement and metrics
Configuration management
Objectives
The objective of this chapter is to introduce you to configuration management processes and
tools. When you have read the chapter, you will:
• understand the processes and procedures involved in software change management;
• know the essential functionality that must be provided by a version management system,
and the relationships between version management and system building;
• understand the differences between a system version and a system release, and know the
stages in the release management process.
Contents
25.1 Change management
25.2 Version management
25.3 System building
25.4 Release management
Process improvement
Objectives
The objective of this chapter is to introduce software process improvement as a way of
increasing software quality and reducing development costs. When you have read the chapter,
you will:
• understand the rationale for software process improvement as a means of improving both
product quality and the efficiency and effectiveness of software processes;
• understand the principles of software process improvement and the cyclic process
improvement process;
• know how the Goal-Question-Metric approach may be used to guide process measurement;
• have been introduced to the ideas of process capability and process maturity, and the
general form of the SEI’s CMMI model for process improvement.
Contents
26.1 The process improvement process
26.2 Process measurement
26.3 Process analysis
26.4 Process change
26.5 The CMMI process improvement framework
Project management
Objectives
The objective of this chapter is to introduce software project management and two important
management activities, namely risk management and people management. When you have
read the chapter you will:
• know the principal tasks of software project managers;
• have been introduced to the notion of risk management and some of the risks that can arise
in software projects;
• understand factors that influence personal motivation and what these might mean for
software project managers;
• understand key issues that influence team working, such as team composition, organization,
and communication.
Contents
22.1 Risk management
22.2 Managing people
22.3 Teamwork

SWBOKKA

  • 1.
  • 2.
    Agile software development Objectives Theobjective of this chapter is to introduce you to agile software development methods. When you have read the chapter, you will: • understand the rationale for agile software development methods, the agile manifesto, and the differences between agile and plan-driven development; • know the key practices in extreme programming and how these relate to the general principles of agile methods; • understand the Scrum approach to agile project management; • be aware of the issues and problems of scaling agile development methods to the development of large software systems. Contents 3.1 Agile methods 3.2 Plan-driven and agile development 3.3 Extreme programming 3.4 Agile project management 3.5 Scaling agile methods
  • 3.
    Requirements engineering Objectives The objectiveof this chapter is to introduce software requirements and to discuss the processes involved in discovering and documenting these requirements. When you have read the chapter you will: • understand the concepts of user and system requirements and why these requirements should be written in different ways; • understand the differences between functional and nonfunctional software requirements; • understand how requirements may be organized in a software requirements document; • understand the principal requirements engineering activities of elicitation, analysis and validation, and the relationships between these activities; • understand why requirements management is necessary and how it supports other requirements engineering activities. Contents 4.1 Functional and non-functional requirements 4.2 The software requirements document 4.3 Requirements specification 4.4 Requirements engineering processes 4.5 Requirements elicitation and analysis 4.6 Requirements validation 4.7 Requirements management
  • 4.
    Design and implementation Objectives Theobjectives of this chapter are to introduce object-oriented software design using the UML and highlight important implementation concerns. When you have read this chapter, you will: • understand the most important activities in a general, object-oriented design process; • understand some of the different models that may be used to document an object- oriented design; • know about the idea of design patterns and how these are a way of reusing design knowledge and experience; • have been introduced to key issues that have to be considered when implementing software, including software reuse and open-source development. Contents 7.1 Object-oriented design using the UML 7.2 Design patterns 7.3 Implementation issues 7.4 Open source development
  • 5.
    System modeling Objectives The aimof this chapter is to introduce some types of system model that may be developed as part of the requirements engineering and system design processes. When you have read the chapter, you will: • understand how graphical models can be used to represent software systems; • understand why different types of model are required and the fundamental system modeling perspectives of context, interaction, structure, and behavior; • have been introduced to some of the diagram types in the Unified Modeling Language (UML) and how these diagrams may be used in system modeling; • be aware of the ideas underlying model-driven engineering, where a system is automatically generated from structural and behavioral models. Contents 5.1 Context models 5.2 Interaction models 5.3 Structural models 5.4 Behavioral models 5.5 Model-driven engineering
  • 6.
    Software testing Objectives The objectiveof this chapter is to introduce software testing and software testing processes. When you have read the chapter, you will: • understand the stages of testing from testing, during development to acceptance testing by system customers; • have been introduced to techniques that help you choose test cases that are geared to discovering program defects; • understand test-first development, where you design tests before writing code and run these tests automatically; • know the important differences between component, system, and release testing and be aware of user testing processes and techniques. Contents 8.1 Development testing 8.2 Test-driven development 8.3 Release testing 8.4 User testing
  • 7.
    Security engineering Objectives The objectiveof this chapter is to introduce issues that should be considered when you are designing secure application systems. When you have read this chapter, you will: • understand the difference between application security and infrastructure security; • know how life-cycle risk assessment and operational risk assessment are used to understand security issues that affect a system design; • be aware of software architectures and design guidelines for secure systems development; • understand the notion of system survivability and why survivability analysis is important for complex software systems. Contents 14.1 Security risk management 14.2 Design for security 14.3 System survivability
  • 8.
    Component-based software engineering Objectives Theobjective of this chapter is to describe an approach to software reuse based on the composition of reusable, standardized components. When you have read this chapter you will: know that component-based software engineering is concerned with developing standardized components based on a component model, and composing these into application systems; understand what is meant by a component and a component model; know the principal activities in the CBSE process for reuse and the CBSE process with reuse; understand some of the difficulties and problems that arise during the process of component composition. Contents 17.1 Components and component models 17.2 CBSE processes 17.3 Component composition
  • 9.
    Aspect-oriented software engineering Objectives Theobjective of this chapter is to introduce you to aspect-oriented software development, which is based on the separation of concerns. When you have read this chapter, you will: understand why the separation of concerns is a good guiding principle for software development; have been introduced to the fundamental ideas underlying aspects and aspect-oriented software development; understand how an aspect-oriented approach may be used for requirements engineering, software design, and programming; be aware of the difficulties of testing aspect-oriented systems. Contents 21.1 The separation of concerns 21.2 Aspects, join points, and pointcuts 21.3 Software engineering with aspects
  • 10.
    Quality management Objectives The objectivesof this chapter are to introduce software quality management and software measurement. When you have read the chapter, you will: • have been introduced to the quality management process and know why quality planning is important; • understand that software quality is affected by the software development process used; • be aware of the importance of standards in the quality management process and know how standards are used in quality assurance; • understand how reviews and inspections are used as a mechanism for software quality assurance; • understand how measurement may be helpful in assessing some software quality attributes and the current limitations of software measurement. Contents 24.1 Software quality 24.2 Software standards 24.3 Reviews and inspections 24.4 Software measurement and metrics
  • 11.
    Configuration management Objectives The objectiveof this chapter is to introduce you to configuration management processes and tools. When you have read the chapter, you will: • understand the processes and procedures involved in software change management; • know the essential functionality that must be provided by a version management system, and the relationships between version management and system building; • understand the differences between a system version and a system release, and know the stages in the release management process. Contents 25.1 Change management 25.2 Version management 25.3 System building 25.4 Release management
  • 12.
    Process improvement Objectives The objectiveof this chapter is to introduce software process improvement as a way of increasing software quality and reducing development costs. When you have read the chapter, you will: • understand the rationale for software process improvement as a means of improving both product quality and the efficiency and effectiveness of software processes; • understand the principles of software process improvement and the cyclic process improvement process; • know how the Goal-Question-Metric approach may be used to guide process measurement; • have been introduced to the ideas of process capability and process maturity, and the general form of the SEI’s CMMI model for process improvement. Contents 26.1 The process improvement process 26.2 Process measurement 26.3 Process analysis 26.4 Process change 26.5 The CMMI process improvement framework
  • 13.
    Project management Objectives The objectiveof this chapter is to introduce software project management and two important management activities, namely risk management and people management. When you have read the chapter you will: • know the principal tasks of software project managers; • have been introduced to the notion of risk management and some of the risks that can arise in software projects; • understand factors that influence personal motivation and what these might mean for software project managers; • understand key issues that influence team working, such as team composition, organization, and communication. Contents 22.1 Risk management 22.2 Managing people 22.3 Teamwork