Three types of systems that are used as case studies are embedded systems to control medical devices, information systems like medical records systems, and sensor-based data collection systems like wilderness weather stations. Software engineering techniques include prototypes, reuse-oriented processes, and testing processes. Architectural design is a critical link between overall system design and requirements and involves determining how a system should be organized at a high level.
1. 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.
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 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.
4. 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
5. 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.
6. 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.
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