• Nu S-Au Găsit Rezultate

Software Engineering Body of Knowledge

N/A
N/A
Protected

Academic year: 2022

Share "Software Engineering Body of Knowledge"

Copied!
74
0
0

Text complet

(1)

Course 2 – October 14, 2019 Adrian Iftene [email protected]

1

(2)

◦ Software Engineering Books

GOF, GRASP, Swebok

◦ Swebok

◦ Software engineering tools and methods

◦ Software Engineering Tools - Examples

◦ Model Driven Development

Model Driven Architecture

Agile MDD

◦ Test Driven Development

◦ Domain Specific Language

Eclipse Modeling Framework

(3)

GOF (Gang-Of-Four) - Design Patterns: Elements of Reusable Object-Oriented Software,

Erich Gamma, Richard Helm, Ralph Johnson, John Vissides

GRASP - Applying UML and Patterns – An Introduction to Object-Oriented Analysis and Design and Iterative

Development, Craig Larman

3

(4)

Software Engineering Body of Knowledge

Book’s authors Alain

Abran, James W. Moore,

2004

(5)

5

(6)

The book is a Guide to the Software Engineering Body of Knowledge

In the book are defined 10 knowledge areas (KAs) in SE

Software requirements

Software design

Software construction

Software testing

Software maintenance

Software configuration management

Software engineering management

Software engineering process

Software engineering tools and methods

Software quality

(7)

SCM - the task of tracking and controlling changes in the software

◦ revision control and

◦ the establishment of baselines

Q: "Somebody did something, how can one reproduce it?“

A: comparing different results and of analyzing their differences

7

(8)

SCM is a supporting software life cycle process (IEEE12207.0-96) which benefits project

management, development and maintenance activities, assurance activities, and the

customers and users of the end product

The concepts of configuration management apply to all items to be controlled (both

hardware and software)

SCM is closely related to the software quality

assurance (SQA) activity

(9)

9

Management and planning of the SCM process, software configuration identification, software configuration control, software configuration

status accounting, software configuration auditing, and software release management and delivery

(10)

RC also known as version control, source control or software configuration management (SCM) is the management of changes to documents,

programs, and other information stored as computer files

Changes are usually identified by a number or letter code, termed the "revision number",

"revision level", or simply "revision“

(11)

11

Each revision is associated with a timestamp and the person making the change

For example, an initial set of files is "revision 1".

When the first change is made, the resulting set is "revision 2", and so on

Revisions can be compared, restored, and with

some types of files, merged

(12)

Stand-alone applications: Microsoft Word,

OpenOffice.org Writer, KWord, Pages, Microsoft Excel, OpenOffice.org Calc, KSpread, Numbers

Content management systems: Drupal, Joomla, WordPress

In wiki software packages such as MediaWiki, DokuWiki, TWiki (offers the ability to revert a page to a previous revision. The aim is to

correct mistakes, and defend public wikis

against vandalism and spam)

(13)

13

Branch - from that time forward, two copies of those files may develop at different speeds or in different ways independently

Change/patch - represents a specific

modification to a document under version control

Change list - the set of changes made in a single commit

Checkout - creates a local working copy from the repository (we can specify a

specific revision or obtain the latest)

(14)

Commit (checkin) - occurs when writing or merging a copy of the changes made to the working copy into the repository

Conflict - when different parties make changes to the same document, and the system is unable to reconcile the changes

Merge - two sets of changes are applied to a file or set of files

(15)

Tag - refers to an important snapshot in time, consistent across many files. Can be a user-friendly, meaningful

name or revision number

Trunk - The unique line of development that is not a branch

Update - merges changes from repository into the local working copy

Working copy - is the local copy of files from a repository

15

(16)
(17)

17

(18)

Compare with last from repository

Differences

Revisions History

(19)

The application of management activities

—planning, coordinating, measuring, monitoring, controlling, and reporting—

to ensure that the development and maintenance of software is systematic,

disciplined, and quantified (IEEE610.12-90)

19

(20)

The perception of clients is such that there is often a lack of appreciation for the complexity inherent in software engineering

It is almost inevitable to generate the need for new or changed client requirements

