ASU CSE 598 Advanced Software Analysis and Design
Exam1 Cheat Sheet/Notes week 1-4
, Week 1. Nature of Software Systems and Significance of Software Analysis and Design
1. Complex Nature of Modern Software Systems
1.1 Nature of Modern Software Systems
As we go from PC to web-based computer systems what has increased? connectivity & diversity, system & network heterogeneity
What does cloud computing allow us to utilize the web as a service provider ? computing & storage
Which of following are necessary for data in a distributed system ? data integrity, privacy, security
Challenges due to distributed nature of software : data may not come from a single place (device – sensors, web generated data, platform (OS, servers),
data format -json, xml -heterogeneity); connectivity requirements; security, privacy, data integrity requirements; resource requirements(process large
amount data, many need cloud resources)
Summary Today’s society increasingly depends on computer or software- controlled capabilities. -Software needs to maintain high quality to reduce the risk
of potentially catastrophic failures. -As software becomes abundant, challenges of developing durable, high quality software with a large amount of code
increases.
1.2 Operational Expectations Software Systems
Durability expectations are high for some software sys. Software undergoes changes due to technological changes. As software changes, stability of
software sys. may be affected. Stability may be related to – number of software bugs & severity of those bugs, other quality factors such as modularity,
maintainability, reliability etc.
2 key expectations : needs to be operational for a longer duration, undergo changes during lifecycle of the software. (changeability & durability.)
Which significantly affects software stability ? No. of software bugs, severity of the bug, modularity & reliability
When software undergoes changes how should changes be accommodated? With minimum or no affect to stability
1.3 Quality Expectations Software Systems
Stakeholder: users interested in usability & accuracy, software designers In modifiability & modularity. Software quality frameworks: ISO-9126, SEI-CMM,
McCall’s Quality factors.
Functionality (set of properties of the software that satisfy stated or implied behaviors of software system, stated properties come from specification &
requirements, implied=generally accepted properties for given software), Reliability (fault tolerance, recoverability), usability(key diagnostics: learnability,
understandability, operability, usability = activities end user needs to perform from obtaining, installing, using software), efficiency(related to timed and
resource usage behavior), maintainability- how well software can accommodate changes defines modifiability of software system- key diagnostics of
maintainability are how easy it is to: change the design, add new code modules, adapt to technology advancements, test (testability) after changes;
portability.
Summary: Software has a functional and non-functional requirements. | Software quality factors are important considerations that may not have been
specified in the formal specification. | Software design and the architecture need to address these functional as well as non-functional quality
considerations at the beginning of the software design phase to accommodate and meet those requirements successfully.
1.4 Path Towards Better Quality Software
Complex nature modern software sys. – use distributed, heterogeneous resources, usually larger code base, expected to operate long time while
undergoing changes, need to satisfy functional & non-functional quality expectations. Most software failures can be traced back to software design & its
architecture. Software designer’s role : aware of technology challenges, evaluating diff. quality factors, incorporate changes while maintaining integrity of
architecture, help software engineers & programmers understand & reason about software system & architecture
2. Architecture Centric Software Development -> 2.1 Intro to Software Design & Architecture
Software architecture represents a collection of structures and connections among these structures in the software system. Software architecture provides
set of viewpoints to its stakeholders to understand and reason about software systems.
During software development, process requirements are analyzed to identify features and functionalities the software systems need to produced. Then,
these features and functionalities are further analyzed to identify and design software structures that need to be designed and developed. A collection of
software structures together with the relationship among these structures represents the software architecture.
Software requirement : Functionality, UI requirements, deployment requirements, quality factors such as performance requirements. Steps in software dev.
Process: design, develop, test, implement.
2.2 Significance of software architecture Software architecture provides set of viewpoints to its stakeholders to understand and reason about software
systems (customer/end user: requirements, risks analysis; develop. Team: detailed design, implementation details, testing, deployment team: hardware &
system configuration). As software architecture provides different viewpoints to different categories of stakeholders, the team organization and the team
communication structure can be established around the software architecture.One of the critical operational expectations of modern software systems is
the ability to undergo changes due to functional and technology needs. Software architectures that respond well to changing demands usually have
components that are loosely coupled and highly cohesive.
2.3 Architecture Centric Software Dev : A Success Story Which technologies invented for the web ? HTML, HTTP, URI. Which leads to better
software architecture design initially? design that does not depend on code that implements it. Focus on key design elements & their relationship
independent from the technology. Relationships are represented as protocols & data exchange/presentation rules are independent from the technology.
- HTML Web -> service-oriented computing, cloud computing, IoT
- Internet of Things: conventional devices & smart devices share information & computations across the web
Week2 Object Oriented Analysis and Design
1.OO Design Fundamentals____1.1 Foundation of OO analysis & design
Underlying concepts of OO design – abstraction, modularity (how well objects abstract underlying data & procedures so that each obj. is as indep. as
possible), architecture(overall structure of softw. system)
Information hiding - Limits the global impact of local design decisions, reducing the likelihood of “side effects”, Emphasizes communication through
controlled interfaces, Discourages the use of global data, Leads to encapsulation—an attribute of high quality design,Results in higher quality software ;
methods model bevhavior object, data describes object; key concepts OO design : information hiding, encapsulation
1.2 OO Analysis Modeling. Analysis Modeling Approaches : Scenario-based models : use cases, user stories; Class Models : class
diagrams, collaboration diagrams; Behavioral Models: state, sequence diagrams, Flow Models: DFDs, data models. The object-oriented
analysis focuses on eliciting requirements in a manner that the technical team as well as other stakeholders can understand and reason
about the project scope/functionality. It helps to identify objects, their attributes, methods & the manner in which obj communicate with
another. The main objective of analysis modeling is to bridge the requirement and the design of a software project. Artifacts that are
1
Exam1 Cheat Sheet/Notes week 1-4
, Week 1. Nature of Software Systems and Significance of Software Analysis and Design
1. Complex Nature of Modern Software Systems
1.1 Nature of Modern Software Systems
As we go from PC to web-based computer systems what has increased? connectivity & diversity, system & network heterogeneity
What does cloud computing allow us to utilize the web as a service provider ? computing & storage
Which of following are necessary for data in a distributed system ? data integrity, privacy, security
Challenges due to distributed nature of software : data may not come from a single place (device – sensors, web generated data, platform (OS, servers),
data format -json, xml -heterogeneity); connectivity requirements; security, privacy, data integrity requirements; resource requirements(process large
amount data, many need cloud resources)
Summary Today’s society increasingly depends on computer or software- controlled capabilities. -Software needs to maintain high quality to reduce the risk
of potentially catastrophic failures. -As software becomes abundant, challenges of developing durable, high quality software with a large amount of code
increases.
1.2 Operational Expectations Software Systems
Durability expectations are high for some software sys. Software undergoes changes due to technological changes. As software changes, stability of
software sys. may be affected. Stability may be related to – number of software bugs & severity of those bugs, other quality factors such as modularity,
maintainability, reliability etc.
2 key expectations : needs to be operational for a longer duration, undergo changes during lifecycle of the software. (changeability & durability.)
Which significantly affects software stability ? No. of software bugs, severity of the bug, modularity & reliability
When software undergoes changes how should changes be accommodated? With minimum or no affect to stability
1.3 Quality Expectations Software Systems
Stakeholder: users interested in usability & accuracy, software designers In modifiability & modularity. Software quality frameworks: ISO-9126, SEI-CMM,
McCall’s Quality factors.
Functionality (set of properties of the software that satisfy stated or implied behaviors of software system, stated properties come from specification &
requirements, implied=generally accepted properties for given software), Reliability (fault tolerance, recoverability), usability(key diagnostics: learnability,
understandability, operability, usability = activities end user needs to perform from obtaining, installing, using software), efficiency(related to timed and
resource usage behavior), maintainability- how well software can accommodate changes defines modifiability of software system- key diagnostics of
maintainability are how easy it is to: change the design, add new code modules, adapt to technology advancements, test (testability) after changes;
portability.
Summary: Software has a functional and non-functional requirements. | Software quality factors are important considerations that may not have been
specified in the formal specification. | Software design and the architecture need to address these functional as well as non-functional quality
considerations at the beginning of the software design phase to accommodate and meet those requirements successfully.
1.4 Path Towards Better Quality Software
Complex nature modern software sys. – use distributed, heterogeneous resources, usually larger code base, expected to operate long time while
undergoing changes, need to satisfy functional & non-functional quality expectations. Most software failures can be traced back to software design & its
architecture. Software designer’s role : aware of technology challenges, evaluating diff. quality factors, incorporate changes while maintaining integrity of
architecture, help software engineers & programmers understand & reason about software system & architecture
2. Architecture Centric Software Development -> 2.1 Intro to Software Design & Architecture
Software architecture represents a collection of structures and connections among these structures in the software system. Software architecture provides
set of viewpoints to its stakeholders to understand and reason about software systems.
During software development, process requirements are analyzed to identify features and functionalities the software systems need to produced. Then,
these features and functionalities are further analyzed to identify and design software structures that need to be designed and developed. A collection of
software structures together with the relationship among these structures represents the software architecture.
Software requirement : Functionality, UI requirements, deployment requirements, quality factors such as performance requirements. Steps in software dev.
Process: design, develop, test, implement.
2.2 Significance of software architecture Software architecture provides set of viewpoints to its stakeholders to understand and reason about software
systems (customer/end user: requirements, risks analysis; develop. Team: detailed design, implementation details, testing, deployment team: hardware &
system configuration). As software architecture provides different viewpoints to different categories of stakeholders, the team organization and the team
communication structure can be established around the software architecture.One of the critical operational expectations of modern software systems is
the ability to undergo changes due to functional and technology needs. Software architectures that respond well to changing demands usually have
components that are loosely coupled and highly cohesive.
2.3 Architecture Centric Software Dev : A Success Story Which technologies invented for the web ? HTML, HTTP, URI. Which leads to better
software architecture design initially? design that does not depend on code that implements it. Focus on key design elements & their relationship
independent from the technology. Relationships are represented as protocols & data exchange/presentation rules are independent from the technology.
- HTML Web -> service-oriented computing, cloud computing, IoT
- Internet of Things: conventional devices & smart devices share information & computations across the web
Week2 Object Oriented Analysis and Design
1.OO Design Fundamentals____1.1 Foundation of OO analysis & design
Underlying concepts of OO design – abstraction, modularity (how well objects abstract underlying data & procedures so that each obj. is as indep. as
possible), architecture(overall structure of softw. system)
Information hiding - Limits the global impact of local design decisions, reducing the likelihood of “side effects”, Emphasizes communication through
controlled interfaces, Discourages the use of global data, Leads to encapsulation—an attribute of high quality design,Results in higher quality software ;
methods model bevhavior object, data describes object; key concepts OO design : information hiding, encapsulation
1.2 OO Analysis Modeling. Analysis Modeling Approaches : Scenario-based models : use cases, user stories; Class Models : class
diagrams, collaboration diagrams; Behavioral Models: state, sequence diagrams, Flow Models: DFDs, data models. The object-oriented
analysis focuses on eliciting requirements in a manner that the technical team as well as other stakeholders can understand and reason
about the project scope/functionality. It helps to identify objects, their attributes, methods & the manner in which obj communicate with
another. The main objective of analysis modeling is to bridge the requirement and the design of a software project. Artifacts that are
1