Chapter 1
What are the best software engineering techniques and methods?
Different techniques are appropriate for different types of system. For example, games should always be developed
using a series of prototypes whereas safety critical control systems require a complete and analysable specification to be
developed.
Software products
 Generic products : for all customers
 Customized products: specific customer Examples – embedded control systems, air traffic control software,
traffic monitoring systems.
Essential attributes of good software
Maintainability, Dependability and security, Efficiency, Acceptability
General issues that affect software
Heterogeneity, Business and social change, Security and trust, Scale
Software engineering fundamentals
Managed and understood development process.
Dependability and performance
Understanding and managing the software specification and requirements
Software reuse.
Issues of professional responsibility
Confidentiality ‫رازدار‬
Competence: know their work
Intellectual property rights
Computer misuse
Three types of systems that use as case studies are
Embedded system: software system to control a medical device.
An information system: medical records system.
A sensor-based data collection system: a wilderness weather station.
Chapter 2
Chapter 2 – Software Processes
Software process Design activities
Architectural design
Database design
Interface design
Component selection and design
Reuse oriented process are different. These stages are:
Component analysis
Requirements modification
System design with reuse
Development and integration
Stages in the testing process are:
Development testing or component testing
System testing
Acceptance testing
Software prototyping
 A prototype is an initial version of a system used to demonstrate concepts and try out design options.
 A prototype can be used in:
 The requirements engineering process to help with requirements elicitation and validation;
 In design processes to explore options and develop a UI design;
In the testing process to run back-to-back tests
 Incremental development: Normal approach used in agile methods;
 Incremental delivery: Deploy an increment for use by end-users;
Chapter 4
 User requirements
 Statements in natural language plus diagrams of the services the system provides and its operational
constraints. Written for customers.
 System requirements
 A structured document setting out detailed descriptions of the system’s functions, services and
operational constraints. Defines what should be implemented so may be part of a contract between
client and contractor.
Requirements elicitation
Is the practice of collecting the requirements of a system from users, customers and other stakeholders. The
practice is also sometimes referred to as "requirement gathering".
 Requirements discovery
 Interacting with stakeholders to discover their requirements. Domain requirements are also discovered
at this stage.
 Requirements classification and organisation
 Groups related requirements and organises them into coherent clusters.
 Prioritisation and negotiation
 Prioritising requirements and resolving requirements conflicts.
 Requirements specification
 Requirements are documented and input into the next round of the spiral.
Use cases
 Use-cases are a kind of scenario that are included in the UML.
Use case for for the MHC-PMS
Ethnographic studies
Have shown that work is usually richer and more complex than suggested by simple system models.
Chapter 5:
System Modeling
1. Activity diagrams, which show the activities involved in a process or in data
processing.
2. Use case diagrams, which show the interactions between a system and its environment.
3. Sequence diagrams, which show interactions between actors and the system and
between system components.
4. Class diagrams, which show the object classes in the system and the associations between these classes.
5. State diagrams, which show how the system reacts to internal and external events.
Context models
Context models are used to illustrate the operational context of a system - they show what lies outside the system
boundaries.
Interaction models
1. Use case modeling, which is mostly used to model interactions between a system and external actors (users or other
systems).2. Sequence diagrams, which are used to model interactions between system components, although external
agents may also be included
Use case modeling :Requirements elicitation and now incorporated into the UML
Represents a discrete task that involves external interaction with a system.
Actors in a use case may be people or other systems.
Sequence Model :A sequence diagram shows the sequence of interactions that take place during a particular use
case or use case instance.
Interactions between objects are indicated by annotated arrows.
The objects and actors involved are listed along the top of the diagram, with a dotted line drawn vertically from these.
Model-driven engineering
 Model-driven engineering (MDE) is an approach to software development where models rather than programs
are the principal outputs of the development process.
 Pros :1)Allows systems to be considered at higher levels of abstraction2)Generating code automatically means
that it is cheaper to adapt systems to new platforms.
 Cons :1)Models for abstraction and not necessarily right for implementation.2)Savings from generating code
may be outweighed by the costs of developing translators for new platforms.
Types of model
 A computation independent model (CIM)
 These model the important domain abstractions used in a system. CIMs are sometimes called domain
models.
 A platform independent model (PIM)
 These model the operation of the system without reference to its implementation. The PIM is usually
described using UML models that show the static system structure and how it responds to external and
internal events.
 Platform specific models (PSM)
 These are transformations of the platform-independent model with a separate PSM for each application
platform. In principle, there may be layers of PSM, with each layer adding some platform-specific detail.
Chapter 6: Architectural Design
critical link between design and requirements engineering
how a software system should be organized and designing the overall structure of that system.
Three advantages of explicitly designing and documenting software architecture:
Stakeholder communication
System analysis
Large-scale reuse
Architectural representations
Box and line diagrams
Very abstract
Useful for project
Each box is a component
Box within box is a sub component
Arrows are the control of flow

