Software Engineering Methods and Technologies by Alfonso Fuggetta and Laura Sfardini

advertisement
Software Engineering Methods
and Technologies
by Alfonso Fuggetta and Laura
Sfardini
Presented by: Nestor Rivera
EEL6883 UCF Spring 07
Introduction





Software is critical, complex, distributed.
Software Engineering (concepts, principles)
Also goal oriented (practical methods, and
technologies)
Developers often disoriented.
Author presents coherent and comprehensive
view.
Organization

Classification Scheme:
1.
2.
3.
4.


Existing Methods
Software Development Technologies
Process Support Technologies
Infrastructure Technologies
Important Topics (open source movement
and economics of software development)
Conclusions
Classifying Methods and
Technologies
Major changes (Internet and the WWW,
component based software technologies)
Not an ideal classification, but better than
SWEBOK.
4 Main categories:



1.
2.
3.
4.
Methods -> orderly process in engineering .
Development Technologies -> create, evolve, test
artifact.
Process Support Technologies -> support process
wide activities.
Infrastructure Technologies -> enabling layer.
Software Methods



Concepts, notions, guidelines and
techniques.
Either embedded in specific
technologies or knowledge used.
Include 4 different Entities: principles,
development techniques, metamethods and style and patterns
Software Methods - Principles




Define foundation (modularity, robustness,
interoperability, design for change, and
software quality)
Modularity -> information hiding, cohesion,
hierarchical decomposition, and decoupling.
Design for change (distributed applications)->
flexibility, scalability, extensibility.
Software Quality (usability, reliability,
efficiency, maintainability, portability,
customer satisfaction)
Software Methods:
Development Techniques



Informal: no formal syntax or semantics,
only guidelines/principles (i.e. agile methods,
extreme programming, UP)
Semi-formal: syntax and no semantics (i.e.
design methods: data flow, OOD, and
structure design)
Formal: formal notations and procedures
(i.e. model checking and temporal logic)
Software Methods: Metamethods



Better structure, organize, and assess
process and outcomes.
GQM: establish and operate a
measurement program
CMM: assessment and capability
evaluation model .
Software Methods: Styles and
Patterns

Number of recurring and classical schemes:
1.
2.
3.
4.



Problem frames: Jackson – typical problems.
Analysis Patterns: refined form – i.e.
customer-order setting.
Architectural Styles: typical structure – i.e.
client-server, peer-peer.
Design Patterns: finer grained concepts – i.e.
factory and observer patterns.
Represented by DL (UML)
Streamline analysis and design.
Facilitate structured knowledge and reuse.
Development Technologies




Ultimate goal: deliver code.
Dev tools and environments are most
popular.
Development: activities directly related to
producing code.
4 main categories:
1.
2.
3.
4.
Languages
Tools
Tool Sets
Environments
Development Technologies –
Programming Languages





Most popular class.
Innovative programming languages
(Java, C++, C#)
Compile and interpreter strategies.
Object Oriented Paradigm.
Java (byte code)
Development Technologies:
Description Languages
Requirements and design: description languages
(textual and graphical notation i.e. UML) nature of
problem or architecture.
Two main groups:


1.
2.

Semiformal: precise syntax, no semantics – i.e. DFD,
SADT, FD (useful to describe real world)
Formal: precise syntax and semantics. i.e. TRIO, PetriNets, and Z. Recently ADL
UML is most popular (collection of independent,
semi-formal and formal languages). UML 2 is
coming.
Development Technologies:
Mark-up Languages





Internet and WWW.
Describe different kind of entities.
Early: LaTex.
Most famous: HTML.
Latest and most promising: XML.
Development Technologies:
Domain Specific Languages



Specialization of description languages.
i.e. XMI: easy interchange of meta-data
between modeling tools (OMG-UML) and
meta-data repositories (OMG-MOF) in
distributed heterogeneous environments.
i.e. RDF (W3C) integrates variety of
applications from library catalogs and worldwide directories.
Development Technologies:
Query Languages




SQL: used in modern DBMS.
RQL: query language for RDF data.
All these languages types
(programming, markup, domainspecific, and query) -> basic entities
(code and data).
Widely exploited in tools, tool sets, and
environments.
Development Technologies: Tools
Programs -> support a specific phase.
Classes:


1.
2.
3.
4.
5.
Description/Analysis: description of problem and
software solutions –DL i.e. Rational Rose (UML)
Programming: create code i.e. compilers, generators,
debuggers.
V&V: static/dynamic code analyzers, test management
tools, performance analyzers.
Reverse Engineering & Reengineering: extract high
level abstract info -> maintenance & evolution
CM: manage/organize coding activity & work products –
multi-person development project (i.e. CVS, Clearcase)
Development Technologies: Tool Sets
and Environments





Integrated tools -> tool sets & environments.
Tools sets (workbenches): specific phase.
Environments: total comprehensive solution.
Distinction valid, but fading away (tools are
being incorporated into environments through
infrastructure)
i.e. JBuilder is a tool set and Eclipse is an
environment.
Process Support Technologies
Not specific to any phase.
Provide features to support overall management
and control of the process.
Main classes:



1.
2.
3.
4.
Generators: creation of tools and tools
sets/environments (i.e. early: yacc and lex; modern: plugin Eclipse)
Process and workflow technologies: describe process
(steps, rules, expected deliverables)
Project management: plan and track project (i.e.
Microsoft Project, COCOMO)
Software Deployment and application
management: deploy solution in target environment &
manage its operation.
Infrastructure Technologies
Not peculiar to SE.
Often identified by middleware.
Three main classes:



1.
2.
3.
Protocols and Services: exchange info and control
interaction (i.e. UDDI, IIOP, SOAP)
System Components: run-time services for a variety of
operations (OS, JVM, DBMS, communication middleware,
web-servers, app-servers)
Platforms for Component Software: coherent and
structured sets of systems components built around a
common conceptual model (i.e. J2EE, .Net)
Related Topics







Help grasp and capture modern trends in SE: open
source movement and economics of software
development.
Open source success: i.e. Apache & Linux.
Open source system components, tool sets: i.e.
Eclipse, Tomcat and J-Boss.
Some technologies amenable to revenues from
services and strongly distributed setting.
Need to carefully evaluate potential impact in future
software engineering technology.
Worldwide market will affect nature and structure of
SE technology.
These 2 challenges will affect classification scheme.
Conclusions






Classification Scheme for SE methods &
technologies.
Key criteria to analyze and compare.
Extensions to a previous paper (mainly due to
WWW)
Never-ending process.
New business models and open source.
SE is dynamic, complex and challenging so a
classification is essential.
My Thoughts…





A very good high-level overview of the entire
software engineering discipline.
Snap-shot of the current software
Engineering techniques and technologies.
The Glossary was very useful.
SE is overwhelming, so it is useful to have a
classification scheme and look at the big
picture.
Is software really the core of new products?
How about hardware?
Additional References


http://www.wikipedia.com
Sommerville, Software Engineering Vol.
7.
Questions
?
Download