Software is built in an iterative process rather than a sequence of closed tasks

Software engineering necessarily incorporates aspects of creativity and discipline—maintaining a balance between the two is often difficult

The degree of novelty and complexity of software is often extremely high

There is a rapid rate of change in the underlying technology

(21)

21

(22)

Can be examined on two levels

The first level encompasses the technical and managerial activities within the software life cycle processes

The second is the meta-level , which is

concerned with the definition, implementation, assessment, measurement, management,

change, and improvement of the software life

cycle processes themselves

(23)

23

(24)

Tools that are intended to assist the

software life cycle processes, and to allow repetitive, well-defined actions to be

automated, reducing the cognitive load

They are intended to make software engineering more systematic

Methods impose structure on the software engineering activity with the goal of making the activity systematic and successful

Methods provide a notation and vocabulary, procedures for performing identifiable

tasks, and guidelines for checking both the process and the product

(25)

Computer engineering

Computer science

Management

Mathematics

Quality management

Software ergonomics (Cognitive ergonomics)

Systems engineering

25

(26)

Computing Curricula 2001 project (CC2001) states that “computer engineering embodies the science and technology of design,

construction, implementation and maintenance of software and

hardware components of modern computing systems and computer- controlled equipment.”

KAs for computer engineering:

Algorithms and Complexity

Computer Architecture and Organization

Computer Systems Engineering

Circuits and Systems

Digital Logic

Discrete Structures

Digital Signal Processing

Distributed Systems

Electronics

Embedded Systems

Information Management

Intelligent Systems

Computer Networks

Operating Systems

Programming Fundamentals

Probability and Statistics

Social and Professional Issues

Software Engineering

Test and Verification

VLSI/ASIC Design

(27)

27

ISO Technical Committee 159 on Ergonomics as follows:

“Ergonomics or (human factors) is the scientific discipline

concerned with the understanding of the interactions among human and other elements of a system, and the profession that applies theory, principles, data and methods to design in order to optimize human well-being and overall system performance.”

KAs:

Cognition

Machine Learning and Grammar Induction

Formal Methods in Cognitive Science:

Language

Formal Methods in Cognitive Science:

Reasoning

Formal Methods in Cognitive Science

Information Extraction from Speech and Text

Lexical Processing

Computational Language Acquisition

Human-Machine Fit and Adaptation

Human Characteristics

Computer System and Interface Architecture

Dialogue Architecture

Development Process

(28)
(29)

29

(30)
(31)

Editors, Compilers, Interpreters, Debuggers

31

(32)

QA Center Performance, QuickTest Professional (QTP), WebLoad Analyzer, Unified TestPro, IBM Rational Tester

(33)

Recapitulation

Swebok

SCM – Revision control

Software Engineering Tools - Examples

Model Driven Development

Model Driven Architecture

Agile MDD

Test Driven Development

Domain Specific Language

Eclipse Modeling Framework

33

(34)

Model Driven Development (MDD) is a paradigm for

writing and implementing computer programs quickly, effectively and at minimum cost

MDD is an approach to software development where extensive models are created before source code is written

A primary example of MDD is the Object Management Group (OMG)’s Model Driven Architecture (MDA)

standard

(35)

MDA is a software design approach for the development of software systems. It provides a set of guidelines for the

structuring of specifications, which are expressed as models

MDA is a kind of domain engineering, and supports model-driven engineering of software systems. It was

launched by the Object Management Group (OMG) in 2001

35

(36)

MDA approach defines system functionality using a platform-independent model (PIM) using an appropriate domain-specific language (DSL)

PIM is a model of a software system or business system, that is

independent of the specific technological platform used to implement it

DSL is a programming language or specification language dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique

PSM - the code is generated by transforming the PIM model into a platform specific model (PSM)

(37)

OMG focuses Model-driven architecture on forward engineering

One of the main aims of the MDA is to separate

design from architecture (allows system developers to choose from the best and most fitting in both

domains)

The design addresses the functional (use case) requirements while architecture provides the infrastructure

37

(38)

Creation Tool: used to elicit initial models

Analysis Tool: used to check models for completeness, inconsistencies, or error and warning conditions

