Search Results

Search found 835 results on 34 pages for 'architect'.

Page 3/34 | < Previous Page | 1 2 3 4 5 6 7 8 9 10 11 12  | Next Page >

  • The Incremental Architect&acute;s Napkin - #2 - Balancing the forces

    - by Ralf Westphal
    Originally posted on: http://geekswithblogs.net/theArchitectsNapkin/archive/2014/06/02/the-incremental-architectacutes-napkin---2---balancing-the-forces.aspxCategorizing requirements is the prerequisite for ecconomic architectural decisions. Not all requirements are created equal. However, to truely understand and describe the requirement forces pulling on software development, I think further examination of the requirements aspects is varranted. Aspects of Functionality There are two sides to Functionality requirements. It´s about what a software should do. I call that the Operations it implements. Operations are defined by expressions and control structures or calls to frameworks of some sort, i.e. (business) logic statements. Operations calculate, transform, aggregate, validate, send, receive, load, store etc. Operations are about behavior; they take input and produce output by considering state. I´m not using the term “function” here, because functions - or methods or sub-programs - are not necessary to implement Operations. Functions belong to a different sub-aspect of requirements (see below). Operations alone are not enough, though, to make a customer happy with regard to his/her Functionality requirements. Only correctly implemented Operations provide full value. This should make clear, why testing is so important. And not just manual tests during development of some operational feature, but automated tests. Because only automated tests scale when over time the number of operations increases. Without automated tests there is no guarantee formerly correct operations are still correct after more got added. To retest all previous operations manually is infeasible. So whoever relies just on manual tests is not really balancing the two forces Operations and Correctness. With manual tests more weight is put on the side of the scale of Operations. That might be ok for a short period of time - but in the long run it will bite you. You need to plan for Correctness in the long run from the first day of your project on. Aspects of Quality As important as Functionality is, it´s not the driver for software development. No software has ever been written to just implement some operation in code. We don´t need computers just to do something. All computers can do with software we can do without them. Well, at least given enough time and resources. We could calculate the most complex formulas without computers. We could do auctions with millions of people without computers. The only reason we want computers to help us with this and a million other Operations is… We don´t want to wait for the results very long. Or we want less errors. Or we want easier accessability to complicated solutions. So the main reason for customers to buy/order software is some Quality. They want some Functionality with a higher Quality (e.g. performance, scalability, usability, security…) than without the software. But Qualities come in at least two flavors: Most important are Primary Qualities. That´s the Qualities software truely is written for. Take an online auction website for example. Its Primary Qualities are performance, scalability, and usability, I´d say. Auctions should come within reach of millions of people; setting up an auction should be very easy; finding a suitable auction and bidding on it should be as fast as possible. Only if those Qualities have been implemented does security become relevant. A secure auction website is important - but not as important as a fast auction website. Nobody would want to use the most secure auction website if it was unbearably slow. But there would be people willing to use the fastest auction website even it was lacking security. That´s why security - with regard to online auction software - is not a Primary Quality, but just a Secondary Quality. It´s a supporting quality, so to speak. It does not deliver value by itself. With a password manager software this might be different. There security might be a Primary Quality. Please get me right: I don´t want to denigrate any Quality. There´s a long list of non-functional requirements at Wikipedia. They are all created equal - but that does not mean they are equally important for all software projects. When confronted with Quality requirements check with the customer which are primary and which are secondary. That will help to make good economical decisions when in a crunch. Resources are always limited - but requirements are a bottomless ocean. Aspects of Security of Investment Functionality and Quality are traditionally the requirement aspects cared for most - by customers and developers alike. Even today, when pressure rises in a project, tunnel vision will focus on them. Any measures to create and hold up Security of Investment (SoI) will be out of the window pretty quickly. Resistance to customers and/or management is futile. As long as SoI is not placed on equal footing with Functionality and Quality it´s bound to suffer under pressure. To look closer at what SoI means will help to become more conscious about it and make customers and management aware of the risks of neglecting it. SoI to me has two facets: Production Efficiency (PE) is about speed of delivering value. Customers like short response times. Short response times mean less money spent. So whatever makes software development faster supports this requirement. This must not lead to duct tape programming and banging out features by the dozen, though. Because customers don´t just want Operations and Quality, but also Correctness. So if Correctness gets compromised by focussing too much on Production Efficiency it will fire back. Customers want PE not just today, but over the whole course of a software´s lifecycle. That means, it´s not just about coding speed, but equally about code quality. If code quality leads to rework the PE is on an unsatisfactory level. Also if code production leads to waste it´s unsatisfactory. Because the effort which went into waste could have been used to produce value. Rework and waste cost money. Rework and waste abound, however, as long as PE is not addressed explicitly with management and customers. Thanks to the Agile and Lean movements that´s increasingly the case. Nevertheless more could and should be done in many teams. Each and every developer should keep in mind that Production Efficiency is as important to the customer as Functionality and Quality - whether he/she states it or not. Making software development more efficient is important - but still sooner or later even agile projects are going to hit a glas ceiling. At least as long as they neglect the second SoI facet: Evolvability. Delivering correct high quality functionality in short cycles today is good. But not just any software structure will allow this to happen for an indefinite amount of time.[1] The less explicitly software was designed the sooner it´s going to get stuck. Big ball of mud, monolith, brownfield, legacy code, technical debt… there are many names for software structures that have lost the ability to evolve, to be easily changed to accomodate new requirements. An evolvable code base is the opposite of a brownfield. It´s code which can be easily understood (by developers with sufficient domain expertise) and then easily changed to accomodate new requirements. Ideally the costs of adding feature X to an evolvable code base is independent of when it is requested - or at least the costs should only increase linearly, not exponentially.[2] Clean Code, Agile Architecture, and even traditional Software Engineering are concerned with Evolvability. However, it seems no systematic way of achieving it has been layed out yet. TDD + SOLID help - but still… When I look at the design ability reality in teams I see much room for improvement. As stated previously, SoI - or to be more precise: Evolvability - can hardly be measured. Plus the customer rarely states an explicit expectation with regard to it. That´s why I think, special care must be taken to not neglect it. Postponing it to some large refactorings should not be an option. Rather Evolvability needs to be a core concern for every single developer day. This should not mean Evolvability is more important than any of the other requirement aspects. But neither is it less important. That´s why more effort needs to be invested into it, to bring it on par with the other aspects, which usually are much more in focus. In closing As you see, requirements are of quite different kinds. To not take that into account will make it harder to understand the customer, and to make economic decisions. Those sub-aspects of requirements are forces pulling in different directions. To improve performance might have an impact on Evolvability. To increase Production Efficiency might have an impact on security etc. No requirement aspect should go unchecked when deciding how to allocate resources. Balancing should be explicit. And it should be possible to trace back each decision to a requirement. Why is there a null-check on parameters at the start of the method? Why are there 5000 LOC in this method? Why are there interfaces on those classes? Why is this functionality running on the threadpool? Why is this function defined on that class? Why is this class depending on three other classes? These and a thousand more questions are not to mean anything should be different in a code base. But it´s important to know the reason behind all of these decisions. Because not knowing the reason possibly means waste and having decided suboptimally. And how do we ensure to balance all requirement aspects? That needs practices and transparency. Practices means doing things a certain way and not another, even though that might be possible. We´re dealing with dangerous tools here. Like a knife is a dangerous tool. Harm can be done if we use our tools in just any way at the whim of the moment. Over the centuries rules and practices have been established how to use knifes. You don´t put them in peoples´ legs just because you´re feeling like it. You hand over a knife with the handle towards the receiver. You might not even be allowed to cut round food like potatos or eggs with it. The same should be the case for dangerous tools like object-orientation, remote communication, threads etc. We need practices to use them in a way so requirements are balanced almost automatically. In addition, to be able to work on software as a team we need transparency. We need means to share our thoughts, to work jointly on mental models. So far our tools are focused on working with code. Testing frameworks, build servers, DI containers, intellisense, refactoring support… That´s all nice and well. I don´t want to miss any of that. But I think it´s not enough. We´re missing mental tools, tools for making thinking and talking about software (independently of code) easier. You might think, enough of such tools already exist like all those UML diagram types or Flow Charts. But then, isn´t it strange, hardly any team is using them to design software? Or is that just due to a lack of education? I don´t think so. It´s a matter value/weight ratio: the current mental tools are too heavy weight compared to the value they deliver. So my conclusion is, we need lightweight tools to really be able to balance requirements. Software development is complex. We need guidance not to forget important aspects. That´s like with flying an airplane. Pilots don´t just jump in and take off for their destination. Yes, there are times when they are “flying by the seats of their pants”, when they are just experts doing thing intuitively. But most of the time they are going through honed practices called checklist. See “The Checklist Manifesto” for very enlightening details on this. Maybe then I should say it like this: We need more checklists for the complex businss of software development.[3] But that´s what software development mostly is about: changing software over an unknown period of time. It needs to be corrected in order to finally provide promised operations. It needs to be enhanced to provide ever more operations and qualities. All this without knowing when it´s going to stop. Probably never - until “maintainability” hits a wall when the technical debt is too large, the brownfield too deep. Software development is not a sprint, is not a marathon, not even an ultra marathon. Because to all this there is a foreseeable end. Software development is like continuously and foreever running… ? And sometimes I dare to think that costs could even decrease over time. Think of it: With each feature a software becomes richer in functionality. So with each additional feature the chance of there being already functionality helping its implementation increases. That should lead to less costs of feature X if it´s requested later than sooner. X requested later could stand on the shoulders of previous features. Alas, reality seems to be far from this despite 20+ years of admonishing developers to think in terms of reusability.[1] ? Please don´t get me wrong: I don´t want to bog down the “art” of software development with heavyweight practices and heaps of rules to follow. The framework we need should be lightweight. It should not stand in the way of delivering value to the customer. It´s purpose is even to make that easier by helping us to focus and decreasing waste and rework. ?

    Read the article

  • In Enterprise Architect I modified an interface, how to update the realizing classes?

    - by Timo
    I've created an interface in a class model. This interface has two methods, A and B and method A takes an argument (a) and method B does not take an argument (yet). Additionally I've created a class that implements this interface, overriding both methods. After a discussing the model method B now should also take a parameter (b), so I modified the interface to reflect this change. However the class realizing this interface is not updated automatically. For one class it's possible to add the method by re-creating the link between the interface, specify the which method should be implemented and deleting this link again. Then the OLD method signature has to be removed as well. This is a lot of work if there is more then one class implementing the modified interface, not to mention error-prone. Does anybody know how to make an entire class model update this type of dependency?

    Read the article

  • Podcast Show Notes: Architect Meet-Up

    - by Bob Rhubart
    What happens when you get bunch of architects together and just let them talk? The latest ArchBeat Podcast features just such a conversation. The four participants in this conversation responded to a general invitation to my list of some three dozen Usual Suspects to join me on Skype for what I call a virtual meet-up. That conversation took place on March 20, 2012. The Participants Basheer Khan: Oracle ACE Director; Founder, President & CEO at Innowave Technology Lucas Jellema: Oracle ACE Director; CTO of AMIS Services Eric Stephens: a director of Enterprise Architecture at Oracle Derek Sharpe: director of Oracle’s Fusion Middleware Architecture Team The Conversation Listen to Part 1: Meeting the Mobile Challenge The conversation focuses on Oracle ADF Mobile and the challenges of defining a mobile strategy for the enterprise. Listen to Part 2: Mobile Security, Availability, and Usability (April 4) The conversation turns to the security, availability, and usability challenges in the evolution of the mobile enterprise. Listen to Part 3 Evolving Software Development Roles (April 11) The panel closes out the discussion with a look at the interplay between developers and architects, and the evolving nature of both roles.

    Read the article

  • how to architect this to make it unit testable

    - by SOfanatic
    I'm currently working on a project where I'm receiving an object via web service (WSDL). The overall process is the following: Receive object - add/delete/update parts (or all) of it - and return the object with the changes made. The thing is that sometimes these changes are complicated and there is some logic involved, other databases, other web services, etc. so to facilitate this I'm creating a custom object that mimics the original one but has some enhanced functionality to make some things easier. So I'm trying to have this process: Receive original object - convert/copy it to custom object - add/delete/update - convert/copy it back to original object - return original object. Example: public class Row { public List<Field> Fields { get; set; } public string RowId { get; set; } public Row() { this.Fields = new List<Field>(); } } public class Field { public string Number { get; set; } public string Value { get; set; } } So for example, one of the "actions" to perform on this would be to find all Fields in a Row that match a Value equal to something, and update them with some other value. I have a CustomRow class that represents the Row class, how can I make this class unit testable? Do I have to create an interface ICustomRow to mock it in the unit test? If one of the actions is to sum all of the Values in the Fields that have a Number equal to 10, like this function, how can design the custom class to facilitate unit tests. Sample function: public int Sum(FieldNumber number) { return row.Fields.Where(x => x.FieldNumber.Equals(number)).Sum(x => x.FieldValue); } Am I approaching this the wrong way?

    Read the article

  • What exactly is a "Software Architect"?

    - by Boydski
    I've seen a few posts that briefly touch on the subject but don't address the question directly. So please don't label this as a dup. Having been independant/freelance for 5 years or so, and having also had plenty of exposure to perm positions, I've been exposed to many views on what an "Architect" really is. As a result, I've coined the term, "One man's architect is another man's n00b", as it seems to be perpetually relative. I've interviewed at mom-&-pop shops that didn't think I was worth a hill of beans. I've also interviewed at world-class consulting firms who thought I was incredible. Again, it all seems relative. But what specifically makes a software architect a true "Architect"?

    Read the article

  • How should I embed/include Enterprise Architect UML diagrams in MS PowerPoint 2007?

    - by bn
    Setup I am using Sparx Systems Enterprise Architect Professional edition 7.5: http://www.sparxsystems.com.au/ and MS PowerPoint. Problem I have various audiences for presentations requiring display in MS PowerPoint -- ranging from managers to developers, whose depth of technical knowledge and requirements for knowledge varies. Question I have tried various settings for fonts, colors, and so on, but displaying a diagram with any level of detail (even simple class diagrams). These diagrams are very difficult to fit into a PowerPoint slide and render well when using a projector or a Live Meeting. Am I on the wrong path here, or is there a better/correct way to accomplish this? Thank you for the help, -bn

    Read the article

  • How do I move from being a software developer to being a software architect?

    - by Nestor
    I mean... Should I start programming less and designing more? Should I stop reading programming books, and start reading more books about pattern designs, etc? Should I stop focusing primarily on Microsoft technologies and open up my horizons with other technologies (in order to get a broader perspective)? How should I change my mind set in general (perhaps less detail oriented) ? etc I'm looking for concrete advice, especially from your own experience!

    Read the article

  • How to Architect a system on AWS for scaling (with a MySQL back-end)

    - by Edan Maor
    I'm trying to understand how to architect an Amazon Web Services application. As I understand it, the whole point of using something like AWS is to make the eventual scaling easier, so I'm trying to understand how to do that. I have an instance, running off of EBS (EBS-based instance, not a regular instance). My application (a Django app) uses MySQL as a back-end. So the question is, where am I supposed to install the MySQL? Do I install it on the same instance? In which case, as far as I can tell, I can't simply create more server instances from that image. Or am I supposed to simply spin up another server as a DB server, and run off of that? Thanks for any help!

    Read the article

  • Should a domain expert make class diagrams?

    - by Matthieu
    The domain expert in our team uses UML class diagrams to model the domain model. As a result, the class diagrams are more of technical models rather than domain models (it serves of some sort of technical specifications for developpers because they don't have to do any conception, they just have to implement the model). In the end, the domain expert ends up doing the job of the architect/technical expert right? Is it normal for a domain expert (not a developer or technical profile) to do class diagrams? If not, what kind of modeling should he be using?

    Read the article

  • Award-Winning Architects at Oracle OpenWorld

    - by Bob Rhubart
    "The Winner," a sculpture by John J. Seward Jr. The role of the IT architect may be the most hotly debated and unjustly maligned role in IT. But at this year's Oracle OpenWorld in San Francisco several architects will enjoy some much-deserved recognition through the Oracle Magazine Technologist of the Year Awards. Part of the Oracle Excellence Awards, the Technologist of the Year Awards "honor Oracle technologists for their cutting-edge solutions using Oracle products and services." Seven of the ten Technologist of the Year categories honor architects: Technologist of the Year: Big Data Architect Technologist of the Year: Cloud Architect Technologist of the Year: Enterprise Architect Technologist of the Year: Mobile Architect Technologist of the Year: Security Architect Technologist of the Year: Social Architect Technologist of the Year: Virtualization Architect If you or one of your colleagues is an architect deserving of this recognition, click the appropriate link above to find the nomination form. Deadline for nominations is Tuesday, July 17, 2012. For more information see: Technologist of the Year Awards. See last year's winners here.

    Read the article

  • Resources how to architect a iPhone application?

    - by Frank Martin
    What resources can you recommend for learning how to architect a iPhone application? Background of the question is that most of the resources explain the usage of a single class or concept (and i appreciate that a lot to learn something about the specific topic) but as far as i can see they lack unfortunately to describe how to put things together for typical real world applications.

    Read the article

  • Lollipop notation in Rational Software Architect

    - by mfrank
    Hi, I am using IBM Rational® Software Architect™ for WebSphere® Software Version: 7.5.2. In a component diagram I would really like to use the lollipop notation and not the stereotyped interface notation for a provided interface part. Any tips if this is possible in RSA? BR /M

    Read the article

  • Oracle Technology Network Architect Day &ndash; Next Stop: Big D

    - by Bob Rhubart
    Registration is now open for the Architect Day events in Dallas TX (5/13), Redwood Shores CA (5/18), and  Anaheim CA (5/19). These events are free and offer a full slate of presentations and discussions covering a broad range of topics of interest to architects. The agenda for each location includes guest keynotes by members of the Oracle ACE community, breakout sessions, panel discussions, and  roundtable discussions in which all attendees get a chance share their insight and expertise. All that, and you get a free lunch plus an end of day reception. What’s not to like? Seating for these free events is limited, so if you snooze, you lose. I’ll be at the Dallas event. Hope to see you there.   Technorati Tags: oracle,oracle technology network,software architect,events,conference del.icio.us Tags: oracle,oracle technology network,software architect,events,conference

    Read the article

  • What is a good Visio Enterprise Architect replacement?

    - by MattValerio
    I've been using Visio 2002/2003 Enterprise Architect to do my database schema design visually and then forward-generate the DDL to create the database. I wanted to switch to Visio 2007, but while it does have database diagramming support, it doesn't have the ability to generate DDL. Bummer. I am really disappointed because it seems like Microsoft has completely abandoned this feature. You can't do it in Visual Studio (that I've found). You can sorta do it with SQL Server Management Studio if you insert database diagrams into your database, but any edits to the schema immediately take effect. Has anyone found a good program to do this? I'm hoping to find one that is free and can generate DDL/SQL for SQL Server.

    Read the article

  • Advantage Data Architect doesn't accept 'output to', are there any other options for outputting a ta

    - by likesalmon
    I'm trying to output the results of a SELECT query to a tab delimited text file in Advantage Data Architect. I know I can use the 'Export to' feature to do this, but there are a lot of tables and that is going to take forever. I would rather use the SQL editor, but I found out it does not accept the OUTPUT TO argument, even though that command is part of Sybase SQL. I would like to do this: SELECT * FROM tablename; OUTPUT TO 'C:/ExportDirectory' DELIMITED BY '\t' FORMAT TEXT; Is there another way?

    Read the article

< Previous Page | 1 2 3 4 5 6 7 8 9 10 11 12  | Next Page >