M azhar

  • 1.
    Chapter 1 What arethe best software engineering techniques and methods? Different techniques are appropriate for different types of system. For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analysable specification to be developed. Software products  Generic products : for all customers  Customized products: specific customer Examples – embedded control systems, air traffic control software, traffic monitoring systems. Essential attributes of good software Maintainability, Dependability and security, Efficiency, Acceptability General issues that affect software Heterogeneity, Business and social change, Security and trust, Scale Software engineering fundamentals Managed and understood development process. Dependability and performance Understanding and managing the software specification and requirements Software reuse. Issues of professional responsibility Confidentiality ‫رازدار‬ Competence: know their work Intellectual property rights Computer misuse Three types of systems that use as case studies are Embedded system: software system to control a medical device. An information system: medical records system. A sensor-based data collection system: a wilderness weather station.
  • 2.
    Chapter 2 Chapter 2– Software Processes Software process Design activities Architectural design Database design Interface design Component selection and design Reuse oriented process are different. These stages are: Component analysis Requirements modification System design with reuse Development and integration Stages in the testing process are: Development testing or component testing System testing Acceptance testing Software prototyping  A prototype is an initial version of a system used to demonstrate concepts and try out design options.  A prototype can be used in:  The requirements engineering process to help with requirements elicitation and validation;
  • 3.
     In designprocesses to explore options and develop a UI design; In the testing process to run back-to-back tests  Incremental development: Normal approach used in agile methods;  Incremental delivery: Deploy an increment for use by end-users; Chapter 4  User requirements  Statements in natural language plus diagrams of the services the system provides and its operational constraints. Written for customers.  System requirements  A structured document setting out detailed descriptions of the system’s functions, services and operational constraints. Defines what should be implemented so may be part of a contract between client and contractor.
  • 4.
    Requirements elicitation Is thepractice of collecting the requirements of a system from users, customers and other stakeholders. The practice is also sometimes referred to as "requirement gathering".  Requirements discovery  Interacting with stakeholders to discover their requirements. Domain requirements are also discovered at this stage.  Requirements classification and organisation  Groups related requirements and organises them into coherent clusters.  Prioritisation and negotiation  Prioritising requirements and resolving requirements conflicts.  Requirements specification  Requirements are documented and input into the next round of the spiral. Use cases  Use-cases are a kind of scenario that are included in the UML. Use case for for the MHC-PMS
  • 5.
    Ethnographic studies Have shownthat work is usually richer and more complex than suggested by simple system models. Chapter 5: System Modeling 1. Activity diagrams, which show the activities involved in a process or in data processing. 2. Use case diagrams, which show the interactions between a system and its environment. 3. Sequence diagrams, which show interactions between actors and the system and between system components. 4. Class diagrams, which show the object classes in the system and the associations between these classes. 5. State diagrams, which show how the system reacts to internal and external events. Context models Context models are used to illustrate the operational context of a system - they show what lies outside the system boundaries. Interaction models 1. Use case modeling, which is mostly used to model interactions between a system and external actors (users or other systems).2. Sequence diagrams, which are used to model interactions between system components, although external agents may also be included Use case modeling :Requirements elicitation and now incorporated into the UML Represents a discrete task that involves external interaction with a system. Actors in a use case may be people or other systems.
  • 6.
    Sequence Model :Asequence diagram shows the sequence of interactions that take place during a particular use case or use case instance. Interactions between objects are indicated by annotated arrows. The objects and actors involved are listed along the top of the diagram, with a dotted line drawn vertically from these. Model-driven engineering  Model-driven engineering (MDE) is an approach to software development where models rather than programs are the principal outputs of the development process.  Pros :1)Allows systems to be considered at higher levels of abstraction2)Generating code automatically means that it is cheaper to adapt systems to new platforms.  Cons :1)Models for abstraction and not necessarily right for implementation.2)Savings from generating code may be outweighed by the costs of developing translators for new platforms.
  • 7.
    Types of model A computation independent model (CIM)  These model the important domain abstractions used in a system. CIMs are sometimes called domain models.  A platform independent model (PIM)  These model the operation of the system without reference to its implementation. The PIM is usually described using UML models that show the static system structure and how it responds to external and internal events.  Platform specific models (PSM)  These are transformations of the platform-independent model with a separate PSM for each application platform. In principle, there may be layers of PSM, with each layer adding some platform-specific detail. Chapter 6: Architectural Design critical link between design and requirements engineering how a software system should be organized and designing the overall structure of that system. Three advantages of explicitly designing and documenting software architecture: Stakeholder communication System analysis Large-scale reuse Architectural representations Box and line diagrams Very abstract Useful for project Each box is a component Box within box is a sub component Arrows are the control of flow