Software-Engineering案例 java
当前位置:以往案例 > >Software-Engineering案例 java
2020-03-30

Software-Engineering案例 Details regarding any terms or concepts mentioned below can be found in Software-Engineering案例

Midterm Review
Readings
Details regarding any terms or concepts mentioned below can be found in Software-Engineering案例

Chapters 1, 2, 7, 4, 9, and 5 of the textbook and the accompanying slides posted under Course Content at Blackboard
Supplemental materials covered by slides under Course Content at Blackboard, including
Scrum (Introduction and INVEST in user stories)
Git (for Volition)
Software-Engineering案例Software-Engineering案例
Software Engineering Terminology
You should be able to define and answer questions involving the following terms. I’ve supplied definitions for some where it seems to me that the book or other materials have not provided a clear (or good) definition.Software-Engineering案例

Requirements, both functional and non-functional
Design
Implementation
Elapsed time
Effort
Decomposition
Iterative development process: repeatedly perform the entire set of software development activities (analyze, design, implement, test, integrate).
Architectural design
System view
Architectural style: generic definition and specific definitions for each of the following styles:
Pipe-and-filter
Event-driven
Client-server
Model-view-controller
Layered
Database centric
Three-tier
Model-view-presenter
Architectural tactic
Reference architecture
Functional decomposition
Relational database: a set of two-dimensional tables of data that can be related to one another via keys
Primary key
Foreign key
Levels of database design
Conceptual modeling
Logical design
Physical design
Deployment
ER (Entity-Relationship) Diagram: diagram for showing a system’s data and relationships among data elements that is readily convertible to a description of a relational database.
Entity
Weak vs normal
Relationship
Attribute, including:
Multi-valued (e.g., a person can have multiple email addresses)
Composite (e.g., a person’s name can consist of title, first name, middle initial, last name, and suffix components)
Modifiers on relationship, including how these appear on an ER diagram
Cardinality: number of occurrences of entities
Modality: necessities of relationships
UML (Unified Modeling Language): a graphical language used for providing a variety of views of the design of object-oriented software Software-Engineering案例
UML use case diagram: illustrates relationships between actors and use cases/user stories
UML class diagram: illustrates pertinent fields and methods of classes and static relationships between classes
Association: any relationship between classes
Aggregation (diamond symbol on aggregating class): One or more classes are “part of” another, aggregate, class
Composition: Like aggregation, but in addition the “parts” do not exist independently of the whole. In coding terms, the composing object is responsible for creating and destroying its part objects.
Inheritance (triangular arrow symbol pointing to superclass): One class inherits from another
UML state transition diagram: diagram showing the states that a system can be in and how events cause transitions between states
UML sequence diagram: diagram illustrating dynamic interactions between classes, specifically, how methods are called (messages are passed between) classes over time
Object-oriented/relational mapping: Software the facilitates the transfer of data between object-oriented software and a relational database. Room is an example.
Process model
Waterfall model
Incremental model with continuous integration
Incremental model with multiple releases
Risk: Anything that could cause a software project to fail to achieve its goals.
Javadoc
Refactoring: modifying code in order to improve its design and/or implementation, not in order to change its functionality.
Pair programming: two programmers working together at one machine.
Scrum
User story
Story points
Sprint
Product backlog
Task (in the context of user stories)
Sprint backlog
Product Owner
ScrumMaster
Sprint planning meeting
Daily stand-up (what is supposed to occur)
Sprint review meeting
Sprint retrospective meeting
Sprint burndown chart
Scrum of scrums
Planning poker
Git: particular set of software for sharing software and managing different  Software-Engineering案例versions of software
Git commands (describe what each does conceptually; you do not need to know exact syntax)
clone
checkout
add
commit
push
pull
branch
Software-Engineering Concepts
You should be able to explain, discuss, compare, work with, etc. the following concepts. For some concepts I’ve provided a brief description/explanation; others you should look up if you’re unsure about them.Software-Engineering案例

