4,579 research outputs found

    A Functional Architecture Approach to Neural Systems

    Get PDF
    The technology for the design of systems to perform extremely complex combinations of real-time functionality has developed over a long period. This technology is based on the use of a hardware architecture with a physical separation into memory and processing, and a software architecture which divides functionality into a disciplined hierarchy of software components which exchange unambiguous information. This technology experiences difficulty in design of systems to perform parallel processing, and extreme difficulty in design of systems which can heuristically change their own functionality. These limitations derive from the approach to information exchange between functional components. A design approach in which functional components can exchange ambiguous information leads to systems with the recommendation architecture which are less subject to these limitations. Biological brains have been constrained by natural pressures to adopt functional architectures with this different information exchange approach. Neural networks have not made a complete shift to use of ambiguous information, and do not address adequate management of context for ambiguous information exchange between modules. As a result such networks cannot be scaled to complex functionality. Simulations of systems with the recommendation architecture demonstrate the capability to heuristically organize to perform complex functionality

    3d-gis Based Procedural Modeling In Contemporary Urban Planning And Design Practice

    Get PDF
    Tez (Yüksek Lisans) -- İstanbul Teknik Üniversitesi, Fen Bilimleri Enstitüsü, 2016Thesis (M.Sc.) -- İstanbul Technical University, Institute of Science and Technology, 2016Tüm dünyada şehirler çok hızlı bir şekilde büyümeye devam ediyor. Kentsel planlama ve kentsel tasarım disiplinleri de bu değişime ayak uydurabilmek amacıyla yeni kuramsal kavramlar geliştirmekte ve kendilerini bu değişime adapte etme gayreti göstermektedir. Kentlerin durdurulamayan nüfus artışı beraberinde ciddi çevresel, sosyal, ekonomik ve mekansal sorunlar ortaya çıkarmaktadır. Bu sorunların çözümü için gerekli muayene ve analiz süreçleri büyük miktarlarda veri gerektirmektedir. Bu büyük verinin ve büyük sorunların yönetiminde alışılmış bakış açıları yetersiz kalmaktadır. Dünyada ve Türkiye'de yaygın planlama pratikleriyle üretilen plan çizimleri ve raporlarının kentsel tasarıma konu olan mekanın yaşanabilirliğinin ve mekansal kalitesinin sağlanmasında yetersiz kalabildiği iddiası bir çok araştırmada paylaşılmaktadır. Böylece, kentsel alanın yönetim ve planlamasında alışılmış olanların dışında, yeni parametreler eklenmektedir. Türkiye’deki planlama mevzuatının çokça değişen ve istikrarsız yapısı, mekansal planlamada kullanılan araç ve kuralların sıklıkla değişime uğramasına neden olmaktadır. Yasa, yönetmelik ve plan notlarının getirmiş olduğu düzenleyici araçlardaki değişimlerin, kentlerde yaratacakları mekansal sonuçları incelemek gün geçtikçe daha çok zorlaşmaktadır. Söz konusu araçların değişimiyle planlamanın kentsel çevreyi regüle ediş biçimi de değişmektedir. Bunun yanında, genel anlamda Türkiye’de sonuç ürün olarak üretilen planların, detaylı sosyo-ekonomik ve çevresel analizlere dayalı, mekansal vizyon ve tasarım stratejilerini temel alan bir yapıda olup olmadıkları tartışmaya açıktır. Bu günün pratiklerinde, plancıların ve kentsel tasarımcıların, kente dair mekansal kararlarında tasarımsal kaliteden ziyade mekanik inşaat alanı hesaplarına daha fazla önem atfediği söylenebilir. Teknik olarak, alışılmış plan üretim araçlarının kent plancısını yaratıcı düşünce üretimi noktasında engelledikleri ve bu araçların, bilgi, iletişim ve temsiliyetle ilgili sorunlara sebep oldukları araştırmalarla gösterilmiştir. Diğer yandan, teknolojinin gelişmesiyle kullanımı artan bilgi sistemlerine dayalı yeni teknikler, mekansal planlama pratikleri için dikkate değer araçlar yaratmaktadır. Planlama ve kentsel tasarım pratiklerinde, müdahale edilmekte olan kentsel çevreyi görselleştirmek, tasarımla ilgili fikir alışverişi yapmak ve farklı tasarım senaryolarını deneylemek amacıyla yeni tasarım metodlarının araştırılması bir zorunluk haline gelmektedir. Bu metodlar genellikle kentsel çevreyi tüm boyutlarıyla ele almayı ve her tür bilgiyi yöneterek sentezlemeyi sağlayan kapsamlı araçları içermektedir. Bu çalışmanın merkezinde, kentsel planlama süreçlerinin üç boyutlu modelleri içermesi gerektiği hipotezi bulunmaktadır. Dünyada özellikle üç boyutlu görselleştirme araçları, mekansal planlamada kaliteli tasarımlar üretebilmek amacıyla kullanılmaktadır. Yaygın pratikte üç boyutlu kent modelleri, iki boyutlu çizimlerin genellikle görselleştirme amacıyla belli programlara aktarılmak suretiyle oluşturulmakta ve kent modelleri genellikle halihazır durumu betimlemek amacıyla üretilmektedir. Bunun yanında belirli bir alandaki, tasarımı bitirilmiş bir projenin tanıtımı gibi amaçlarla görselleştirilmesi de yaygın kullanımlardan biridir. “Fakat üç boyutlu modelleme alanındaki yeni teknikler tasarım aşamasını da destekleyecek çalışma yöntemleri sunmaktadır. Bu araçlar kullanılarak mekansal planlama süreçlerinde tasarım boyutuna da kayda değer katkılar yapılabilir. Bu araçlar içinden yordamsal modelleme olarak Türkçe’ye çevrilebilecek olan “procedural modeling”, bahsedilen araçlardan biri olarak öne çıkmaktadır. Yordamsal modelleme araçları vasıtasıyla, küçük veri girdilerini yordamsal kodlar ile tanımlanan işlemler yardımıyla oldukça büyük sonuç ürünlerine dönüştürebilmek mümkündür. Bu modelleme yönteminde, ilk adımda modelleme programının dijital girdileri hangi şartlarla, hangi sıra ve ne şekilde işleyeceğinin tariflendiği “kural kodları” üretilerek, bir parselden anlamlı bir yapılaşma modeli oluşturacak temel komut zinciri tanımlanmaktadır. Bu kodlar, modelleme yapılırken değiştirilebilecek olan parametreleri içermektedir. Söz edilen parametreler parsel bazında CBS tabanlı bilgilere bağlı olarak veya kullanıcı tarafından değiştirilerek, arzu edilen model oluşturulabilmektedir. Bu çalışma özelinde örnek vermek gerekirse, planlama mevzuatında tanımlanan yazılı yapılaşma koşullarının yordamsal parametreler olarak tanımlanması amacıyla yazılacak bir kodun, kentsel tasarım kararları olarak üçüncü boyutta karşılığını hızlı ve dinamik bir arayüzde görselleştirebilmenin mümkün olacağı savıyla yola çıkılmıştır. Tezde, öncelikle 3 boyutlu kent modellerinin, bir meri planın tanımladığı kentsel çevreyi tasavvur edip edemeyeceği sorgulanarak, bir örnek alan çalışması yapılmıştır. Bir diğer önemli soru da Türkiye’de hızla değişen planlama mevzuatının, yeni teknolojilerden biri olan 3 boyutlu CBS tabanlı yordamsal modelleme teknikleriyle entegre olup olamayacağıdır. Bu sorular ışığında, Türkiye’de mevcut kentsel planlama ve tasarım pratiğinde tanımlanmış olan kodlar ve araçlar, yordamsal modelleme parametrelerine dönüştürülerek üç boyutlu modelleri oluşturacak işlem adımları ve kuralları oluşturulmuştur. Bu işlemlerde çekme mesafeleri, taban alanı, kat sayısı, yapı yüksekliği, yapı yaklaşma mesafeleri ve emsal gibi bir çok parametreyi içermektedir. Planlama sisteminde tanımlı kodların yapılaşmayı tam anlamıyla tanımlayamadığı düşünülen noktalarda yeni parametreler eklenerek, yapılaşma kodları oluşturulmuştur. Her yapı parseli özelinde, bu parametrelerdeki her değişim, program tarafından sonuç üründe güncellenerek, kullanıcıya bu değişimin görsel sonucunu gözlemleme imkanı verebilmektedir. Koda göre; parsel içinde, yapı oturum alanı dışındaki alanlar, seçime göre yeşil alan, sert zemin veya otopark alanı gibi düzenlenebilirken, bir parselde bir veya birden fazla yapı yapılabilmektedir. Yapıların oturum düzeni, modelleme esnasında önceden tanımlanmış oturum tipolojileri seçilerek değiştirilebilmektedir. Cephe ve çatı detayları, pencere ve duvar genişlikleri gibi temel özellikler başta olmak üzere, bir çok parametreyle düzenlenebilmektedir. Yapı parselleri dışında bu sisteme yol orta çizgileri ve topoğrafya verisi eklenmiştir. Yol ve parseller, topoğrafya üzerine oturtularak alanın gerçek dokusu görselleştirilmiştir. Yollar; yol genişliği, şerit sayısı, yaya ve bisiklet yolları, kent mobilyaları gibi bir çok parametrelerle kontrol edilebilmektedir. Oluşturulan bu kodlar, genel planlama araçlarını içerdiğinden, bir alana veya bir tasarım tarzına özgü değil, her alanda kullanılabilecek ve farklı tasarımlara izin verebilecek bir sistem sunmaktadır. Bu ön çalışmanın ardından oluşturulan kodlar, İstanbul’un Beylikdüzü ilçesinde seçilen bir çalışma alanında, yürürlükteki uygulama planına tanımlanmıştır. Planda tariflenmiş olan yapı adaları, fonksiyonlar, arazi kullanımı ve yapılaşma kararları, bu dinamik modelleme sisteminde, alanın tamamı için tanımlanan farklı tasarım kriterleriyle yorumlanarak, iki farklı kent modeli oluşturmak amacıyla kullanılmıştır. Bu alternatif tasarımlardaki amaç; plan yönetmelikte belirlenmiş olan yapılaşma kararlarına uygun olması, uyumlu bir tasarım içeriğine sahip olması ve monoton bir model yerine gerçekçi bir kent modeli oluşturabilmektir. Aynı çalışma alanında, aynı plan kararları kullanılarak üretilen iki alternatif tasarım uygulandıktan sonra, modellerin sayısal değerlendirmesi yapılmıştır. İki tasarımda da kullanılan mevcut parsel dokusu ve plan durumları, coğrafi bilgi sistemi kaynaklı olduğundan dolayı, içinde birtakım analitik bilgiler içermektedir. Bununla birlikte, modelleme esnasında yapılan tüm işlemler sonucunda her bir parselin içerdiği yapılaşmaya ait nicel veriler gözlenebilmektedir. Bu değerlendirme; nüfus, yoğunluk, bağımsız birim sayıları gibi demografik verileri; farklı arazi kullanımlarının toplam inşaat alanları, tahmini enerji tüketimleri ile maliyet ve değer hesaplamalarını içermektedir. Bu sonuç raporlamaları verilen her yapılaşma kararının ne gibi sonuçlar oluşturacağı gözlemlenebilmektedir. Sonuç olarak, oluşturulan üç boyutlu coğrafi bilgi sistemleri tabanlı yordamsal modelleme sisteminin, kentleşme ve planlama politikalarında hızlı çözüm üreten bir yapı ihtiyacına ne denli yanıt verebildiği ortaya konmaktadır. Bu çalışmada üretilen modelleme sistemiyle bir plan, plan notları, yasa ve yönetmelikler baz alınarak oluşturulan kentsel tasarım alternatifleri göstermektedir ki; mevzuatın içerdiği yazılı ifadeler yapılaşma şartlarında esneklik sağlamak yerine belirsizlik yaratmaktadır. Bu durumu oluşturan koşulların tanımlanması ve daha analitik koşullara bağlı bir yapıya kavuşmasında bu çalışmaya benzer yordamsal modelleme uygulamaları yardımcı olabilir. Diğer yandan, imar planlarının ve planlama mevzuatında yer alan yasal tanımlamaların tasarım üzerinde fazlasıyla kısıtlayıcı bir rolü olduğu savı da eleştirilerek, yordamsal modellemenin bu arayüzde oynayabileceği roller araştırılmıştır. Aynı plan kurallarına dayanılarak parsel bazında birbirinden çok farklı yerleşim ve biçim alternatiflerinin üretilebilecek olduğu, çalışmada deneyimlenmiştir. İmar kuralları genel anlamıyla çok fazla parametre ve kriter içeriyor gibi gözükse dahi, aslında bu sınırlar içerisinde, tasarımcıya geniş bir alan bırakmaktadır. Bunun yanında, bu sistemin sürdürülebilir planlama pratikleri çerçevesinde nasıl kullanılabileceğine dair görüş ve öneriler aktarılmaktadır. Kentlerin hızla geliştiği günümüzde, kente dair kararların gelecekteki etkilerini görmek ve daha duyarlı imar kararları üretmek kritik öneme sahiptir. Yordamsal modellemenin raporlama özelliği sayesinde mekansal senaryoların çevresel, ekonomik ve sosyal etkileri daha etkin bir şekilde analiz edilerek duyarlı bir planlama pratiği tanımlanabilir. Şehir plancıları çizdikleri planın tüm boyutlarıyla nasıl bir kentsel çevre yaratacağını tahayyül edebildikleri varsayımıyla hareket etmektedir. Bu varsayımın bir yanılgı olduğu, kentlerimiz için yapılan planlardan herhangi birkaçı incelendiğinde bile kendini göstermektedir. Plancı ve tasarımcılar mekansal kararlarının yaratacağı çevreyi zihinlerinde tahayyül etmeye çalışmak yerine, yeni teknoloji ve yöntemler kullanmalıdırlar.The cities keep developing rapidly all over the world. Urban planning and urban design disciplines are striving to enhance new theoretical concepts in order to keep up with these changes. Various researches commonly claim that the outcomes that are generated with the traditional planning techniques in the world and Turkey fall short in providing the livability of urban space and the design quality. The dynamical structure of the planning regulations in Turkey causes frequent changes in the tools and rules applied in spatial planning. The changes in the regulatory tools caused by the law, regulations and plan notes make it harder to investigate them in the spatial changes that will take place in the cities. On the other hand, the new information-based techniques are increasingly used as a result of the developments in technology create remarkable tools for spatial planning practices. Especially three dimensional visualization tools are used in order to produce high-class designs in spatial planning all over the world. Mostly, the three dimensional urban models are produced by transferring two dimensional drawings into particular software for some reason and they are generally produced to describe the current situation. However, novel techniques in 3D modeling field are offering workflows for aiding the design phase. By using such tools, valuable contributions can be achieved in design aspect of planning processes. Procedural modeling steps forward among these tools. With procedural modeling tools, quite remarkable outcome can be produced by means of the operations that identify the small data entries with procedural codes. In this modeling methodology, it is possible to dynamically visualize three dimensional representations of design decisions by defining regulative codes into procedural codes. In this thesis, the codes and tools identified in the current urban planning and designing practices in Turkey are converted into procedural modelling parameters and thus the operation rules that will form the three dimensional models have been set. Then, the current implementation plan of the selected field is transformed into a three dimensional interactive model. The city blocks, functions, land use decisions and housing rights, which are described in the plan, are interpreted with different designing alternatives within this parametrical system. After these alternative designs are modeled in compliance with the criteria specified in the plan and regulations, the quantitative evaluation of these models are conducted. This evaluation includes reports of estimations such as demographic data, calculations of areas, costs and value calculations and consumption demands. As a consequence, the response capacity of produced three-dimensional GIS based procedural modeling system on urbanization and planning policies is investigated. Additionally, opinions on the utilization of this system within the framework of sustainable planning practices are expressed. Meanwhile, by criticizing the arguement that legal codes exceedingly restrict the design process, it is showed that various design alternatives can be created within this interface by utilizing procedural modeling.Yüksek LisansM.Sc

    From Monolith to Microservices: A Classification of Refactoring Approaches

    Full text link
    While the recently emerged Microservices architectural style is widely discussed in literature, it is difficult to find clear guidance on the process of refactoring legacy applications. The importance of the topic is underpinned by high costs and effort of a refactoring process which has several other implications, e.g. overall processes (DevOps) and team structure. Software architects facing this challenge are in need of selecting an appropriate strategy and refactoring technique. One of the most discussed aspects in this context is finding the right service granularity to fully leverage the advantages of a Microservices architecture. This study first discusses the notion of architectural refactoring and subsequently compares 10 existing refactoring approaches recently proposed in academic literature. The approaches are classified by the underlying decomposition technique and visually presented in the form of a decision guide for quick reference. The review yielded a variety of strategies to break down a monolithic application into independent services. With one exception, most approaches are only applicable under certain conditions. Further concerns are the significant amount of input data some approaches require as well as limited or prototypical tool support.Comment: 13 pages, 4 tables, 2 figures, Software Engineering Aspects of Continuous Development and New Paradigms of Software Production and Deployment, First International Workshop, DEVOPS 2018, Chateau de Villebrumier, France, March 5-6, 2018, Revised Selected Paper

    Genetic Algorithms in Software Architecture Synthesis

    Get PDF
    Ohjelmistoarkkitehtuurien suunnittelu on kriittinen vaihe ohjelmistokehitystä, sillä arkkitehtuuri määrittelee ohjelmiston rungon: miten ohjelma jaetaan eri komponentteihin, ja miten komponentit ovat yhteydessä toisiinsa. Ohjelmisto voidaan yleensä toteuttaa toimivasti monella eri tavalla, mutta toimiva toteutus ei aina takaa, että ohjelmisto on myös toteutettu laadukkaasti. Laadun takeena onkin huolella ja taidolla suunniteltu arkkitehtuuri. Ohjelmistoarkkitehtuurin suunnittelu on haastavaa. Suunnitelmaa tehdessä tulee ottaa huomioon monen eri sidosryhmän (esim. käyttäjä, toteuttaja, markkinoija) vaatimukset ja miettiä, miten mahdollisimman suuri osa vaatimuksista voidaan toteuttaa arkkitehtuurissa. Arkkitehtuurisuunnittelu vaatiikin kokeneen ohjelmistoarkkitehdin, joka on hankkinut tietotaitonsa vuosien ajalta eri ohjelmistoprojekteista. Kokemukseen perustuvan tiedon lisäksi ohjelmistoarkkitehtuurisuunnittelun käytäntöjä on koottu eräänlaisiksi katalogeiksi, joissa esitellään hyväksi havaittuja ratkaisuja, ns. suunnittelutyylejä ja -malleja, yleisiin arkkitehtuurisuunnitteluongelmiin. Voidaankin ajatella, että arkkitehtuuri tuotetaan etsimällä (kokemukseen nojaten) paras mahdollinen kombinaatio suunnittelumalleja ja -tyylejä. Arkkitehtuurin suunnittelu onkin siis eräänlainen optimointiongelma. Ohjelmistoista tulee jatkuvasti yhä monimutkaisempia. Sovelluksien monimutkaistuessa myös arkkitehtuurisuunnittelu muuttuu entistä vaikeammaksi ja vie yhä enemmän aikaa. Suunnittelun perustuminen hiljaiseen tietoon ja arkkitehtien kokemukseen tekee prosessista yhä hitaamman ja läpinäkymättömämmän. Arkkitehtuurisuunnittelun automatisointi toisikin suuria säästöjä. Henkilöstövaihdosten yhteydessä ei myöskään tarvitsisi pelätä tietotaidon katoamista, kun arkkitehtuurisuunnittelu olisi helposti toistettavissa aina alusta lähtien. Tässä väitöskirjassa on tutkittu, miten parhaan mahdollisen ratkaisun etsintäprosessin (eli suunnittelumallien ja -tyylien soveltamisen) voisi automatisoida. Monimutkaisissa optimointiongelmissa käytetään etsintäalgoritmeja, jotka haravoivat hakuavaruutta jollain satunnaistetulla menetelmällä. Yksi suosituimmista etsintäalgoritmeista on geneettinen algoritmi. Geneettiset algoritmit tarkastelevat aina pientä ratkaisujoukkoa kerrallaan ja etsivät parasta ratkaisua yhdistelemällä osia löydetyistä ratkaisuista sekä muuntelemalla ratkaisuja. Jokaiselle ratkaisulle lasketaan laatuarvo, ja luonnonvalintaa jäljitellen jatketaan parhaiden vaihtoehtojen tarkastelua sekä kehittelyä ja hylätään huonoimmat ratkaisut. Etsintäalgoritmien käyttämistä ohjelmistokehityksen ongelmiin, esim. ohjelmistosuunnitteluun, testaukseen ja projektinhallintaan, kutsutaan etsintäperustaiseksi ohjelmistokehitykseksi. Väitöskirja kuuluu etsintäperustaisen ohjelmistosuunnittelun alaan, ja siinä tutkitaan ns. ohjelmistoarkkitehtuurisynteesiä geneettisten algoritmien avulla. Ohjelmistoarkkitehtuurisynteesi lähtee ns. nolla-arkkitehtuurista , joka toteuttaa järjestelmän toiminnalliset vaatimukset, mutta ei ota kantaa laatuvaatimuksiin. Laatua pyritään parantamaan lisäämällä lähtöarkkitehtuuriin suunnittelutyylejä ja -malleja. Väitöskirjassa laatuarviointiin on käytetty muunneltavuutta, tehokkuutta ja ymmärrettävyyttä. Lopputuloksena saadaan ehdotus arkkitehtuurista, joka toteuttaa toiminnalliset vaatimukset ja on myös laadukas. Geneettisiä algoritmeja ei ole aiemmin sovellettu vastaavantasoisiin suunnitteluongelmiin, joten toteutuksessa on kehitetty uusi tapa mallintaa arkkitehtuuri geneettiselle algoritmille sekä laskukaava arkkitehtuurin laadulle. Perustoteutuksen lisäksi myös geneettisen algoritmin eri ominaisuuksia, ns. risteytysoperaatiota ja laatufunktiota on tutkittu tarkemmin, ja niille on kehitetty vaihtoehtoisia toteutuksia. Tapaustarkasteluista saadut tulokset osoittavat, että tällä hetkellä geneettisiin algoritmeihin perustuvaa arkkitehtuurisynteesi tuottaa suunnilleen samantasoisia ratkaisuja kuin kolmannen vuosikurssin ohjelmistotekniikan opiskelija.This thesis presents an approach for synthesizing software architectures with genetic algorithms. Previously in the literature, genetic algorithms have been mostly used to improve existing architectures. The method presented here, however, focuses on upstream design. The chosen genetic construction of software architectures is based on a model which contains information on functional requirements only. Architecture styles and design patterns are used to transform the initial high-level model to a more detailed design. Quality attributes, here modifiability, efficiency and complexity, are encoded in the algorithm s fitness function for evaluating the produced solutions. The final solution is given as a UML class diagram. While the main contribution is introducing the method for architecture synthesis, basic tool support for the implementation is also presented. Two case studies are used for evaluation. One case study uses the sketch for an electronic home control system, which is a typical embedded system. The other case study is based on a robot war game simulator, which is a typical framework system. Evaluation is mostly based on fitness graphs and (subjective) evaluation of produced class diagrams. In addition to the basic approach, variations and extensions regarding crossover and fitness function have been made. While the standard algorithm uses a random crossover, asexual reproduction and complementary crossover are also studied. Asexual crossover corresponds to real-life design situations, where two architectures are rarely combined. Complementary crossover, in turn, attempts to purposefully combine good parts of two architectures. The fitness function is extended with the option to include modifiability scenarios, which enables more targeted design decisions as critical parts of the architecture can be evaluated individually. In order to achieve a wider range of solutions that answer to competing quality demands, a multi-objective approach using Pareto optimality is given as an alternative for the single weighted fitness function. The multi-objective approach evaluates modifiability and efficiency, and gives as output the class diagrams of the whole Pareto front of the last generation. Thus, extremes for both quality attributes as well as solutions in the middle ground can be compared. An experimental study is also conducted where independent experts evaluate produced solutions for the electronic home control. Results show that genetic software architecture synthesis is indeed feasible, and the quality of solutions at this stage is roughly at the level of third year software engineering students

    Classification Methodology for Architectures in Information Systems: A Statistical Converging Technique

    Get PDF
    Architectures are critical to the Information System (IS) domain because they represent funda- mental structures and interactions of systems. Since analysing architecture similarities is chal- lenging and time-consuming even in one domain, IS architecture classifications are paramount to understanding architectural complexity. However, classification approaches used in existing research commonly rely on manual interventions, and thus architectural classification reliability is hampered. We propose a novel methodology based on component modelling and applica- tion of a statistical converging technique, which ensures reliable IS architectural classification and minimises subjective interventions. We demonstrate the methodology by classifying data warehouse architectures

    Automated design of domain-specific custom instructions

    Get PDF

    Metaheuristic models for decision support in the software construction process

    Get PDF
    En la actualidad, los ingenieros software no solo tienen la responsabilidad de construir sistemas que desempe~nen una determinada funcionalidad, sino que cada vez es más importante que dichos sistemas también cumplan con requisitos no funcionales como alta disponibilidad, efciencia o seguridad, entre otros. Para lograrlo, los ingenieros se enfrentan a un proceso continuo de decisión, pues deben estudiar las necesidades del sistema a desarrollar y las alternativas tecnológicas existentes para implementarlo. Todo este proceso debe estar encaminado a la obtención de sistemas software de gran calidad, reutilizables y que faciliten su mantenimiento y modificación en un escenario tan exigente y competitivo. La ingeniería del software, como método sistemático para la construcción de software, ha aportado una serie de pautas y tareas que, realizadas de forma disciplinada y adaptadas al contexto de desarrollo, posibilitan la obtención de software de calidad. En concreto, el proceso de análisis y diseño del software ha adquirido una gran importancia, pues en ella se concibe la estructura del sistema, en términos de sus bloques funcionales y las interacciones entre ellos. Es en este momento cuando se toman las decisiones acerca de la arquitectura, incluyendo los componentes que la conforman, que mejor se adapta a los requisitos, tanto funcionales como no funcionales, que presenta el sistema y que claramente repercuten en su posterior desarrollo. Por tanto, es necesario que el ingeniero analice rigurosamente las alternativas existentes, sus implicaciones en los criterios de calidad impuestos y la necesidad de establecer compromisos entre ellos. En este contexto, los ingenieros se guían principalmente por sus habilidades y experiencia, por lo que dotarles de métodos de apoyo a la decisión representaría un avance significativo en el área. La aplicación de técnicas de inteligencia artificial en este ámbito ha despertado un gran interés en los últimos años. En particular, la inteligencia artificial ha encontrado en la ingeniería del software un ámbito de aplicación complejo, donde diferentes técnicas pueden ayudar a conseguir la semi-automatización de tareas tradicionalmente realizadas de forma manual. De la unión de ambas áreas surge la denominada ingeniería del software basada en búsqueda, que propone la reformulación de las actividades propias de la ingeniería del software como problemas de optimización. A continuación, estos problemas podrían ser resueltos mediante técnicas de búsqueda como las metaheurísticas. Este tipo de técnicas se caracterizan por explorar el espacio de posibles soluciones de una manera \inteligente", a menudo simulando procesos naturales como es el caso de los algoritmos evolutivos. A pesar de ser un campo de investigación muy reciente, es posible encontrar propuestas para automatizar una gran variedad de tareas dentro del ciclo de vida del software, como son la priorización de requisitos, la planifcación de recursos, la refactorización del código fuente o la generación de casos de prueba. En el ámbito del análisis y diseño de software, cuyas tareas requieren de creatividad y experiencia, conseguir una automatización completa resulta poco realista. Es por ello por lo que la resolución de sus tareas mediante enfoques de búsqueda debe ser tratada desde la perspectiva del ingeniero, promoviendo incluso la interacción con ellos. Además, el alto grado de abstracción de algunas de sus tareas y la dificultad de evaluar cuantitativamente la calidad de un diseño software, suponen grandes retos en la aplicación de técnicas de búsqueda durante las fases tempranas del proceso de construcción de software. Esta tesis doctoral busca realizar aportaciones significativas al campo de la ingeniería del software basada en búsqueda y, más concretamente, al área de la optimización de arquitecturas software. Aunque se están realizando importantes avances en este área, la mayoría de propuestas se centran en la obtención de arquitecturas de bajo nivel o en la selección y despliegue de artefactos software ya desarrollados. Por tanto, no existen propuestas que aborden el modelado arquitectónico a un nivel de abstracción elevado, donde aún no existe un conocimiento profundo sobre cómo será el sistema y, por tanto, es más difícil asistir al ingeniero. Como problema de estudio, se ha abordado principalmente la tarea del descubrimiento de arquitecturas software basadas en componentes. El objetivo de este problema consiste en abstraer los bloques arquitectónicos que mejor definen la estructura actual del software, así como sus interacciones, con el fin de facilitar al ingeniero su posterior análisis y mejora. Durante el desarrollo de esta tesis doctoral se ha explorado el uso de una gran variedad de técnicas de búsqueda, estudiando su idoneidad y realizando las adaptaciones necesarias para hacer frente a los retos mencionados anteriormente. La primera propuesta se ha centrado en la formulación del descubrimiento de arquitecturas como problema de optimización, abordando la representación computacional de los artefactos software que deben ser modelados y definiendo medidas software para evaluar su calidad durante el proceso de búsqueda. Además, se ha desarrollado un primer modelo basado en algoritmos evolutivos mono-objetivo para su resolución, el cual ha sido validado experimentalmente con sistemas software reales. Dicho modelo se caracteriza por ser comprensible y exible, pues sus componentes han sido diseñados considerando estándares y herramientas del ámbito de la ingeniería del software, siendo además configurable en función de las necesidades del ingeniero. A continuación, el descubrimiento de arquitecturas ha sido tratado desde una perspectiva multiobjetivo, donde varias medidas software, a menudo en con icto, deben ser simultáneamente optimizadas. En este caso, la resolución del problema se ha llevado a cabo mediante ocho algoritmos del estado del arte, incluyendo propuestas recientes del ámbito de la optimización de muchos objetivos. Tras ser adaptados al problema, estos algoritmos han sido comparados mediante un extenso estudio experimental con el objetivo de analizar la ifnuencia que tiene el número y la elección de las métricas a la hora de guiar el proceso de búsqueda. Además de realizar una validación del rendimiento de estos algoritmos siguiendo las prácticas habituales del área, este estudio aporta un análisis detallado de las implicaciones que supone la optimización de múltiples objetivos en la obtención de modelos de soporte a la decisión. La última propuesta en el contexto del descubrimiento de arquitecturas software se centra en la incorporación de la opinión del ingeniero al proceso de búsqueda. Para ello se ha diseñado un mecanismo de interacción que permite al ingeniero indicar tanto las características deseables en las soluciones arquitectónicas (preferencias positivas) como aquellos aspectos que deben evitarse (preferencias negativas). Esta información es combinada con las medidas software utilizadas hasta el momento, permitiendo al algoritmo evolutivo adaptar la búsqueda conforme el ingeniero interactúe. Dadas las características del modelo, su validación se ha realizado con la participación de ingenieros con distinta experiencia en desarrollo software, a fin de demostrar la idoneidad y utilidad de la propuesta. En el transcurso de la tesis doctoral, los conocimientos adquiridos y las técnicas desarrolladas también han sido extrapolados a otros ámbitos de la ingeniería del software basada en búsqueda mediante colaboraciones con investigadores del área. Cabe destacar especialmente la formalización de una nueva disciplina transversal, denominada ingeniería del software basada en búsqueda interactiva, cuyo fin es promover la participación activa del ingeniero durante el proceso de búsqueda. Además, se ha explorado la aplicación de algoritmos de muchos objetivos a un problema clásico de la computación orientada a servicios, como es la composición de servicios web.Nowadays, software engineers have not only the responsibility of building systems that provide a particular functionality, but they also have to guarantee that these systems ful l demanding non-functional requirements like high availability, e ciency or security. To achieve this, software engineers face a continuous decision process, as they have to evaluate system needs and existing technological alternatives to implement it. All this process should be oriented towards obtaining high-quality and reusable systems, also making future modi cations and maintenance easier in such a competitive scenario. Software engineering, as a systematic method to build software, has provided a number of guidelines and tasks that, when done in a disciplinarily manner and properly adapted to the development context, allow the creation of high-quality software. More speci cally, software analysis and design has acquired great relevance, being the phase in which the software structure is conceived in terms of its functional blocks and their interactions. In this phase, engineers have to make decisions about the most suitable architecture, including its constituent components. Such decisions are made according to the system requirements, either functional or non-functional, and will have a great impact on its future development. Therefore, the engineer has to rigorously analyse existing alternatives, their implications on the imposed quality criteria and the need of establishing trade-o s among them. In this context, engineers are mostly guided by their own capabilities and experience, so providing them with decision support methods would represent a signi cant contribution. The application of arti cial intelligent techniques in this area has experienced a growing interest in the last years. Particularly, software engineering represents a complex application domain to arti cial intelligence, whose diverse techniques can help in the semi-automation of tasks traditionally performed manually. The union of both elds has led to the appearance of search-based software engineering, which proposes reformulating software engineering activities as optimisation problems. For their resolution, search techniques like metaheuristics can be then applied. This type of technique performs an \intelligent" exploration of the space of candidate solutions, often inspired by natural processes as happens with evolutionary algorithms. Despite the novelty of this research eld, there are proposals to automate a great variety of tasks within the software lifecycle, such as requirement prioritisation, resource planning, code refactoring or test case generation. Focusing on analysis and design, whose tasks require creativity and experience, trying to achieve full automation is not realistic. Therefore, solving design tasks by means of search approaches should be oriented towards the engineer's perspective, even promoting their interaction. Furthermore, design tasks are also characterised by a high level of abstraction and the di culty of quantitatively evaluating design quality. All these aspects represent key challenges for the application of search techniques in early phases of the software construction process. The aim of this Ph.D. Thesis is to make signi cant contributions in search-based software engineering and, specially, in the area of software architecture optimisation. Although it is an area in which signi cant progress is being done, most of the current proposals are focused on generating low-level architectures or selecting and deploying already developed artefacts. Therefore, there is a lack of proposals dealing with architectural modelling at a high level of abstraction. At this level, engineers do not have a deep understanding of the system yet, meaning that assisting them is even more di cult. As case study, the discovery of component-based software architectures has been primary addressed. The objective for this problem consists in the abstraction of the architectural blocks, and their interactions, that best de ne the current structure of a software system. This can be viewed as the rst step an engineer would perform in order to further analyse and improve the system architecture. In this Ph.D. Thesis, the use of a great variety of search techniques has been explored. The suitability of these techniques has been studied, also making the necessary adaptations to cope with the aforementioned challenges. A rst proposal has been focused on the formulation of software architecture discovery as an optimisation problem, which consists in the computational representation of its software artefacts and the de nition of software metrics to evaluate their quality during the search process. Moreover, a single-objective evolutionary algorithm has been designed for its resolution, which has been validated using real software systems. The resulting model is comprehensible and exible, since its components have been designed under software engineering standards and tools and are also con gurable according to engineer's needs. Next, the discovery of software architectures has been tackled from a multi-objective perspective, in which several software metrics, often in con ict, have to be simultaneously optimised. In this case, the problem is solved by applying eight state-of-theart algorithms, including some recent many-objective approaches. These algorithms have been adapted to the problem and compared in an extensive experimental study, whose purpose is to analyse the in uence of the number and combination of metrics when guiding the search process. Apart from the performance validation following usual practices within the eld, this study provides a detailed analysis of the practical implications behind the optimisation of multiple objectives in the context of decision support. The last proposal is focused on interactively including the engineer's opinion in the search-based architecture discovery process. To do this, an interaction mechanism has been designed, which allows the engineer to express desired characteristics for the solutions (positive preferences), as well as those aspects that should be avoided (negative preferences). The gathered information is combined with the software metrics used until the moment, thus making possible to adapt the search as the engineer interacts. Due to the characteristics of the proposed model, engineers of di erent expertise in software development have participated in its validation with the aim of showing the suitability and utility of the approach. The knowledge acquired along the development of the Thesis, as well as the proposed approaches, have also been transferred to other search-based software engineering areas as a result of research collaborations. In this sense, it is worth noting the formalisation of interactive search-based software engineering as a cross-cutting discipline, which aims at promoting the active participation of the engineer during the search process. Furthermore, the use of many-objective algorithms has been explored in the context of service-oriented computing to address the so-called web service composition problem
    corecore