07 July 2008

Use Cases

Use cases
Use cases represent functionality of the system.
an use case description includes;
------------------------------
Title:
Short Description:
Pre condition:
Description of the procedure:
Effects:
Comments:
------------------------------
An use case must be simplified, generalized, abstract, technology independent, implementation independent.

An example of use case:

University Calender
---------------------------
Title: Insert Lecture
Short description: Lecturers types room, time and title of the lectures and inserts it.
Pre Condition: There is not any Lecture of that title yet
Description of procedure:
- check whether title already exist
- check whether room is free at the given time
- if first is false and second is true insert new lecture
- again display data of the lecture
Effects: Lecture is inserted or error message
--------------------------

Developing Business Application

System Analysis
System analysis is made on these approaches, Structured analysis and object oriented analysis. It requires requirement specification from customer and target specification form developer.

System Analysis Problem
  • Conflicting views
  • Unclear aim of the system
  • high complexity of the tasks
  • communication and language problems
  • change of requirements
Requirements
There are two types of requirements
  • functional requirements defines actions and expected result
  • Non functional requirements defines technical, ergonomics and quality of service
Requirement specification documents includes;
  • goals
  • general descriptions
  • definitions
  • product environment
  • functional and non functional requirements
  • approval criteria
good requirement must be;
  • not have incomplete processes descriptions
  • not have implicit assumptions
  • not have illegal universal quantifier
  • not have incomplete conditions
  • not have unclear processes
  • not have semantically weak verbs
Then Developing activity requires
  • Use cases
  • Use case diagram
  • Class diagram
  • Activity diagram

Model Driven Developement ( MDD )

What is MDD?
For MDD we can say new generation programming. Before MDD, we were programming with low level machine language (10100111) this is 1st generation, then assembly code programming (mov al, 61h) 2nd generation, then Programming languages C, Java, Pascal, Basic more understandable languages are 3th generation. MDD makes these 3th generation programming techniques more understandable and abstract. MDD is a UML based programming, UML is a modeling standard and you are desingning and constructing abstract prototype of your program with symbols instead of coding. MDD is a technique to generation code from an UML model.

What are benefits of MDD?
  • less development time
  • high software quality
  • high maintainability
  • reusability
  • high manageability of complexity thought abstraction
  • interoperability
  • up-to-date documentation
Cornerstones of MDD
  • Domain analysis
  • Meta modeling
  • Model driven software generation
  • Template Languages
  • Domain driven framework design
  • Principle of Agile Software development
  • Development and use of open source infrastructure
MDD infrastructure
  • Modeling Language (meta model, concrete syntax)
  • Generator
  • Destination Platforms

Software Developement Processes

Waterfall Model
Waterfall model is a sequential developments model, its phases are Requirements, Design, Implementation, Verification, and Meintenance. In this model passing to following step is only possible when the current step is fully completed. It is applicable for large software projects, but this model not flexible to changes and not iterative.

Spiral Model
It is combination of prototyping model and waterfall model. It is more adaptable than Waterfall model because it has iteration.

V Model
Its concept not to much different than Waterfall model but in V model each step related with test phase.

Unified Process
It is more iterative model, each phases these are Inception, Elaboration, Construction, Transition have iteration on it and each iteration results executable system. It is use case driven model so use cases important in this model.

Agile Software development Model
It is fast, iterative and not so much strict model. Social factors are taken into account in this model. It is more suitable for research project but it has high risk.

Extreme programming (XP)
This model separate tasks and each team is responsible their own tasks. Before the coding input and output of tasks must be defined then it will be filled. After completion of tasks each testing is made. Working small results are combined together and after each addition whole test is made. But in this model working groups must use common coding rules.

Top-Down
In this technique programmer separate the task into small tasks. Then he writes main function, then sub functions.

Buttom-Up
This technique is opposite of Top-down, first sub functions are written then main function is written.

06 July 2008

Model Driven Development ( MDD )


MD(S)D - Model Driven Software Development
MDE - Model Driven Engineering
OMG - Object Management Group
MOF - Meta Object Facility
UML - Unified Modeling Language
MDA - Model Driven Architecture
ADM - Architecture Driven Modernization (reverse engineering)

