Lecture1 SA
Lecture1 SA
Requirements
Engineering.
Basics of Use
Cases
Yemberdiyeva Aknur
Bakytbekkyzy
Assistant , MSc
Course description
• This course lays a solid foundation upon which solutions for these much larger and more
important applications may be built. Students will study large systems and how they were
partitioned into subsystems and components, as well as how the structuring of these
elements into a solution and the interfaces used to join them together facilitates
communication and control. Students will explore with various notations and formalisms
as they learn the relationship between these structures and key quality attributes and their
impact on system implementation. Differences between detailed design and architecture
are explored, as well as notations used for both. Two major applications are analyzed and
the impact of several wellknown architectural styles is evaluated. The use of various
notations is explored, with a focus on UML, and the role of architecture and detailed
design specifications are considered from the perspective of risk management.
Period Assignments Maximum Total
Student
score
1st
laboratory works: 100
attestatio LW 1 100
performan n LW 2
LW 3
Mid-term(Part1)
100
100
100
100
ce 2
Mid-term(Part2)
laboratory works:
100
100
evaluation
nd
attestatio LW 4 100
n LW 5 100
LW 6 100 100
system for End of term (Part1)
End of term (Part2)
100
100
Total 100
Attendance
• If the number of absences exceeds 20%, student will be automatically scheduled for a
Retake
What is software
architecture ?
The software architecture of a
system represents the design decisions
related to overall system structure and
behavior. Architecture helps
stakeholders understand and analyze
how the system will achieve essential
qualities such as modifiability,
availability, and security.
• Software developers wield some
tangible weapons, such as
Integrated Development
Environments (IDEs) and
programming languages, but
intangible weapons arguably
make a bigger impact.
Software is similar in that there are lots of low-level details. If developers have
built up a set of mental abstractions (i.e., a conceptual model), they can convert those
details into a condensed understanding: where before they saw just code, perhaps
they now see a thread-safe locking policy or an event-driven system.
• The comparison between software design and (civil)
architecture was first drawn in the late 1960s, but the term
"software architecture" did not see widespread usage until the
1990s.The field of computer science had encountered
problems associated with complexity since its
formation. Earlier problems of complexity were solved by
developers by choosing the right data structures, developing
algorithms, and by applying the concept of
separation of concerns. Although the term "software
architecture" is relatively new to the industry, the fundamental
principles of the field have been applied sporadically by
software engineering pioneers since the mid-1980s. Early
attempts to capture and explain software architecture of a
system were imprecise and disorganized, often characterized
by a set of box-and-line diagrams.
• Software architecture as a concept has its origins in the
research of Edsger Dijkstra in 1968 and David Parnas in the
early 1970s. These scientists emphasized that the structure of a
software system matters and getting the structure right is
critical. During the 1990s there was a concerted effort to define
and codify fundamental aspects of the discipline, with research
work concentrating on architectural styles (patterns),
architecture description languages, architecture documentation,
and formal methods.
• Research institutions have played a prominent role in furthering
software architecture as a discipline. Mary Shaw and
David Garlan of Carnegie Mellon wrote a book titled Software
Architecture: Perspectives on an Emerging Discipline in 1996,
which promoted software architecture concepts such as
components, connectors, and styles. The
University of California, Irvine's Institute for Software
Research's efforts in software architecture research is directed
primarily in architectural styles, architecture description
languages, and dynamic architectures.
• Software architecture supporting activities are carried out during
core software architecture activities. These supporting activities
assist a software architect to carry out analysis, synthesis,
evaluation, and evolution. For instance, an architect has to
gather knowledge, make decisions, and document during the
analysis phase.
• Knowledge management and communication is the act of exploring and
managing knowledge that is essential to designing a software architecture. A
software architect does not work in isolation. They get inputs, functional and
non-functional requirements, and design contexts, from various stakeholders;
and provide outputs to stakeholders. Software architecture knowledge is often
tacit and is retained in the heads of stakeholders. Software architecture
knowledge management activity is about finding, communicating, and retaining
knowledge. As software architecture design issues are intricate and
interdependent, a knowledge gap in design reasoning can lead to incorrect
software architecture design. Examples of knowledge management and
communication activities include searching for design patterns, prototyping,
asking experienced developers and architects, evaluating the designs of similar
systems, sharing knowledge with other designers and stakeholders, and
documenting experience on a wiki page.
• Design reasoning and decision making is the activity of evaluating
design decisions. This activity is fundamental to all three core software
architecture activities. It entails gathering and associating decision
contexts, formulating design decision problems, finding solution
options and evaluating tradeoffs before making decisions. This process
occurs at different levels of decision granularity while evaluating
significant architectural requirements and software architecture
decisions, and software architecture analysis, synthesis, and
evaluation. Examples of reasoning activities include understanding the
impacts of a requirement or a design on quality attributes, questioning
the issues that a design might cause, assessing possible solution
options, and evaluating the tradeoffs between solutions.
• Documentation is the act of recording the design generated during the
software architecture process. System design is described using several
views that frequently include a static view showing the code structure of
the system, a dynamic view showing the actions of the system during
execution, and a deployment view showing how a system is placed on
hardware for execution. Kruchten's 4+1 view suggests a description of
commonly used views for documenting software
architecture; Documenting Software Architectures: Views and Beyond has
descriptions of the kinds of notations that could be used within the view
description. Examples of documentation activities are writing a
specification, recording a system design model, documenting a design
rationale, developing a viewpoint, documenting views.
Partitioning, knowledge,
and abstractions
• Purpose
• Document conventions
• Intended Audience and Reading Suggestions
• Project scope
• References
• Overall Description
• Product perspective
• Product features
• User classes and characteristics
• Operating environment
• Design and implementation constraints
• User documentation
• Assumptions and dependencies
• System features
• System feature X
• User interfaces
• Software interfaces
• Hardware interfaces
• Communication interfaces
• Non functional requirements
• Performance requirements
• Safety requirements
• Software quality attributes
• Security requirements
• Other requirements
• Appendix A: Glossary
• Appendix B: Analysis Models
• Appendix C: Issues list
Basic requirements for all sections
of the SRS
• Shortly
• No ambiguous descriptions.
• Simplicity and readability.
• DFD diagrams.
• Level of detail.
Use Cases
Stakeholder – someone
Triggers – this is the or something with
event that causes the vested interests in the
use case to be initiated. behavior of the system
under discussion (SUD)