Transformation Tool: used to transform models into other models

Composition Tool: used to compose several source models

Test Tool: used to “test” models

Simulation Tool: used to simulate the execution of a system

Metadata Management Tool: intended to handle the general relations between different models

Reverse Engineering Tool: intended to transform particular legacy or information artifact portfolios into full-fledged models

(39)

CA Gen is a powerful model-driven environment that will enable your organization to speed delivery and maintenance (platforms:

z/OS (CICS and IMS), UNIX, Linux, Windows, .NET and J2EE)

39

(40)
(41)

AMDD is the agile version of Model Driven Development (MDD)

MDD: The difference with AMDD is that instead of creating extensive models before writing

source code you instead create agile models which are just barely good enough that drive your overall development efforts

AMDD is a critical strategy for scaling agile software development beyond the small, co- located team approach that we saw during the first stage of agile adoption

41

(42)
(43)

Initial Requirements Modeling – identify high-level requirements and the scope of the release (what you think the system should do). We can use:

◦ a form of usage model (how users will work with the system),

◦ an initial domain model (identifies fundamental business entity types and the relationships between them)

◦ an initial user interface model (UI and usability issues)

Initial Architecture Modeling - identify an

architecture that has a good chance of working

43

(44)

Thinking Through What You’ll Do This Iteration

(45)

Recapitulation

Swebok

SCM – Revision control

Software Engineering Tools - Examples

Model Driven Development

Model Driven Architecture

Agile MDD

Test Driven Development

Domain Specific Language

Eclipse Modeling Framework

45

(46)

When you code, alternate these activities:

add a test, get it to fail, and write code to pass the test

remove duplication

This inner loop pumps the outer loops of Extreme Programming – Continuous Integration, Daily

Deployment, Frequent Releases, and Steering Software Projects

(47)

47

1. Add a test

2. Run all tests and see if the new one fails

3. Write some code 4. Run the automated

tests and see them succeed

5. Refactor code Repeat

(48)

Benefits:

◦ programmers that wrote more tests tended to be more productive

◦ It allows a programmer to focus on the task at hand as the first goal is to make the test pass

◦ total code implementation time is typically shorter

◦ the code is modularized, flexible, and extensible

Vulnerabilities

◦ is difficult to use in situations where full functional tests are required to determine success or failure

◦ The high number of passing unit tests may bring a false sense of security and productivity

(49)

Recapitulation

Swebok

SCM – Revision control

Software Engineering Tools

Model Driven Development

Model Driven Architecture

Agile MDD

Test Driven Development

Domain Specific Language

Eclipse Modeling Framework

49

(50)

DSL - is a programming language or specification

language dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique

Creating a domain-specific language (with software to support it) can be worthwhile if the language allows a particular type of problems or solutions to them to be expressed more clearly than pre-existing languages would allow, and the type of problem in question reappears sufficiently often

The opposite is:

a general-purpose programming language, such as C or Java,

or a general-purpose modeling language such as UML

(51)

Logo for children

Spreadsheet formulas and macros

51

(52)

SQL for relational database queries

LINQ - a series of language extensions

(53)

YACC grammars for creating parsers

Regular expressions for specifying lexers

◦ \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

◦ <TAG\b[^>]*>(.*?)</TAG>

◦ ^(19|20)\d\d[- \.](0[1-9]|1[012])[- \.](0[1-9]|[12][0- 9]|3[01])$

The Generic Eclipse Modeling System for creating diagramming languages

53

(54)

In design and implementation

Visual diagramming language, such as those created by the Generic Eclipse Modeling System

Programmatic abstractions, such as the Eclipse Modeling Framework

Programming tools

functional language XSLT, specifically designed for transforming one XML graph into another

Unix shell scripts - a domain-specific language for data organization

MediaWiki templates - support the creation of

page templates and inclusion by reference

(55)

Metacompilers - useful for generating parsers and code generators for domain specific languages

TexLanguage - a typesetting language developed by Donald Knuth

LaTex, a macro package for Tex which provides higher-level abstractions (though still for general-purpose document

formatting)

BibTex, a macro package for Tex which specializes in handling citations/bibliographies for scholarly works

