24
Software Engineering Methods and Technologies by Alfonso Fuggetta and Laura Sfardini Presented by: Nestor Rivera EEL6883 UCF Spring 07

Software Engineering Methods and Technologies by Alfonso Fuggetta and Laura Sfardini

  • Upload
    khuong

  • View
    21

  • Download
    0

Embed Size (px)

DESCRIPTION

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) - PowerPoint PPT Presentation

Citation preview

Software Engineering Methods and Technologies

by Alfonso Fuggetta and Laura Sfardini

Presented by: Nestor RiveraEEL6883 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. Existing Methods2. Software Development Technologies3. Process Support Technologies4. 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. Methods -> orderly process in engineering .2. Development Technologies -> create, evolve,

test artifact.3. Process Support Technologies -> support

process wide activities.4. 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, meta-methods 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: Meta-methods 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. Problem frames: Jackson – typical problems.2. Analysis Patterns: refined form – i.e.

customer-order setting.3. Architectural Styles: typical structure – i.e.

client-server, peer-peer.4. 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. Languages2. Tools3. Tool Sets4. 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. Semiformal: precise syntax, no semantics – i.e.

DFD, SADT, FD (useful to describe real world)2. Formal: precise syntax and semantics. i.e. TRIO,

Petri-Nets, 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 world-wide directories.

Development Technologies: Query Languages SQL: used in modern DBMS. RQL: query language for RDF data. All these languages types

(programming, markup, domain-specific, 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. Description/Analysis: description of problem and software solutions –DL i.e. Rational Rose (UML)

2. Programming: create code i.e. compilers, generators, debuggers.

3. V&V: static/dynamic code analyzers, test management tools, performance analyzers.

4. Reverse Engineering & Reengineering: extract high level abstract info -> maintenance & evolution

5. 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. Generators: creation of tools and tools sets/environments (i.e. early: yacc and lex; modern: plug-in Eclipse)

2. Process and workflow technologies: describe process (steps, rules, expected deliverables)

3. Project management: plan and track project (i.e. Microsoft Project, COCOMO)

4. 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. Protocols and Services: exchange info and control interaction (i.e. UDDI, IIOP, SOAP)

2. System Components: run-time services for a variety of operations (OS, JVM, DBMS, communication middleware, web-servers, app-servers)

3. 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

?