Informatics 43 Midterm
What is the definition of Software Engineering?
"Multi-person construction of multi-version software." (Memorize Word for Word)
Architectural Style: model-view-controller
- Components are models, views, and controllers - Models store information about the state of the program - View components present information to the user - Controllers allow user to control model/view and tell models (views) to update Ex. Websites/Web applications * Know how to draw diagram
Architectural Style: Object oriented
- Components are objects - Connectors are messages and method invocations Ex. Business applications * Know how to draw diagram
Architectural Style: Layered
- Components are organized in hierarchical layers - Connectors"Multi-level client server:" each layer acts as a 1. Service: service provider to layers "above" 2. Client: service consumer of layer(s) "below" Ex. Operating Systems/Networks/ * Know how to draw diagram
Architectural Style: Publish-Subscribe ("pub-sub")
- Components are publishers or subscribers - Connectors are network protocols Ex. Stock market/News * Know how to draw diagram
What is software Evolution?
- Essential part of software development - Must be accommodated as much as possible - Must be planned as much as possible
What are the "Essential Ingredients" of S.E.
People: The single most important factor in the success/failure of a product Process: Essential to achieve a quality product Tool :Needed to support people and processes
What is the purpose of a Use Case Model?
The most important role of a use case model is to communicate the system's functionality and behavior to the customer or end user
What is the WaterFall Model?
idealization of how things work
What is the Formula to calculate channels
n(n-1)/2
Why is the lack of Calendar Time such a common cause for bad software projects?
- First, our techniques of estimating are poorly developed - Second, our estimating techniques fallaciously confuse effort with progress, hiding the assumption that men and months are interchangeable. -Third, because we are uncertain of our estimates, software managers often lack the courteous stubbornness of Antoine's chef. - Fourth, schedule progress is poorly monitored. - Fifth, when schedule slippage is recognized, the natural (and traditional) response is to add manpower.
What past Breaking Through Solved Accidental Difficulties?
- High Level Languages - Time-Sharing - Unified Programming Environment
What is the Requirement's Analysis of the Requirement's Engineering?
- Interview customer - Create use cases/scenarios - Prototype solutions - Observe customer - Identify important objects/roles/functions - Perform research - Construct glossaries - Question yourself
What are the Top Software Failure Causes?
- Lack of user input/involvement - Incomplete requirements and specifications - Changing requirements and specifications - Lack of discipline in development processes - Lack of methodical usage of metrics - Lack of resources
Whats the WaterFall Diagram Bad for? (weakness)
- No iterations - Limited user input - Bad for long-term projects with any ambiguity in requirements
Why use cases?
- Other requirements engineering methods have many limitations - Use cases attempt to bridge the understandability gap - Capture the intended behavior of the system you are developing - Allow developers to come to a common understanding with your system's end users and domain experts - Realized by design and implementation elements working together to carry out each use case Help verify and validate your design and implementation features
What is a scenario?
A scenario is a sequence of steps describing an interaction between a user and a system
What are the Perspective on S.E. (i) ?
Business Perspective: - cost of developing (purchasing) software - time to market of product - profit that will be made from sale of software
WWW (World Wide Web)
- The Web is a collection of resources, each of which has a unique name known as a uniform resource locator, or "URL"
Whats are Software Process Model Bad for? (weakness)
Any nontrivial project
What is a Principal?
- "Principal" implies a degree of importance that grants a design decision "architectural status" - How one defines "principal" will depend on what the stakeholders define as the system goals
What is software architecture?
- A software system's architecture is the set of principal design decisions about the system - Software architecture is the blueprint for a software system's construction and evolution - structure - behavior - interaction - non-functional properties
What is the Requirement's Phase of the Requirement's Engineering?
- Activity of discovering/observing/gathering customer's needs - Activity of describing/documenting customer's needs *requirements address what a customer needs, not what a customer wants
What is an Actor?
- Actors are not part of the system—they represent roles a user of the system can play - An actor can represent a human, a machine, or another system (e.g., software, hardware, database)
What are the Hopes for the Silver?
- Ada and other High-level language Advances - Object-oriented programming - Artificial Intelligence - Expert Systems - "Automatic" Programming - Graphical programming - Program Verification - Environmental Tools - Workstations
What are the Promising Attacks?
- Buy versus build. - Requirements refinement and rapid prototyping. - Incremental development—grow, not build software. - Great designers.
Architectural Style: Peer-To-Peer
- Components ("peers") are equals and can act as either clients or servers - Connectors are network protocols Ex. File sharing systems, Skype * Know how to draw diagram
Architectural Style: Client-Server
- Components are clients and servers - A server has computational resources that it provides to one or more clients Ex. Email/Web browser-based programs * Know how to draw diagram
Architectural Style: Pipe-And-Filter
- Components are filters - Connectors are pipes Ex. UNIX shell * Know how to draw diagram
What are the Software Architecture element's
- Processing (Components) - Data (Components) - Interaction (Connector)
Whats the WaterFall Diagram Good for? (strengths)
- Promotes understanding of requirements first - Disciplined - Lots of documentation - Easy to track progress - Provides a framework upon which to create more dynamic, realistic processes - Good for short, simple projects will well-understood requirements
What are the fundamental Principles of Inf 43 Recurring? (These principles apply to all aspects of software engineering)
- Rigor and formality - Separation of concerns 1. modularity 2. divide and conquer 3. abstraction - Anticipation of change - Generality - Incrementality
What is the Requirement's Specifications of the Requirement's Engineering?
- Serves as the fundamental reference point between customer and software producer - Defines capabilities to be provided without saying how they should be provided - Defines environmental requirements on the software to guide the implementers - Defines constraints on the software - Defines software qualities
what is software Engineering? (Engineering)
- Skill and knowledge - Application of scientific principles - Trade-offs, cost / benefit analysis
What are Essential Characteristics of Software Engineering?
- Software engineering concerns the development of large programs - The central theme is mastering complexity - The efficiency with which software is developed is of crucial importance - Software evolves - Regular cooperation between people is an integral part of programming-in-the-large - The software has to support its users effectively - Software engineering is a field in which members of one culture create artifacts on behalf of members of another culture - Software engineering is a balancing act
What is the Informatics 43 Perspective on S.E.
- The process of constructing software. - Phases of development other than programming. - Principles and qualities of enduring value.
Why Not use Cases?
- They do not encompass all of the requirements - Not good for specifying: User interfaces, Data formats, Business rules, Non-functional requirements
Why does architecture Evolution happened?
- developer sloppiness - perception of short deadlines which prevent thinking - - through and documenting - lack of documented prescriptive architecture - need or desire for code optimizations - inadequate techniques or tool support
What is a use case (i) ?
A depiction of the following requirement information - Basic functionality - Any precondition for the functionality - Flow of events (scenario) for the functionality - Any postcondition for the functionality - Any error condition and alternative flow
What are Components?
A software component is an architectural entity that: - encapsulates a subset of the system's functionality and/or data - restricts access to that subset via an explicitly defined interface - has explicitly defined dependencies on its required execution context
What are Connectors?
A software connector is an architectural building block tasked with effecting and regulating interactions among components
What are a Software Life Cycle Models?
A software life cycle model is a high-level process
What is Software Process Model for?
A software process model can be thought of 1. "prescriptively" - enforcing rules 2. or "descriptively" - serving to describe or characterize
What is Descriptive Architecture?
A system's descriptive architecture describes how the system has been built
What is Prescriptive Architecture?
A system's prescriptive architecture captures the design decisions made prior to the system's construction
What is a Use Case Diagram?
A use case diagram is a graphical view of some or all of the actors, use cases, and their interactions identified for a system
What is the relationship between scenarios and use cases?
A use case is a set of scenarios serving a common goal
What is Brooke's Law?
Adding manpower to a late software project makes it later.
What is architectural configuration?
An architectural configuration, or topology, is a set of specific associations between the components and connectors of a software system's architecture
What is an Architectural Style?
An architectural style is a named collection of architectural design decisions that - are applicable in a given development context - constrain architectural design decisions that are specific - to a particular system within that context - result in beneficial qualities in each resulting system
What are Use Case "Extends"?
An extends relationship is used to show 1. Optional behavior 2. Behavior that is only run under certain conditions, such as triggering an alarm 3. An "interruption" in the basic flow when the condition comes true
What are the Inherent properties of the Essence?
Complexity: Software Entities are complex Conformity: Software must conform to human institutions and systems. Changeability: "All successful software gets changed." Invisibility: Cannot see software
what are the Desired Qualities of Software?
Correctness, Flexibility, Portability, Reusability, Interoperability, Robustness, Security, Reliability, Efficiency, Integrity, Usability, Maintainability
What are the Perspective on S.E. (iii) ?
Design Perspective Ultimately, from an design perspective, what matters is the external quality of the software
What are the Perspective on S.E. (ii) ?
Engineering Perspective what matters is the internal quality of the software, and making it work within the constraints of the environment
What is Incremental Models?
It is in the Architectural design phase where builders for each build: - Perform detailed design, implementation, and integration. - Test. - Deliver to client.
What is Rapid Prototyping?
It is in the Requirements Phase where users Build and discard simple prototype
What are Use Case "Includes"?
One use case includes another use case in its entirety 1. Analogous to a program calling another or a routine using a subroutine 2. The "call" is mandatory 3. An application of reuse, modularity, anticipation of change Ex. Log on/Log off
All programmers are what?
Optimists
Whats are Software Process Model Good for? (strengths)
Small programs that do not require much maintenance
what is software Engineering? (software)
Software: - Code - Documentation, user manuals - Designs, specifications - Test cases - Plans and schedules
What does a Use Case Model Consist of?
Use Case : Illustrating the system's intended functions/behaviors Actors : Illustrating the system's immediate surroundings Diagrams : Illustrating relationships between the system (use cases) and its surroundings (actors) * IMPORTANT: There will generally be one use case model per system, containing multiple use cases, actors, and diagrams
What is a use case (ii) ?
Use cases are textual descriptions of 1. Major functions the system will perform for its users 2. Goals the system achieves for its users along the way A use case describes a set of flows or scenarios 1. Each scenario is a sequence of steps describing an interaction between a "user" and a "system" 2. The use case is a collection of scenarios that together accomplish a specific user "goal" 3. Each scenario corresponds to a single path or flow through a use case