Goals of MDD
  • Reducing development times
  • Rapid prototypes for presentation to customer
  • Easier change to new technologies
  • decoupling platform and domain knowledge
  • model-code coherency
  • well defined software architecture
  • up to date documentation
MDD infrastructure basic is established on three aspect these are modelling language, generator and destination platform.

There are three different codes parts in MDD
  • Generic code parts
  • Schematically repeated code parts
  • Individual code parts
What are benefits of MDD?
  • It increase development speed
  • It depends on a software architecture so it has high quality
  • Reusability of model
  • manageability of complexity through abstraction
  • Productive environment
  • Interoperability
for more information download pdf file that explain MDD in details.

05 July 2008

Software Engineering

Software Development Processes
  • Waterfall model
  • Spiral model
  • V model
  • Unified Process
  • Agile Software Development
  • Extreme Programming (XP)
  • Top-down and Bottom-Up design
What is MDD?
Model Driven Design. It converts from model to program with generator. What is the advantage of MDD?
  • Reduce development times
  • Rapid prototypes for customer presentation
  • easier change to new technologies and platforms
  • Decoupling of domain and platform knowledge so software developers require less technical knowledge
  • Model-code coherency
  • Well defined software architecture
  • Up to date software documentation
What is MDA?
Model Driven Architecture is an approach to develop platform independent model to Platform specific models to computer run such as domain specific languages C, Java etc. In this topic I will explain AndroMDA, it is a Model driven architecture generator. It converts UML to programming language codes. There are four layers background of this generation;
  • Presentation Layer (Struts, JSF)
  • Business Layers (Java Beans, Spring)
  • Data Access Layer (Hibernate)
  • Data Stores (MySQL)
First of all I will explain software development processes;

Unified Process (Rational unified Process - RUP)
RUP is iterative incremental model and in this model Use Cases are important so it requires detailed use cases. It has four phases;
  • Inception: This step related with business case, project scope, use cases, architecture and risk analysis.
  • Elaboration: This step related with the elaboration of cases in Inception step and defining the architecture of program.
  • Construction: this step is development step and takes more effort than other steps. During the development all divided tasks have iteration and each iteration gives executable result.
  • Transition: Deployment of project and finalizing the project.
Agile Software Development
Agile requires more communication among group members because it has general plan for long term, and it requires detailed planning for short term. This way gives more flexibility for project so this method easy adaptable to changes. It suitable with research project that have high risks.

Extreme Programming (XP)
It is a simple programming methodology, in this method whole program is divided in small parts and tested each part before implementation and after implementation. Every programmer responsible for own part but also can modify other files. It finish with the integration of the whole part. But during the developments step it requires common coding rules.

Software quality features
  • Functionality: Are the required functions available in the software? Accuracy, suitability, interoperability, compliance, security.
  • Reliability: How reliable is the software? Maturity, recoverability, fault tolerance.
  • Usability: Is the software easy to use? learnability, understandability, operateability, attractiveness.
  • Efficiency: How efficient is the software? time and resource behavior.
  • Maintainability: How easy is it modify the software? Stability, analysability, ,changeability, testability.
  • Portability: How easy is the transfer of the software to another environment. installability, replaceability, adaptability, coexistence.
All these quality features are tested by quality standard ISO/IEC 9126.

What are the software quality conflicts?
  • Lack of quality awareness: All involved person to develop software have to be informed about quality criteria.
  • Different interest of involved persons: User focuses on usability of the software but at the other side developer focuses on maintainability.
  • Time and cost: Accuracy of required times and efficiency.
Why does software development require model?
  • Modeling is necessary to meet requirements of clients with to-be and as-is analysis and also use cases.
  • Modeling is helpful in correct design of software. Modeling and programming language is on different levels. Models says how to do, but programming language says how to do it.
  • Modeling is helpful to acquire the appearing the structures. Structural aspects can be well represented using visual modeling languages.
  • Modeling are used to documentation.