Itsea Notes
Itsea Notes
✽ Introduction
○ Like other engineering disciplines, software engineering is carried out
within a social and legal framework that limits the freedom of people
working in that area.
✽ Ethics
○ Confidentiality: Whether or whether a formal confidentiality
agreement has been negotiated, you should typically protect the
confidentiality of your clients or employers.
Software Processes
Chapter 2
Software prototyping
✽ Introduction
○ A prototype is an early, simplified version of a software system, built to
demonstrate concepts, test functionality, and gather user feedback
before full-scale development.
✽ Types of Prototypes
○ Throwaway/Rapid Prototyping: Used for requirements elicitation, then
discarded.
✽ Benefits of Prototypes
○ Improved systems usability.
○ Improved maintainability
✽ Limitations
○ Lack of Robustness: Prototypes are often built quickly to demonstrate
feasibility and may lack robustness.
Week 2
Header 2
✽ Introduction
○ Essential for businesses to quickly develop and deploy new software to
respond to competitive pressures and new opportunities.
✽ Scrum
○ Scrum is an agile method that provides a framework for organising
agile projects. It is centred around a set of sprints, which are fixed
time periods when a system increment is developed.
✽ Benefits of Scrum:
○ Product broken into manageable chunks.
Requirements engineering
✽ Introduction
○ Requirements: Descriptions of services a system should provide and
constraints on its operation.
✽ Requirements elicitation
○ Requirements Elicitation is the process of gathering information
about the desired system from stakeholders and other sources.
Effective elicitation ensures that the requirements captured are
complete and accurate.
✽ Requirements Specification
○ Requirements Specification is the process of documenting the
gathered requirements in a clear, precise, and comprehensive
manner. The main goals are to provide a detailed description of the
system to be built and to serve as a reference for system design,
development, and validation. Key aspects of requirements
specification include:
○ Use Cases and Scenarios: Descriptions of how users will interact with
the system to achieve specific goals.
✽ Requirements Change
○ Requirements Change involves managing changes to requirements
as the project progresses due to evolving stakeholder needs, market
conditions, or technical constraints.
System Modelling
✽ Introduction
○ Definition: System modelling is the process of creating abstract
models of a system, offering different perspectives or views.
○ The process diagram consists of activities, flows, start and end points,
decision points, and synchronisation bars, representing tasks, flows,
start and end points, branching points, and convergence of parallel
activities.
✽ Object/Class Diagram
○ Represent the static structure of a system by showing the system's
classes, their attributes, operations (methods), and the relationships
among objects.
✽ Sequence Diagram
○ Purpose: Model the sequence of interactions among objects or
components in a system over time.
Architectural design
✽ Introduction
○ Architectural design is the first stage in the software design process,
focusing on organising and designing the system's structure.
○ Block diagrams are often the only architectural description for many
projects.
✽ Architectural Views
○ Architectural views are representations of the overall architecture
meaningful to one or more stakeholders in the system. The architect
chooses and develops views that enable the architecture to be
communicated to, and understood by, all stakeholders, ensuring their
concerns are addressed.
✽ Chapter 7
✽ Open-source development
○ Open-source development involves publishing the source code and
inviting volunteers to contribute. Open-source development involves
making the source code of a system publicly available. This means
that many people can propose changes and improvements to the
software.
○ Roots: The Free Software Foundation (FSF) promotes the idea that
source code should be freely available for users to examine and
modify.
✽ Open-Source Licensing
○ Ownership: The developer owns the code and can impose usage
restrictions through licences.
✽ Introduction
○ Testing aims to demonstrate that a program works as intended and to
discover defects before use. Involves executing the program with
artificial data and checking results.
✽ Development Testing
○ Development testing includes all testing activities that are carried out
by the team developing the system. Carried out by development team
during implementation.
○ TDD Process: Write a test for a new function. Run the test and see it
fail. Write the minimum code to pass the test. Refactor the code while
ensuring tests still pass.
✽ Release Testing
○ The process of testing a specific system release that is meant for
usage by users other than the development team is known as release
testing. Testing a specific release for use outside development team
✽ User Testing
○ User testing is a crucial stage in system testing where users provide
input and advice, either formally testing a commissioned system or
experimenting with a new software product. It influences system
reliability, performance, usability, and robustness, even after
comprehensive system and release testing.
Software Evolution
✽ Introduction
○ The introduction discusses the high cost of maintaining large software
systems. These systems often have a long lifetime, and businesses
need to invest in changes to maintain their value.
✽ Legacy systems
○ Older software systems that continue to be used due to their critical
role in business operations. These systems often rely on outdated
technologies and hardware.
○ Characteristics: Dependence on outdated languages and hardware.
Degraded structure due to continuous maintenance. Inclusion of
hardware, software, data, business processes, and policies.
✽ Software maintenance
○ Definition: Process of modifying a system after delivery to fix faults,
improve performance, or adapt to a changed environment. Modifying
a software system after it has been delivered.
✽ Introduction
○ Dependable software processes are designed to ensure that the
resulting software is reliable, consistent, and less prone to failure.
Safety Engineering
✽ Introduction
○ Formal methods involve mathematically-based techniques for
specifying and verifying systems. These methods are essential in
safety-critical systems, such as those used in aerospace and railway
control, to ensure reliability and adherence to specifications
Security Engineering
✽ Introduction
○ The Internet introduced a new challenge of designing secure systems
resistant to external attacks.
✽ Security Requirements
○ Challenges in Specifying Security Requirements: Security
requirements must consider hostile environments and intelligent
adversaries. Unlike safety, security requirements cannot be specified
as probabilities and often involve extensive considerations.
✽ Class notes
○ Risk assessment process to identify security requirements.
Week 2
Resilience Engineering
✽ Introduction
○ Resilience is the ability of a system to maintain critical services in the
presence of disruptive events like failures or cyberattacks
✽ Cybersecurity
○ Cybersecurity is crucial for system resilience against cyberattacks.
Significance: Protecting IT infrastructure from cyber threats is crucial
due to its societal impact.
✽ Sociotechnical Resilience
○ Resilience is a sociotechnical issue involving people, processes and
technology. Example: Patient data protection in the Mentcare system
requires organizational measures beyond technical safeguards.
○ There key principles Assume Failures Will Occur: Design with the
expectation that system failures or penetrations by attackers will
happen. Redundancy and Diversity: Incorporate redundant and
diverse features to handle adverse events effectively.
○ Figure 14.1 - which shows how a system deals with a cyberattack. The
goal is to keep the system running smoothly, even during and after
an attack, by recognizing threats early, defending against them,
repairing any damage, and fully restoring services.
Systems Engineering
Lesson #
Header 2
✽ Introduction
○ Software engineering is not an isolated activity but is part of a broader
systems engineering process
✽ Sociotechnical Systems
○ Socio-technical systems are large-scale systems that do not just
include software and hardware but also people, processes and
organizational policies.
✽ Conceptual Design
○ The conceptual design phase is the initial stage of systems
engineering where the concept and purpose of the required system
are developed. It involves setting out in non-technical language what
the system is meant to achieve, why it is needed, and its high-level
features.
○ System Vision: Create an outline of what the system will do and how it
will function.
○ The problem
○ Expected benefits
✽ System Procurement
○ The system procurement stage involves further developing the
conceptual design to make decisions about contracting for system
development. It includes deciding on the distribution of functionality
across hardware, software, and operational processes, as well as
selecting suppliers.
✽ System Development
○ The system development stage is where the system is built. It includes
requirements definition, system design, hardware and software
engineering, system integration, and testing. Operational processes
are also defined, and user training is designed.
Header 2
✽ Introduction
○ Software systems are constantly changing during development and
use. Configuration management (CM) is concerned with the policies,
processes and tools for managing changing software systems (Aiello,
and Sachs, 2011).
○
✽ Version Management
○ Version Control: Tracks multiple versions of system components,
ensuring changes made by different developers do not conflict.
○ Version control (VC) systems identify, store and control access to the
different versions of components.
○
✽ System Building
○ Process: Assembling program components, data, and libraries, then
compiling and linking them to create an executable system.
✽ Change Management
○ Organizational needs and requirements change during the lifetime of
a system, bugs have to be repaired and systems have to adapt to
changes in their environment.
✽ Release Management
○ Release Preparation: Preparing software for external release and
documenting each system version.
○ A system release is a version of a software system that is distributed
to customers.
✽ Notes
○ Software Architect: A software architect is responsible for designing
the high-level structure of a software system. This role involves making
key decisions about the system's organization, selecting appropriate
technologies, and ensuring that the architecture supports the system's
requirements and quality attributes.
○ Ethical and Legal Issues: Using drones raises a number of ethical and
legal issues. This covers concerns about drone usage in law
enforcement and combat as well as its effects on civil rights. The rapid
development of drone technology necessitates that regulatory
frameworks adapt accordingly.
✽ Provide your manager with a brief report outlining the reasons why
prototype systems shouldn't typically be used as production systems?
○ Lack of Documentation: Prototypes often have minimal
documentation, making it difficult for new developers to understand
and maintain the system.
✽ Can you describe agile practices that they will have to implement in
the software development process?
✽ Agile development is a methodology aimed at producing useful software quickly and
efficiently.
○ User Stories: Scenarios describing system use from the user’s
perspective. Used to plan iterations and identify tasks. Allow for
incremental development and refinement based on user feedback.
✽
✽ To minimise misunderstandings when writing natural language
requirements, suggest recommendations that could be followed for
requirements gathering?
○ Use Clear and Simple Language: Avoid jargon, technical terms, and
complex sentences. Use simple, clear, and concise language that can
be easily understood by all stakeholders.
○ Arrange the Needs Clearly: Assemble similar needs into groups and
arrange them logically. To make content easier to read and navigate,
use headings, subheadings, and numbered lists.
✽ create a use case scenario that depicts the librarian requesting the
system to create a new online library account and also selecting the
library user account type.
○ Primary Actor: Librarian
○ If the details are valid, the system creates a new library user
account.The librarian selects the user account type (e.g., student,
faculty, guest).The system assigns the selected account type to the
new user account. The system generates a summary of the library
user account's details. The system emails the summary to the user.
✽ Identify and briefly describe the four types of requirements that may
be defined for an e-commerce-based system to the client?
○ 1. Functional Requirements: These requirements specify what the
system should do. For an e-commerce application, functional
requirements might include user authentication, product catalogue
management, shopping cart functionality, order processing,
payment processing, and user notifications.