Essentially every software project has these four activities: analysis, design, implementation, testing
What differs from project to project is when these activities are performed and how they are carried out
Major differences between school homework assignments and building systems: increases in complexity, particularly increases in number and types of interactions between elements of the system
Real-world systems also include packaging/distribution and maintenance activities along with the other four activities
What are three approaches to dealing with complexity?
“Simplification” (divide and conquer): decompose problem, employ incremental development, etc.
“Technology”: use better software development and support tools such as Android Studio IDE, Git, Jira, etc.
“Process”: follow best practices for organizing and managing activities and people, such as Scrum
Project coordination involves three P’s: Processes, Products, and People
Design is often described at two levels: architectural and detailed.
List and/or briefly describe at least four of the seven architectural patterns covered in Section 7.2.3 and be able to compare/contrast architectures and determine which of several options is most suitable for certain problems.
Give an example of an architectural tactic
Name an example of a reference architecture
List and/or briefly describe at least two of the four levels of database design and be able to identify which of a pair of levels is conceptually higher (would come earlier in a development process) than the other
Be able to interpret an ER diagram, specifying the entities, relationships, and attributes, including weak entities, multi-valued attributes, identifying (key) attributes, and cardinalities
Be able to construct an ER diagram given a simple problem domain description
Be able to logically design appropriate database tables, indicating primary and foreign keys, for a given simple ER diagram
Be able to list/briefly describe at least three different types of UML diagrams
Be able to draw or interpret a simple UML class diagram illustrating classes (appropriately broken into three areas for name, fields, and methods) and various associations, including those showing aggregation and inheritance.
Be able to interpret a simple UML state diagram
Be able to interpret a simple UML sequence diagram
UI design involves two distinct aspects: designing flow of interactions and designing look-and-feel
Consistency, both internal and external, is a key UI design heuristic
List and/or briefly describe at least two of the seven other-than-consistency “other issues” for UIs beginning on p. 156 (Chapter 7 slide 56)
Iterative development is also necessarily incremental, but the converse does not necessarily hold. For instance, all analysis and design might be done at one time and only the coding and testing be done incrementally.
The waterfall model was an improvement over having no process methodology at all, but for the most part it cannot be followed in real-world practice because requirements change over time, mistakes are discovered that require reworking analysis and design, etc.
The spiral model is an example of an iterative process that focuses on reducing risk.
A good implementation will have features including readability, maintainability, good performance, traceability to requirements, correctness, and completeness; you should be able to list at least four of these
Why coding guidelines are important: consistency
What coding guidelines usually cover (naming, formatting, language usage)
The best comments describe what the code is intended to do and provide external references when appropriate
List at least two of the four values of the Agile Manifesto.
Know that Pair Programming is a “key practice” of Extreme Programming (XP).
Scrum: Popular agile development methodology based on the notion of sprints, leading to highly incremental and iterative approach to developement.
Name and briefly describe the three main roles in Scrum.
Name and briefly describe the four meetings that are part of every Scrum sprint (daily stand-up, planning, review, retrospective)
Name and/or briefly describe at least four of the elements of INVESTing in good user stories (four of the six attributes represented by INVEST)
Briefly explain how Planning Poker is “played” and for what purpose we have used it.
Git repository
Commit objects: what they are, what they point to
Graph structure of Git repository: commit graph, tree objects
Which way does a commit object point, toward an earlier commit object or a later one?
When will a commit object contain pointers to two or more other commit objects rather than to one?
Compression and the Git repository Software-Engineering案例
A branch in Git is a named pointer to a commit object that is updated to track subsequent commits.
Git branches facilitate individuals working in parallel from a shared starting point and merging their completed code back to the shared branch.
What a merge conflict is and how a conflict can arise
Describe (at a high level; the exact syntax is not important) how Git represents a merge conflict
Git “index” (staging area): what is it, which Git commands interact with it and how
Software Engineering Terms and Concepts learned in the context of Android Architecture Components
Related reading: Android Architecture Components slides 1-20 and/or Google codelabs referenced in the final slide Software-Engineering案例

Design patterns: Standard approaches to handling common situations/problems that arise when developing object-oriented software.
Observer design pattern: used to provide data from a background asynchronous thread to a main thread
Subject object produces data asynchronously
Example: LiveData object
Observer object registers itself with subject; method of the observer is called when subject has new data.
Example: Adroid Observer object, passed to observe() method of a LiveData object, has onChanged() method called when LiveData object has new data
Singleton: used when, for performance or sharing reasons, we wish to create only a single instance of a class
Class has a private constructor and a public static method that invokes the constructor the first time called and on subsequent calls returns a cached copy of the object created on the first call.
Example: Singleton pattern should normally be used in an Android app creating a database object.
Data Access Object (DAO): Object that provides methods for interacting with a persistent data store, such as a database.
Example: The Room architecture component provides a DAO interface for mapping Java method calls to SQL statements and mapping to Java objects any data returned by executing those statements. Software-Engineering案例

在线提交订单