55

(56)

Some of the advantages:

Domain experts can understand, validate, modify, and develop DSL programs

Self-documenting code

Enhance quality, productivity, reliability, maintainability, portability and reusability

Domain-specific languages allow validation at the domain level

Some of the disadvantages:

Cost of learning a new language vs. its limited applicability

Cost of designing, implementing, and maintaining a DSL

Finding, setting, and maintaining proper scope

Difficulty of balancing trade-offs between domain-specificity and general-purpose programming language constructs

Loss of processor efficiency

(57)

57

EMF started out as an implementation of the

Object Management Group’s (OMG) Meta Object Facility (MOF) specification

EMF is a Java open source framework and code- generation facility for building tools and other applications based on a structured model

EMF provides an efficient reflective API and

allows you to work with dynamic, non-generated,

models

(58)

EMF can generate Java source code that will allow you to create, query, update, serialize, deserialize, validate, and track changes to instances of your models

EMF supports generating code from XML

Schema, UML class diagrams (Rational Rose or

UML2), and annotated Java interfaces

(59)

59

Model generated looks like:

(60)

EMF Updates sites:

http://download.eclipse.org/modeling/emf/updates/releases/

Eclipse -> Help -> Install new software

(61)

61

Help -> About Eclipse -> Installation details -> Plug-ins

(62)

http://help.eclipse.org/mars/topic/org.eclipse.emf.doc/tutorials /clibmod/library.mdl (save the file to your computer)

(63)

63

(64)
(65)

65

(object Class "Book"

quid "40C81E700047"

class_attributes (list class_attribute_list (object ClassAttribute "title"

quid "40C81E770119"

type "String") (object ClassAttribute "pages"

quid "40C81E7E03A3"

type "int"

initv "100")

(object ClassAttribute "category"

quid "40C81E890344"

type "BookCategory")))

(66)
(67)

67

(68)
(69)

69

(70)

Eclipse 3.7 (Indigo), Eclipse 4.5 (Mars), Eclipse 4.6 (Eclipse Neon)

Eclipse EMF Tutorial:

http://www.vogella.com/tutorials/EclipseEMF/article.html

(71)

71

(72)
(73)

Swebok Home: http://www.swebok.org/

Revision Control: http://en.wikipedia.org/wiki/Revision_Control

SCM: http://en.wikipedia.org/wiki/Software_configuration_management

Software testing tools: http://www.docstoc.com/docs/82854752/Software- Testing-Tools-for-Software-Test-Automation

MDA: http://en.wikipedia.org/wiki/Model-driven_architecture

CA Gen: http://www.ca.com/us/products/detail/ca-gen.aspx

AMDD: http://www.agilemodeling.com/essays/amdd.htm

TDD: http://c2.com/cgi/wiki?TestDrivenDevelopment, http://en.wikipedia.org/wiki/Test-driven_development

EMF: http://www.eclipse.org/modeling/emf/, http://www.devx.com/Java/Article/29093

Generating an EMF Model:

http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.emf.doc/referen ces/overview/EMF.html

http://www.eclipse.org/modeling/emf/docs/2.x/tutorials/clibmod/clibmod_emf 2.0.html

Eclipse EMF Tutorial: http://www.vogella.com/tutorials/EclipseEMF/article.html

73

(74)

Swebok Book: http://www.math.unipd.it/~tullio/IS- 1/2007/Approfondimenti/SWEBOK.pdf

Larman, Craig (2005). Applying UML and Patterns – An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd ed.). New Jersey: Prentice Hall. ISBN 0-13-148906-2:

http://www.cs.bgu.ac.il/~oosd051/uploads/stuff/ApplyingUMLandP atterns.pdf, http://authors.phptr.com/larman/uml_ooad/index.html

Erich Gamma, Richard Helm, Ralph Johnson, John Vissides: Design Patterns, Elements of Reusable Object-Oriented Software, Addisson Wesley, 1998

Robin Martin, 2005. Principles of OOD,

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

Benefits of MDD:

http://www.ca.com/files/industryanalystreports/the_benefits_of_mo del_driven_development.pdf

Referințe

DOCUMENTE SIMILARE