INTRODUCTION
Objetive
- Understand what is the purpose of the course, their must be conscious about the changes between the last programming course and the current.
- Say the importance about the teamwork.
Quiz
- What is to abstract?
- For what reasons we are going to use JAVA in the course?
- What are the abilities to be a successful object modeler?
Tasks
- Create teamworks
Beginning java objects from concepts to code
Chapter 1 - Abstraction and Modeling
Abstraction: Simplify the details of the real world until a manageable point. Recognize the important details of an object or situation and ignore the others. Example a Map. The fewer features an abstraction presents, more general it is (Generalization through abstraction).
- Unlimited number of possibilities
- Not exists best or correct, just better or worst modeling
- Incorrect model
- Comunicate abstraction
- There is no test no verify a model
Successful Object Modeler
- Insight into the domain problem
- Creativity
- Good listening skills
- Good observation skills
- An organized process
- A way to communicate: Graphical notation (UML).
Classification: Arrange information into categories according to established criteria. These rules must to be not too general, not too restrictive and containing no redundancies.
Abstraction is the basis of software development
Abstraction Rehuse: Pattern matching and reuse will help to save time and focus in the important things.
Chapter 2 - Some Java Basics
Objects are language neutral so you can practice in any language.
Why Java?
Java is architectural neutral
Java it is compiled in bytecode. it can run in any computer for which a Java Virtual Machine (JVM) is available, also it is portable without re-compiling .
Java provides "One stop shopping"
Java language provides an extensive set of application programming interfaces(APIs) that provide a consistent, platform-independent means of accessing all under- lying operating system functions.
Java Is Object-Oriented from the Ground Up
Merely using such an OO language does notguarantee that the applications you produce will be true to this paradigm.
Java Is an Open Standard
Java Is Free!
Class
Software Engineering
- PIMO
- First contact with a programming language
- PIMB
- Data structures
- POOB
- PDSW
- Join the knowledge learned in POOB and MBDA to build for first time a complete product using the correct process to develop software.
- ARSW
- Learn about the different architectural software patterns to ensure specific no functional requirements.
- COSW
- Build a software including the no functional requirements in the planning to select the correct architecture.
- SOSW
- Learn about the most common software solutions.
Program
- Correctness: It is said that an algorithm is correct with respect to an specification. Functional correctness refers to the input-output behaviour of the algorithm. (i.e., for each input it produces an output)
- Extensibility: It is a principle where the implementation takes future growth into consideration. The term extensibility can also be seen as a systemic measure of the ability to extend a system and the level of effort required to implement the extension. Extensions can be through the addition of new functionality or through modification of existing functionality. The central theme is to provide for change – typically enhancements – while minimizing impact to existing system functions.
Object Oriented
Paradigm: It is a style or "way of programming"
- Object -> contains data -> fields -> known as attributes.
- Code -> contains logic -> procedures -> known as methods
- The most popular POO is class-based.
Investigation
Behavior Driven Development (BDD)
It is a software development process that came from the Test Driven Development (TDD).
BDD try to find a common language to include the technical and business concerns., and from this common language define the Tests, finally the development.
BDD use user stories (HOW [rol] I WANT TO [feature] FOR [benefit]) to define acceptance tests using the scenario description (GIVEN [initial context], WHEN [event occurs], THEN [sure some outcomes]).
- Write user stories
- Write scenarios
- Automate tests
eXtreme Programming
It is a development methodology in the software engineering formulated by Kent Beck. It is the most important of the agile process in the software development. "adaptability before predictability".
- Changes over the project it's not only natural, but deseable.
Values
- Simplicity: To design and speed up the development and enhance the maintenance.
- Communication: For every stakeholder, but never over documentation.
- Feedback: The client must be included in the whole process.
- Brave: Re-build code when it is necessary.
- Respect: With the partners and their job.
Model Driven Development (MDD)
- Models as principal element in the software development. (i.e., code generated automatically from models)
- A MDD process could be interpreted like a set of transformations Model to Model (M2M) + a final transformation Model to Text (M2T)
Benefits
- Increase productivity
- Best quality
- Best understanding of the system to develop
- Easy to maintain
- Easy to reuse or re-implement.
SOLID
Unified Modeling Language (UML)
It is a language, the most common to document, visualize, build and specify software. It is backed up by the Object Management Group (OMG)
Structural
Class
Components
Deployment
Objects
Packages
Profiles
Behavior
Activities
Use cases
State machine
Interaction
Sequence
Times
Communication
JAVA
- WORA: "Write once run anywhere".
- James Gosling