Software Management
Methodologies
Mircea-Florin Vaida, TUC-N
ETTI- COM Department
6-10 July 2015, Univ. de Savoie, SYMME MontBlanc lab., Chambery, France
1
Basic Software
Methodologies
The basic software methodologies used to develop dedicated applications are:
- structured methodologies based on procedural applications,
- formal methodologies,- object oriented methodologies,- methodologies based on components and
services, etc.
2
Structured methodologies
-As structured methodologies, the most known was SSDAM (Structure Systems Analysis and Design Methodology) developed by the Computing and Telecommunication Agency
-MERISE being representative for Europe and North America as developed product.
3
Formal Methodologies
-In the formal methodologies, the discrete mathematics is used, not as a complete methodology, but usually to design live system development cycles.
-State based models, process algebra, etc., are used, and as representative formal methodologies we have VDM (Vienna Development Method) from the IBM laboratories and the Z language from the Oxford University.
4
OO Methodologies
-The Object Oriented (OO) Methodologies started with the Simula project; nowadays the C++0x-1y, C# and Java offer the most used OO software methodologies with a lot of refinements.
-OO Programming, OOP, represents a new paradigm; by paradigm, in this case, we understand a model or an example.
-The simple life can be easy represented as an OO Methodology, and to understand the OOP it is very useful to make some connections with the human life. 5
OOM example
Let us consider a simple example that involves OOM.
-It is spring, the life starts once again, and many flowers make our life joyful.
-We want to send some flowers to a friend, Laura, from another town.
-The Flora flowers shop will do the task. We will specify the address, what kind of flowers (type and number), etc.
6
Agent-Method
-Flora is an agent that will receive my message and has the responsibility to send the flowers
-Flora has a method (based on a mechanism or algorithm) to achieve my task, the details for me are not important (hidden).
-If I am very curious to know how the flowers are sent, maybe Flora will send a message to another flower shop from Laura’s town that will do the task. In this case, a compensation mechanism will be considered between the two flowers shop. 7
OOP Involvements
In OOP, many involvements are considered to simplify the solving process.
-In this case, the agents are considered as distributed objects, offering a service or an action used by many members of the community.
-The requirements will specify an action that will be initiated by sending a message to an agent.
-The receiver is the object that will receive the initial message. If the message is accepted, the responsibility to execute the action received will also be accepted.
-As an answer to the message received, the receiver will execute some methods to satisfy the addressed requirement.
8
Encapsulation-message
-The encapsulation process (protection- how the flowers will arrive at the destination) is a very important aspect in OOP.
-In structured programming, the main role was performed by functions (procedures).
-The messages are different from functions because:
- the message is addressed to a designed receiver
- the message interpretation depends on the receiver and can vary depending on the receiver (Laura will be happy to receive the flowers, or not). 9
Late and Early binding
When we are very happy, it is possible to send flowers to the first woman in the street. In this case, the receiver will be known only when we meet the first woman, in programming that means, late binding; the reference will be specified during the application execution.
In programming, it is also possible to specify the receiver from the beginning that means early binding, (Laura).
10
Behavior
-The behavior, in terms of responsibility is another OOP concept. The abstraction degree will increase, and it will allow the highest degree of independence of objects.
-In procedural applications, the data structures are used and modified with functions.
-OOP asks data structures to execute services, being important what the data structures can do for us and not what we can do with data structures.
11
Classes, Hierarchies
The classes and class hierarchies are important elements in OOP.
-Flora is an instance of the flowers shop class; let us consider Flower the class name.
-It is possible that Flora object belongs to a more general concept, the Supermarket class. -In this case, Flower is a subclass of the Supermarket class, an inheritance process being considered.
12
Abstract Class
It is possible to have abstract classes. In this case, it is not possible to instantiate objects from such a class. An example is the Humanclass, which is an abstract class, being a base class in an inheritance process for the Womenand Men classes, classes that are able to be used to instantiate objects.
-Usual upper in the hierarchy, we consider a base class as a root class. The concept seems to come from the human monotheist religionwhere God is higher in hierarchy. The Java classes from the standard packages consider the Object class with the same role.
13
Overriding-Virtual methods
-It is possible that some methods from a hierarchic structure will be redefined because the role was changed. This process is named overriding.
-The method has the same signature with the initial one, that is a virtual method, and it is possible to call the specific method using an inheritance mechanism at the execution. (upcasting process)
-The method name, the number, the type and the order of the parameters give the signature of the method.
14
Polymorphism
-The polymorphism is usually presented only as an overloading process. In this case, the methods have the same name but a different signature. This is an early binding mechanism, static polymorphism.
Overriding is other polymorphism aspect, invoking an inheritance process. This could be an early binding, or a late binding when we use virtual methods overriding (dynamic polymorphism).
15
Exceptions
-In the mammal world, the ornithorhyncus is an exception using eggs for reproduction.
-Exceptions represent a very useful new concept in OOP that offer reliability to the applications.
16
Animistic OOP and OOD
-The OOP is described as an “animistic” process based on a “Help Host” that assists the programmers to find the adequate solution.
-OO Design, OOD, considers the problem to identify objects from the real world and to develop an independent language, organized around these objects. The design technique used in this case is a responsibility-driven design.
17
Responsibility
-The responsibility is a very important requirement in daily life and in programming.
- When we create an object responsible for an action we must specify at least the frame where the observed rules will be achieved.
-The responsibility also considers a high degree of independence and non-interferences. 18
Independence and Code
reusable
-The Flora flowers shop has the independence to choose how to send the flowers to Laura.
-This mechanism is not supervised, which is specific to OOP.
-Code reusable is an important mechanism very easy to be used in OOP if the programmer has a great experience. 19
OO Techniques (OOT)
OOT, specifies that the software application is organized as a discrete collection of objectsthat includes the data structures and the methods. Four steps are usually considered:
- analyses, based on an abstract model, - system design, based on subsystems
considering the analyzed structure and the proposed architecture,
- object design, with implementation details of data structures and algorithms,
- implementation, with a specific programming language used.
20
OOP, OOD, OOT
-OOP, OOD and OOT are connectedtogether.
-The behavior application is a very important element considering the user interaction.
-The behavior manifestation, independence and the information content, characterize the application components. 21
Components behavior
Components behavior represents a set of tasks that the component can execute and is expressed by a protocol.
-the state of a component represents all information that a component contains
-a class describes a set of objects with similar behavior
In OOD two concepts are used:
-Cohesion, defines the responsibility degree of a component considering the overriding process
-Coupling, describes the links among software components that must be reduced
22
Parnas principle
The Parnas principle is very important in the mechanism of a software application design.
-This principle separates the interfacemodule and the implementation module. -For a user it is very important to offer an easy useable interface that is why this part uses innovative concepts including multi-discipline concepts.
23
Software components are developed in parallel by different programmers that may consider Parnas principles as:
- the development of a component must offer to the user all information to obtain useful effective services and no more other information
- the development of a component must contain all necessary information to realize the assigned responsibilities and no more other information
24
Component
Implementation
The component implementation considers: -data structures design -algorithm description -a) component implementation using a programming
language. Usual a facilitator component will be used (behind the scene) and preconditions are imposed
-b) component integration, starting with stub components that are limited components and a unit testing process
-testing integration, stubs are replaced with real code -in the complete implementation a regressive testing by
modifying some components will be used -c) software maintenance
25
Life and Programming
-A lot of OO methodologies came from the human life.
-A new direction considered in thesoftware development is the organic computing.
-That’s why understanding life
is easier
to program computers.26
Software Engineering
Methodologies
According to IEEE, software engineering is defined as the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.
In anutshell, software engineering can be defined as a systematic approach to develop software within specified time and budget.
[http://ecomputernotes.com/software-engineering/what-is-software-engineering-write-basic-objective-and-need-for-software-engineering] 27
Software development involves:
1. Classical Software Engineering (SE) methodologies
2. Approaches based on development tools for automatic, semi-automatic software
3. Modern concepts arising from everyday life in software development
28
General Software Strategy
The strategy follows three main stages:
1. establishing phases and stages by passing successively a program during their life cycle and to define concrete content of these phases and stages to be clearly demarcated
2. development/use of technologies, i.e. methods and tools that are associated with phases
3. the development of scientific methods, i.e. the appropriate methods for the organization and management of the various activities relating to the realization of industrial-style applications software
29
New trends in the development of advanced software introduces the idea of software development in an organic way (organic development).
This growth metaphor comes from living organisms, that is done naturally.
In the field of computer science organic development involves the use of software tools in the development of software tools that are part of the application itself.
The user can add/modify application features that were not originally considered by the developer.
This condition is very close to the growth of living organisms, which is why we have introduced this notion so.
30
General objectives of SE
A) Adaptability of programs
B) Efficiency of programs
C) Reliability of programs
D) The perceptibility of the programs
31
General principles of SE
1. modularity
2. abstracting
3. location
4. encapsulation
5. uniformity
6. completeness
7. conformability
32
Requirements regarding project
management software
-functional requirements
-quality requirements
-requirements relating to resources
33
Components of projects
management
A. Tasks management
B. Team management
C. Implementation context management
D. Product maintenance management
34
The basic activities involved in
software product management
A. The feasibility study
B. Planning
C. Execution of the project
35
The quality of software
products
Quality takes into account all stages of the planning and execution of software. For any software system there must be three, namely specs:1.-Functional specification describing what it
takes to make the system (service).2.-Quality specification that describes how
well operates the components (functions).3.-Resource specification, which specify the
amount spent for the system.36
In this area it is trying to identify thespecific qualities of products and software aregrouped in three categories:1.Product operation qualities;2.Product revision qualities;3.Product transition qualities;
37
1. Product operation qualities are:o Accuracy: the margin up to which the program
meets the specifications and meets the objectivesof the user.
o Reliability: the margin up till the program isexpected to work with the specified parameters atthe imposed precision.
o Efficiency: the amount of resources requested bythe software.
o Integrity: the margin up to which access to thesoftware or data of unauthorized persons can becontrolled.
o How to use: the effort required to learn, work,prepare entry and interpret the exit.
38
2. Product revision qualities are:o Maintenance: the effort required to locate
and repair the error in an operationalprogram;
o Testability: the effort required to test aprogram to ensure that work in thespecified parameters;
o Flexibility: the effort required to changean operational program;
39
3. Product transition qualities are:o Portability: the effort required for the
transfer of the program from aconfiguration of hardware and softwareenvironment to another/other.
o Reuse: the margin up to which a programcan be used in other applications;
o Interoperability: the effort required toengage a system with another;
40
Time management
In order to effectively organize our timeis required to follow three steps:1.-the creation of the list of priorities;2.-identifying and marking the importance
and urgency of each activity from the list;3.-setting the execution of actions in time;
41
Human factors and
programming implications
-IS – Information System
-IT – Information Technology
-ITC – IT + Communication
IT Revolution, “electronic-communication cottages” – described by Alvin Toffler, Future shock, 1970
42
IT Effects
Effect Cause
Individual The dismissal of the
expert
Unemployment/
reducing the time
Harder work
Improvement of labor
Labor liability
enablement
Expert system
Automation
Removing the
qualification
Support the
development of IT/IS
Societies The collapse of a city
Leisure possibilities
raised
Communications falling
Automation
Organizations Enterprises without
people
Paperless offices
Automation
Networks, data bases
43
Criteria used to develop IS
A) Success
-productivity
-efficiency
B) Defaults-technical
-utility
-usability
Effectiveness, customer satisfaction, efficiency – triangle representation
Human factors linked to other sciences: Physiology, psychology, sociology, philosophy (spirituality)
44
Psychology and human
memory
Human memory:
-sensorial
-short lasting
-long lasting
Human-level processors:
-perceptual
-cognitive
-motor
-spiritual
45
46
Users needs
-physical
-functional
-aspirational
47
Software applications
development management
The management of software systems borrows heavily from project management areas, but there are nuances that may arise in the field of software that cannot be found in other management disciplines
Software development process The best-known models used at the moment are:
- Waterfall model,
- Spiral model,
- iterative and incremental development models, etc.
48
METHODS OF SOFTWARE
PRODUCTS DEVELOPMENT
Sequential methods - used in the past (prototype, successive extensions in two steps)-restrictive, with fixed price and predictive, and now used:V model
Waterfall model
Incremental-iterative methods - arepermissive and enables adaptive changesduring the projects:Agile/Scrum model
Just – In – Time/Kanban model49
V model
50
Waterfall with feed-back
51
Agile software development
Agile software development is made by a group of software development methodologies based on iterative and incremental development process, where requirements and solutions evolve towards collaboration between teams with auto-organized and cross-functionality (interdisciplinary).
There's an Agile Manifesto since 2001.
There are 12 basic principles considered, from the user satisfaction, to adjusted settings based on circumstance changes
52
53
Various methods from the adaptive
to the prescriptive
54
We can compare methods on the basis of the number of rules that are provided. Prescriptive means "more rules to follow" and "adaptive means fewer rules to follow."
100% prescriptive means that you no longer use your brain, you have a rule for everything.
100% adaptive means that you may DO Anything, no rules or constraints.
Both extremes seem to be unfit from a practical standpoint.
Agile methods are sometimes called lightweight methods, specifically because they are less prescriptive than traditional methods
Scrum and Kanban are both highly adaptive, but relatively speaking, a Scrum is more prescriptive than Kanban.
55
Scrum offers several constraints, and thus leave fewer options. For example, Scrum prescribe the use of time-boxed type iterations while, Kanban does not.
RUP (Rational Unified Process) is the most prescriptive-over 30 roles, more than 20 activities, and more than 70 artifacts. A huge amount of things to learn.
XP (eXtreme Programming) is more prescriptive versus Scrum. Includes many of Scrum + a group specific acceptable engineering practices such as development based on tests and scheduling in pair
Kanban eave everything open. The only constraints are the visualization of workflow and limiting work in progress, WIP (Work In Progress). Close enough to do anything but surprisingly still strong.
56
Software development
methodology - SCRUM
Scrum wants that you:
-Share organization in small interdisciplinary teams, cross-functional teams what auto-organize:
-To share the work in a list of small, concrete elements
57
Share time in a fixed-length short iterations (usually 1-4 weeks), with the potentiality to deliver demonstrably code after each iteration.
58
Agile/Scrum Concepts
59/72
Agile/Scrum Roles
PO – Product Owner – the holder of the product.
SM – Scrum Master – person who shall ensurethat the process is respected, that the obstaclesare removed and that each team member has towork.
Agile Team – the development team - isresponsible for the design-and implementation.
60
- the classical approach is in general of waterfall type with Gantt diagrams
- at Agile/Scrum we use a SOW(Statement Of Works) division: with small packages
Team projects are (medium or small) :
1 Product Director will represent the client, Product Owner
1 Project Manager or SCRUM Master
2-6 developers, developing team
1 tester for 2 developers
61
Partile implicate :
partea interesata de rezultate
partea care dezvolta rezultate
Se bazeaza pe SPRINT-URI
milestone-uri
milestone-ul major = deadline
62
Kanban
Kanban wants you:
To view the workflow (workflow)
Share in pieces, to write every action (item) on a card and then put on the wall
To use columns with names to illustrate where every item in the workflow.
To limit WIP (Work In Progress)-by assigning explicit limits concerning how many items may be in progress at each workflow status.
To measure the so called lead time (the average time of realization of an item, sometimes called "cycle time"), to optimize the process for making this lead time how small and predictable possible.
63
64
Comparison between the
Agile/Scrum vs Kanban
Similarities:
Both of them are productive and Agile/Just in Time
Both use a programming mechanism by pulling
Both limit WIP
Both of them are transparent to bring improvements to our run processes
Both are geared to deliver software releases quickly and often
Both are based on their own organizational teams
Both ask-splitting activity into pieces
Both plan to release is continually optimized based on empirical data (speed/lead time)
Both methods are based on experience (empirical)
Both methods allow working on multiple products simultaneously
65
Comparison between the
Agile/Scrum vs Kanban
Differences: Agile/Scrum is more normative than Kanban Agile/Scrum requires iteration time box Agile/Scrum roles-requires PO, SM, Agile Team Limiting WIP (Work In Progress) Agile/Scrum does not allow changing in an iteration Agile/Scrum Board resets between iterations Agile/Scrum requires cross-disciplinary teams The tasks are divided into sprints for Agile/Scrum Agile/Scrum requires estimation and speed
66
Other Differences
67
JIRA product
JIRA – software tool used for project planning and monitoring; It is used both for the Agile Scrum methodology/and Kanban.
Other tools used for Agile/Scrum:
Agile Tracking Tool, Kunagi, Scrum Do, PangoScrum, Express, Scrumy, Sprintometer, Agilo for Scrum, etc.
Other tools used for Kanban:
Kanbanize, Agile Zen, Kanbanery, Kanban Tool, Kanban Pad, etc.
68
JIRA description
JIRA-truncation of "Gojira", the Japanese word for Godzila
Developed from 2002 onwards
Comprises three zones:
Zone of tasks
Zone metrics
Zone of graphs
JIRA + Green Hopper plugin-used to project planning.
69
EXPERIMENTAL RESULTS-
mobile application - Agile/Scrum
Scrum board for the first sprint
70
EXPERIMENTAL RESULTS -
Agile/Scrum
Story points for first sprint
71
EXPERIMENTAL RESULTS -
Agile/Scrum
State diagrams
72
EXPERIMENTAL RESULTS -
Agile/Scrum
Delivered values diagram
73
EXPERIMENTAL RESULTS -
Agile/Scrum
Story points for each sprint
74
EXPERIMENTAL RESULTS -
Kanban
State diagrams
75
EXPERIMENTAL RESULTS -
Kanban
Control report
76
CONCLUSIONS Scrum/Kanban
– mobile application
In the case of mobile application managementapproach, it is desirable to use Kanban method,because the Board is greatly simplifiedcompared to Scrum Board, there are few tasksaccomplished, and the project will be completedin a much shorter time and at a lower cost thanif we use Scrum Board.
If we implement Agile/Scrum method, timeplanning would be higher and would ' lose 'precious time and method for specific meetings.
77